| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- -- 1.0.260: Phase 2/3 — S2/S4 stg 对齐 canonical;全模块 Mock _API 实体登记
- -- 幂等:information_schema 守卫
- -- ========== S2 mdp_stg_schedule ==========
- SET @ddl := (SELECT IF(
- EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_schedule' AND COLUMN_NAME='create_time'),
- 'SELECT 1',
- 'ALTER TABLE mdp_stg_schedule ADD COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- SET @ddl := (SELECT IF(
- EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_schedule' AND COLUMN_NAME='process_message'),
- 'SELECT 1',
- 'ALTER TABLE mdp_stg_schedule ADD COLUMN process_message varchar(500) NULL'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- UPDATE mdp_stg_schedule
- SET source_biz_key = IFNULL(NULLIF(source_biz_key, ''), IFNULL(source_row_id, CONCAT('row-', id)))
- WHERE source_biz_key IS NULL OR source_biz_key = '';
- SET @ddl := (SELECT IF(
- EXISTS(SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_schedule' AND INDEX_NAME='uk_source_key'),
- 'SELECT 1',
- 'ALTER TABLE mdp_stg_schedule ADD UNIQUE KEY uk_source_key (source_system, source_table, source_biz_key)'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- -- ========== S4 stg tables ==========
- -- mdp_stg_s4_iqc
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_iqc' AND COLUMN_NAME='create_time'),'SELECT 1','ALTER TABLE mdp_stg_s4_iqc ADD COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_iqc' AND COLUMN_NAME='process_message'),'SELECT 1','ALTER TABLE mdp_stg_s4_iqc ADD COLUMN process_message varchar(500) NULL'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- UPDATE mdp_stg_s4_iqc SET source_biz_key = IFNULL(NULLIF(source_biz_key, ''), IFNULL(source_row_id, CONCAT('row-', id))) WHERE source_biz_key IS NULL OR source_biz_key = '';
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_iqc' AND INDEX_NAME='uk_source_key'),'SELECT 1','ALTER TABLE mdp_stg_s4_iqc ADD UNIQUE KEY uk_source_key (source_system, source_table, source_biz_key)'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- -- mdp_stg_s4_shipment
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_shipment' AND COLUMN_NAME='create_time'),'SELECT 1','ALTER TABLE mdp_stg_s4_shipment ADD COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_shipment' AND COLUMN_NAME='process_message'),'SELECT 1','ALTER TABLE mdp_stg_s4_shipment ADD COLUMN process_message varchar(500) NULL'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- UPDATE mdp_stg_s4_shipment SET source_biz_key = IFNULL(NULLIF(source_biz_key, ''), IFNULL(source_row_id, CONCAT('row-', id))) WHERE source_biz_key IS NULL OR source_biz_key = '';
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_shipment' AND INDEX_NAME='uk_source_key'),'SELECT 1','ALTER TABLE mdp_stg_s4_shipment ADD UNIQUE KEY uk_source_key (source_system, source_table, source_biz_key)'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- -- mdp_stg_s4_return
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_return' AND COLUMN_NAME='create_time'),'SELECT 1','ALTER TABLE mdp_stg_s4_return ADD COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_return' AND COLUMN_NAME='process_message'),'SELECT 1','ALTER TABLE mdp_stg_s4_return ADD COLUMN process_message varchar(500) NULL'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- UPDATE mdp_stg_s4_return SET source_biz_key = IFNULL(NULLIF(source_biz_key, ''), IFNULL(source_row_id, CONCAT('row-', id))) WHERE source_biz_key IS NULL OR source_biz_key = '';
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_return' AND INDEX_NAME='uk_source_key'),'SELECT 1','ALTER TABLE mdp_stg_s4_return ADD UNIQUE KEY uk_source_key (source_system, source_table, source_biz_key)'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- -- mdp_stg_s4_shortage
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_shortage' AND COLUMN_NAME='create_time'),'SELECT 1','ALTER TABLE mdp_stg_s4_shortage ADD COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_shortage' AND COLUMN_NAME='process_message'),'SELECT 1','ALTER TABLE mdp_stg_s4_shortage ADD COLUMN process_message varchar(500) NULL'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- UPDATE mdp_stg_s4_shortage SET source_biz_key = IFNULL(NULLIF(source_biz_key, ''), IFNULL(source_row_id, CONCAT('row-', id))) WHERE source_biz_key IS NULL OR source_biz_key = '';
- -- dedupe before unique key (legacy SyncStaging may leave duplicate biz keys)
- UPDATE mdp_stg_s4_shortage s
- INNER JOIN (
- SELECT source_system, source_table, source_biz_key, MAX(id) AS keep_id
- FROM mdp_stg_s4_shortage
- GROUP BY source_system, source_table, source_biz_key HAVING COUNT(*)>1
- ) d ON s.source_system=d.source_system AND s.source_table=d.source_table
- AND IFNULL(s.source_biz_key,'')=IFNULL(d.source_biz_key,'') AND s.id<>d.keep_id
- SET s.source_biz_key=CONCAT(IFNULL(s.source_biz_key,''), '#id-', s.id);
- SET @ddl := (SELECT IF(EXISTS(SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='mdp_stg_s4_shortage' AND INDEX_NAME='uk_source_key'),'SELECT 1','ALTER TABLE mdp_stg_s4_shortage ADD UNIQUE KEY uk_source_key (source_system, source_table, source_biz_key)'));
- PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s;
- -- ========== Phase2 Mock _API 实体(关键对象)==========
- INSERT INTO mdp_entity
- (tenant_id, source_id, entity_code, entity_name, entity_type,
- source_table_name, source_api_path, target_table_name,
- sync_mode, batch_size, response_data_path, dedup_key_path, biz_key_expr,
- status, remark, create_time, update_time)
- SELECT 0, (SELECT id FROM mdp_source WHERE source_code='WMS_API'),
- v.code, v.name, 'API', v.src_tbl, v.path, v.stg,
- 'INCREMENTAL', 1000, 'data.list', 'bizKey', v.biz,
- 1, 'Phase2 API', NOW(), NOW()
- FROM (
- SELECT 'S1_SEORDER_API' code, 'S1销售订单API' name, 'crm_seorder' src_tbl, '/api/sales-order' path, 'mdp_stg_so' stg, 'bill_no' biz
- UNION ALL SELECT 'S1_ASN_SHIPPER_DETAIL_API','S1发货明细API','ASNBOLShipperDetail','/api/shipment','mdp_stg_ship_trans','Id,Line'
- UNION ALL SELECT 'S2_WORK_ORDER_MASTER_API','S2工单主API','WorkOrdMaster','/api/work-order','mdp_stg_schedule','Domain,WorkOrd'
- UNION ALL SELECT 'S3_PURCHASE_ORDER_DETAIL_API','S3采购订单明细API','PurOrdDetail','/api/purchase-order','mdp_stg_purchase_order','Domain,PurOrd,Line'
- UNION ALL SELECT 'S3_SUPPLY_DEMAND_API','S3供需API','ic_demandschedule','/api/supply-demand','mdp_stg_supply_demand','Id'
- UNION ALL SELECT 'S3_DELIVERY_PLAN_API','S3交货计划API','srm_polist_ds','/api/delivery','mdp_stg_delivery','dsnum'
- UNION ALL SELECT 'S3_SUPPLIER_API','S3供应商API','SuppMaster','/api/supplier','mdp_stg_supplier','Domain,Supp'
- UNION ALL SELECT 'S3_ITEM_ERP_API','S3物料API','ItemMaster','/api/item','mdp_stg_item','Domain,ItemNum'
- UNION ALL SELECT 'S4_SHIPMENT_EXEC_API','S4发货API','scm_shdzb','/api/s4-shipment','mdp_stg_s4_shipment','glid,id'
- UNION ALL SELECT 'S4_IQC_RECEIPT_API','S4 IQC API','PurOrdRctDetail','/api/s4-iqc','mdp_stg_s4_iqc','Domain,Receiver,Line'
- ) v
- WHERE NOT EXISTS (SELECT 1 FROM mdp_entity e WHERE e.entity_code=v.code);
|