gaoluyang
3 天以前 e40a608ef9bf51db294d8eefada6a8e2e80cebca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys,json
from pathlib import Path
P=Path(__file__).parent
sys.stdout.reconfigure(encoding='utf8')
sys.path.insert(0,str(P.parent/'iqc-import-20261012/deps'))
import pymysql
c=pymysql.connect(host='36.213.150.237',port=10000,user='root',password=sys.stdin.readline().strip(),database='mom-hm',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
s={'tables':{}}
with c.cursor() as q:
 q.execute("SET time_zone='+08:00'");q.execute('SELECT NOW() now,DATABASE() db');s['state']=q.fetchone()
 q.execute("SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() AND (table_name LIKE 'mes_pro_%' OR table_name LIKE 'mes_qc_%' OR table_name LIKE 'mes_wm_%')");tabs=[x['TABLE_NAME'] for x in q.fetchall()]
 for t in tabs+['erp_sale_order','erp_sale_order_items','crm_sale_quotation','crm_sale_quotation_product','crm_contract','crm_contract_product','crm_business','crm_business_product','crm_receivable_plan','crm_permission']:
  q.execute('SHOW COLUMNS FROM '+t);cols=q.fetchall();q.execute('SELECT * FROM '+t+' WHERE deleted=0 ORDER BY id');rs=q.fetchall();s['tables'][t]={'columns':cols,'rows':rs}
 required_ids={x['order_id'] for x in s['tables']['erp_sale_order_items']['rows'] if x['need_production'] in (1,True,b'\x01')}
 orders=[x for x in s['tables']['erp_sale_order']['rows'] if x['id'] in required_ids]
 print('需生产订单',json.dumps([{k:r[k] for k in ['id','no','total_count','order_time','contract_id','production_status','out_status']} for r in orders],ensure_ascii=False,default=str))
 for o in orders:
  m=[x for x in s['tables']['mes_pro_mps']['rows'] if x['sale_order_id']==o['id']]
  print('主计划',o['id'],json.dumps(m,ensure_ascii=False,default=str))
 for t in tabs:
  fields=[x['Field'] for x in s['tables'][t]['columns'] if x['Type'].startswith(('date','time'))]
  if fields:print(t,fields)
(P/'snapshot.json').write_text(json.dumps(s,ensure_ascii=False,default=str,indent=2),encoding='utf8')
c.close()