from read_log_times import connect
|
from pathlib import Path
|
import json
|
import re
|
|
HERE = Path(__file__).resolve().parent
|
ROOT = HERE.parents[1]
|
ADDITIONS = {
|
'type': "int DEFAULT 1 COMMENT '杂项类型:mes_wm_misc_receipt_type' AFTER `name`",
|
'source_doc_type': "varchar(64) DEFAULT NULL COMMENT '来源单据类型' AFTER `type`",
|
'source_doc_id': "bigint DEFAULT NULL COMMENT '来源单据ID' AFTER `source_doc_type`",
|
'source_doc_code': "varchar(100) DEFAULT NULL COMMENT '来源单据编码' AFTER `source_doc_id`",
|
}
|
|
with connect() as c:
|
with c.cursor() as q:
|
q.execute('SHOW CREATE TABLE mes_wm_misc_receipt')
|
old_schema = q.fetchall()
|
q.execute('SHOW COLUMNS FROM mes_wm_misc_receipt')
|
columns = {r['Field'] for r in q.fetchall()}
|
q.execute('SELECT * FROM mes_wm_misc_receipt ORDER BY id')
|
before = q.fetchall()
|
missing = [name for name in ADDITIONS if name not in columns]
|
backup = HERE/'misc-receipt-schema-before.json'
|
if missing:
|
with backup.open('x', encoding='utf-8') as f:
|
json.dump(dict(target='36.213.150.237:10000/mom-hm', schema=old_schema,
|
rows=before, missing=missing), f, ensure_ascii=False, indent=2, default=str)
|
sql = 'ALTER TABLE mes_wm_misc_receipt '+', '.join(
|
'ADD COLUMN `'+name+'` '+ADDITIONS[name] for name in missing)
|
q.execute(sql)
|
# 验证三个数据对象的全部映射字段都能查询。
|
counts = {}
|
for suffix, class_name in [('', 'MesWmMiscReceiptDO'), ('_line', 'MesWmMiscReceiptLineDO'),
|
('_detail', 'MesWmMiscReceiptDetailDO')]:
|
source = (ROOT / ('yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/miscreceipt/'+class_name+'.java')).read_text(encoding='utf-8')
|
fields = re.findall(r'private\s+\w+\s+(\w+);', source)
|
mapped = [re.sub(r'(?<!^)([A-Z])', r'_\1', name).lower() for name in fields]
|
mapped += ['create_time', 'update_time', 'creator', 'updater', 'deleted']
|
table = 'mes_wm_misc_receipt'+suffix
|
q.execute('SELECT '+','.join('`'+field+'`' for field in mapped)+
|
' FROM '+table+' WHERE deleted=0 ORDER BY id DESC LIMIT 10')
|
counts[table] = len(q.fetchall())
|
q.execute('SELECT * FROM mes_wm_misc_receipt ORDER BY id')
|
after = q.fetchall()
|
assert [{k: row[k] for k in columns} for row in after] == before, 'Existing data changed'
|
result = dict(target='36.213.150.237:10000/mom-hm', added_columns=missing,
|
original_data_unchanged=True, query_verified=counts, backup=str(backup))
|
(HERE/'misc-receipt-schema-result.json').write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding='utf-8')
|
print(json.dumps(result, ensure_ascii=False))
|