import json,sys
|
from pathlib import Path
|
P=Path(__file__).parent
|
sys.path.insert(0,str(P/'deps'))
|
import pymysql
|
result=json.loads((P/'import-result.json').read_text(encoding='utf8'))
|
standards={s['template_id']:s['standard'] for s in json.loads((P/'national-standards-plan.json').read_text(encoding='utf8'))['schemes'] if s['status']==0}
|
c=pymysql.connect(host='36.213.150.237',port=10000,user='root',password=sys.stdin.readline().strip(),database='mom-hm',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
|
log=[]
|
try:
|
c.begin()
|
with c.cursor() as q:
|
for iid in result['inserted_ids']:
|
q.execute('SELECT id,template_id,execute_standard FROM mes_qc_iqc WHERE id=%s AND deleted=0 FOR UPDATE',(iid,));r=q.fetchone();assert r and r['template_id'] in standards
|
standard=standards[r['template_id']];assert r['execute_standard'] in (None,'',standard)
|
sql="UPDATE mes_qc_iqc SET execute_standard=%s,updater='1' WHERE id=%s AND deleted=0";args=(standard,iid)
|
log.append(q.mogrify(sql,args)+';');q.execute(sql,args)
|
(P/'national-iqc-execute-standard.sql').write_text('START TRANSACTION;\n'+'\n'.join(log)+'\nCOMMIT;\n',encoding='utf8')
|
c.commit()
|
q.execute('SELECT * FROM mes_qc_iqc WHERE deleted=0 ORDER BY id');rows=q.fetchall()
|
for r in rows:
|
if r['id'] in result['inserted_ids']:assert r['execute_standard']==standards[r['template_id']]
|
assert (r['inspect_date']-r['receive_date']).days==15
|
assert len(rows)==40
|
(P/'post-import.json').write_text(json.dumps(rows,ensure_ascii=False,default=str,indent=2),encoding='utf8')
|
print(json.dumps({'total_iqc':len(rows),'execute_standard_verified':len(result['inserted_ids']),'receive_date_verified':True}))
|
except Exception:c.rollback();raise
|
finally:c.close()
|