1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| 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
| apply = '--apply' in sys.argv
| 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 conn:
| with conn.cursor() as q:
| q.execute('SELECT DATABASE() db')
| assert q.fetchone()['db'] == 'mom-hm'
| q.execute('SELECT id,nickname,status FROM system_users WHERE deleted=0 AND nickname=%s', ('刘震',))
| users=q.fetchall()
| q.execute('SELECT id,code,name,charge_user_id,area,status,update_time FROM mes_md_workshop WHERE deleted=0 ORDER BY id' + (' FOR UPDATE' if apply else ''))
| rows=q.fetchall()
| print(json.dumps({'users':users,'workshops':rows},ensure_ascii=False,default=str))
| if apply:
| assert len(users)==1 and users[0]['status']==0, '负责人必须唯一且启用'
| assert rows, '没有可更新车间'
| out=Path(__file__).parent/'workshop-owner-20261015'
| out.mkdir(exist_ok=True)
| backup=out/('before-'+datetime.now().strftime('%Y%m%d%H%M%S')+'.json')
| backup.write_text(json.dumps(rows,ensure_ascii=False,default=str,indent=2),encoding='utf-8')
| uid=users[0]['id']
| q.execute('UPDATE mes_md_workshop SET charge_user_id=%s, update_time=NOW() WHERE deleted=0 AND NOT (charge_user_id <=> %s)', (uid,uid))
| changed=q.rowcount
| q.execute('SELECT id,name,charge_user_id,area FROM mes_md_workshop WHERE deleted=0 ORDER BY id')
| after=q.fetchall()
| assert all(x['charge_user_id']==uid for x in after)
| assert {x['id']:x['area'] for x in rows}=={x['id']:x['area'] for x in after}
| conn.commit()
| print(json.dumps({'changed':changed,'verified':after,'backup':str(backup)},ensure_ascii=False,default=str))
|
|