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))