import sys,json from pathlib import Path from datetime import datetime from zoneinfo import ZoneInfo from collections import Counter sys.stdout.reconfigure(encoding='utf-8') sys.path.insert(0,str(Path(__file__).parent/'iqc-import-20261012/deps')) import pymysql tables=['mes_pro_work_order','mes_pro_work_order_process','mes_pro_task','mes_md_workstation','mes_md_workstation_machine','mes_dv_machinery','mes_pro_route','mes_pro_route_process','mes_pro_route_product','mes_pro_process'] data={} with pymysql.connect(host='36.213.150.237',port=10000,user='root',password=sys.stdin.readline().strip(),database='mom-hm',charset='utf8mb4',connect_timeout=15,cursorclass=pymysql.cursors.DictCursor) as c: with c.cursor() as q: q.execute('SELECT DATABASE() db,UTC_TIMESTAMP() utc_now') state=q.fetchone();assert state['db']=='mom-hm' for t in tables: q.execute('SELECT * FROM '+t+' WHERE deleted=0 ORDER BY id') data[t]=q.fetchall() out=Path(__file__).parent/'schedule-diagnosis-20261015';out.mkdir(exist_ok=True) (out/'snapshot.json').write_text(json.dumps({'state':state,'tables':data},ensure_ascii=False,default=str,indent=2),encoding='utf-8') print(json.dumps({'state':state,'counts':{t:len(v) for t,v in data.items()},'workOrderStatuses':dict(Counter(x['status'] for x in data['mes_pro_work_order'])),'taskStatuses':dict(Counter(x['status'] for x in data['mes_pro_task']))},ensure_ascii=False,default=str)) for t in ['mes_pro_work_order','mes_pro_work_order_process','mes_pro_task']: print(json.dumps({'table':t,'recent':data[t][-3:]},ensure_ascii=False,default=str)) print(json.dumps({'stations':data['mes_md_workstation'],'machines':[ {k:m.get(k) for k in ['id','name','status','workstation_id','production_efficiency','conveyor_belt']} for m in data['mes_dv_machinery']]},ensure_ascii=False,default=str))