|
|
@@ -262,32 +262,49 @@ public class S2MdpSyncTransformService : ITransient
|
|
|
INSERT INTO mdp_std_work_order_schedule
|
|
|
(tenant_id, factory_id, source_system, work_order, sales_order_no, item_code, item_name, site_code, status,
|
|
|
priority, urgent_flag, qty_ordered, qty_completed, order_date, due_date, release_date, prod_line,
|
|
|
+ specification, lot_serial, drawing_no, project, work_order_type, labor_variance,
|
|
|
source_biz_key, sync_batch_id, sync_time)
|
|
|
- SELECT tenant_id,
|
|
|
- CASE WHEN factory_id REGEXP '^[0-9]+$' THEN CAST(factory_id AS UNSIGNED) ELSE 1 END,
|
|
|
+ SELECT s.tenant_id,
|
|
|
+ CASE WHEN s.factory_id REGEXP '^[0-9]+$' THEN CAST(s.factory_id AS UNSIGNED) ELSE 1 END,
|
|
|
'AIDOP',
|
|
|
- JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.WorkOrd')),
|
|
|
- JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.SalesJob')),
|
|
|
- JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.ItemNum')),
|
|
|
- JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.ItemName')),
|
|
|
- JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.Site')),
|
|
|
- JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.Status')),
|
|
|
- CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.Priority')) REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN CAST(JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.Priority')) AS DECIMAL(18,6)) END,
|
|
|
- CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.Urgent')) IN ('1','true','True') THEN 1 ELSE 0 END,
|
|
|
- CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.QtyOrded')) REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN CAST(JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.QtyOrded')) AS DECIMAL(18,6)) ELSE 0 END,
|
|
|
- CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.QtyCompleted')) REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN CAST(JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.QtyCompleted')) AS DECIMAL(18,6)) ELSE 0 END,
|
|
|
- NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.OrdDate')), 'null'), ''),
|
|
|
- NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.DueDate')), 'null'), ''),
|
|
|
- NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.ReleaseDate')), 'null'), ''),
|
|
|
- JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.ProdLine')),
|
|
|
- source_biz_key, @BatchId, @Now
|
|
|
- FROM mdp_stg_schedule
|
|
|
- WHERE source_table='WorkOrdMaster' AND IFNULL(JSON_UNQUOTE(JSON_EXTRACT(raw_data,'$.WorkOrd')), '') <> ''
|
|
|
+ JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.WorkOrd')),
|
|
|
+ JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.SalesJob')),
|
|
|
+ JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.ItemNum')),
|
|
|
+ JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.ItemName')),
|
|
|
+ JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Site')),
|
|
|
+ JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Status')),
|
|
|
+ CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Priority')) REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN CAST(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Priority')) AS DECIMAL(18,6)) END,
|
|
|
+ CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Urgent')) IN ('1','true','True') THEN 1 ELSE 0 END,
|
|
|
+ CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.QtyOrded')) REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN CAST(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.QtyOrded')) AS DECIMAL(18,6)) ELSE 0 END,
|
|
|
+ CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.QtyCompleted')) REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN CAST(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.QtyCompleted')) AS DECIMAL(18,6)) ELSE 0 END,
|
|
|
+ NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.OrdDate')), 'null'), ''),
|
|
|
+ NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.DueDate')), 'null'), ''),
|
|
|
+ NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.ReleaseDate')), 'null'), ''),
|
|
|
+ JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.ProdLine')),
|
|
|
+ -- Specification(型号)= ItemMaster.Descr1 中台 enrich((Domain,ItemNum) 去重取一,实测同键 Descr1 无冲突;
|
|
|
+ -- 严格按 Domain+ItemNum 关联,不做 ItemNum-only 去重,避免跨工厂串型号):
|
|
|
+ im.Descr1,
|
|
|
+ NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.LotSerial')), 'null'), ''),
|
|
|
+ NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Drawing')), 'null'), ''),
|
|
|
+ NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Project')), 'null'), ''),
|
|
|
+ NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.WoTyped')), 'null'), ''),
|
|
|
+ CASE WHEN JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.LbrVar')) REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN CAST(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.LbrVar')) AS DECIMAL(18,6)) END,
|
|
|
+ s.source_biz_key, @BatchId, @Now
|
|
|
+ FROM mdp_stg_schedule s
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT `Domain`, ItemNum, MIN(Descr1) AS Descr1
|
|
|
+ FROM ItemMaster
|
|
|
+ GROUP BY `Domain`, ItemNum
|
|
|
+ ) im ON im.`Domain` = JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.Domain'))
|
|
|
+ AND im.ItemNum = JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.ItemNum'))
|
|
|
+ WHERE s.source_table='WorkOrdMaster' AND IFNULL(JSON_UNQUOTE(JSON_EXTRACT(s.raw_data,'$.WorkOrd')), '') <> ''
|
|
|
ON DUPLICATE KEY UPDATE
|
|
|
sales_order_no=VALUES(sales_order_no), item_code=VALUES(item_code), item_name=VALUES(item_name),
|
|
|
site_code=VALUES(site_code), status=VALUES(status), priority=VALUES(priority), urgent_flag=VALUES(urgent_flag),
|
|
|
qty_ordered=VALUES(qty_ordered), qty_completed=VALUES(qty_completed), order_date=VALUES(order_date),
|
|
|
due_date=VALUES(due_date), release_date=VALUES(release_date), prod_line=VALUES(prod_line),
|
|
|
+ specification=VALUES(specification), lot_serial=VALUES(lot_serial), drawing_no=VALUES(drawing_no),
|
|
|
+ project=VALUES(project), work_order_type=VALUES(work_order_type), labor_variance=VALUES(labor_variance),
|
|
|
sync_batch_id=VALUES(sync_batch_id), sync_time=VALUES(sync_time), update_time=CURRENT_TIMESTAMP
|
|
|
""", batchId, now);
|
|
|
|
|
|
@@ -921,6 +938,12 @@ internal static class S2MdpDdl
|
|
|
due_date DATETIME NULL,
|
|
|
release_date DATETIME NULL,
|
|
|
prod_line VARCHAR(100) NULL,
|
|
|
+ specification VARCHAR(200) NULL,
|
|
|
+ lot_serial VARCHAR(100) NULL,
|
|
|
+ drawing_no VARCHAR(100) NULL,
|
|
|
+ project VARCHAR(200) NULL,
|
|
|
+ work_order_type VARCHAR(50) NULL,
|
|
|
+ labor_variance DECIMAL(18,6) NULL,
|
|
|
source_biz_key VARCHAR(200) NULL,
|
|
|
sync_batch_id VARCHAR(100) NOT NULL,
|
|
|
sync_time DATETIME NOT NULL,
|