1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| import sys,json
| from pathlib import Path
| from datetime import datetime
| sys.stdout.reconfigure(encoding='utf-8')
| sys.path.insert(0,str(Path(__file__).parent/'iqc-import-20261012/deps'))
| import pymysql
| 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');assert q.fetchone()['db']=='mom-hm'
| q.execute('SELECT * FROM mes_md_workstation_machine WHERE deleted=0 ORDER BY id FOR UPDATE');before=q.fetchall()
| out=Path(__file__).parent/'schedule-diagnosis-20261015'
| (out/('station-links-before-'+datetime.now().strftime('%Y%m%d%H%M%S')+'.json')).write_text(json.dumps(before,ensure_ascii=False,default=str,indent=2),encoding='utf-8')
| changes=[]
| for sid,mid in [(42,14),(43,15)]:
| q.execute('SELECT * FROM mes_md_workstation WHERE id=%s AND deleted=0',(sid,));s=q.fetchone()
| q.execute('SELECT * FROM mes_dv_machinery WHERE id=%s AND deleted=0 FOR UPDATE',(mid,));m=q.fetchone()
| assert s['workshop_id']==m['workshop_id']==2 and s['status']==0 and m['status']==1 and m['production_efficiency']>0
| assert (sid,mid) not in {(r['workstation_id'],r['machinery_id']) for r in before}
| q.execute('INSERT INTO mes_md_workstation_machine (workstation_id,machinery_id,quantity,remark,create_time,update_time,deleted) VALUES (%s,%s,1,%s,NOW(),NOW(),0)',(sid,mid,'根据同车间现有设备功能配置;与其他工作站共用同一实体设备,排产按设备编号校验占用冲突'))
| changes.append({'workstation':s['name'],'machine':m['name'],'capacity':str(m['production_efficiency'])})
| c.commit()
| print(json.dumps({'committed':True,'links':changes},ensure_ascii=False))
|
|