gaoluyang
10 小时以前 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
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))