|
@@ -0,0 +1,64 @@
|
|
|
|
|
+-- 1.0.109.sql
|
|
|
|
|
+-- S8-DEPT-MASTER-EXPAND-AND-BACKFILL-1
|
|
|
|
|
+-- 1) 为 factory_ref_id=1(Domain='S8-DEMO-F1')新增 4 个部门:订单管理部 / 技术设计部 / 采购部 / 物料仓储部;
|
|
|
|
|
+-- 2) 把现有 16 条 ORDER_FLOW_KPI_OVERTIME_DERIVED 派生异常的责任部门按 order_flow_code 重新映射,
|
|
|
|
|
+-- 让"未归属"从 D-UNASSIGNED 重新分散到 4 个明确部门,消除 S8 部门卡全部落 D-UNASSIGNED 的演示问题。
|
|
|
|
|
+-- 执行入口:AutoVersionUpdate.UseAutoVersionUpdate(),在 csproj Version=1.0.109 主节点首次启动时触发。
|
|
|
|
|
+-- 幂等性:
|
|
|
|
|
+-- * 部门 INSERT ... ON DUPLICATE KEY UPDATE 走 (tenant_id, Domain, Department) 唯一键;
|
|
|
|
|
+-- * 异常 UPDATE 是按 CASE 重新映射,重复执行结果一致(CASE 命中相同 RecID);
|
|
|
|
|
+-- * 与 1.0.105/1.0.106 风格保持一致。
|
|
|
|
|
+-- 安全边界:不改 stage_code / order_flow_code / exception_type_code / severity / status;
|
|
|
|
|
+-- 不动 source_rule_code 非 ORDER_FLOW_KPI_OVERTIME_DERIVED 的行;不动 is_deleted=1 的软删行。
|
|
|
|
|
+-- 2026-05-16
|
|
|
|
|
+
|
|
|
|
|
+-- 1) Upsert 4 个新部门(factory_ref_id=1 / Domain='S8-DEMO-F1' / tenant_id 与现有 D-PROD 等保持一致)
|
|
|
|
|
+INSERT INTO DepartmentMaster
|
|
|
|
|
+ (company_ref_id, factory_ref_id, tenant_id, Domain, Department, Descr, IsActive, CreateTime, CreateUser)
|
|
|
|
|
+SELECT 1, 1, 797403760988229, 'S8-DEMO-F1', seed.code, seed.descr, 1, NOW(), 's8-dept-master-expand-1'
|
|
|
|
|
+FROM (
|
|
|
|
|
+ SELECT 'D-ORDER-MGMT' AS code, '订单管理部' AS descr
|
|
|
|
|
+ UNION ALL SELECT 'D-TECH-DESIGN', '技术设计部'
|
|
|
|
|
+ UNION ALL SELECT 'D-PURCHASE', '采购部'
|
|
|
|
|
+ UNION ALL SELECT 'D-WAREHOUSE', '物料仓储部'
|
|
|
|
|
+) seed
|
|
|
|
|
+ON DUPLICATE KEY UPDATE
|
|
|
|
|
+ Descr = VALUES(Descr),
|
|
|
|
|
+ IsActive = 1,
|
|
|
|
|
+ UpdateTime = NOW(),
|
|
|
|
|
+ UpdateUser = 's8-dept-master-expand-1';
|
|
|
|
|
+
|
|
|
|
|
+-- 2) 回填 16 条 ORDER_FLOW KPI 派生异常的责任/发生部门
|
|
|
|
|
+-- 映射协议:
|
|
|
|
|
+-- ORDER_REVIEW_PLAN_CALC → D-ORDER-MGMT (订单评审/排产/测算 = 订单管理部)
|
|
|
|
|
+-- PRODUCT_DESIGN → D-TECH-DESIGN (产品设计 = 技术设计部)
|
|
|
|
|
+-- MATERIAL_PURCHASE → D-PURCHASE (材料采购 = 采购部)
|
|
|
|
|
+-- BODY_PRODUCTION → D-PROD (本体生产 = 生产部,保持不变)
|
|
|
|
|
+-- FINAL_ASSEMBLY_DELIVERY → D-PROD (总装发货 = 生产部,保持不变)
|
|
|
|
|
+-- JOIN 按 factory_ref_id 对齐(DB 中 dept.tenant_id=797403760988229 与 exception.tenant_id=1 历史不一致,
|
|
|
|
|
+-- 与现有 S8MonitoringService 部门水合口径一致:只看 factory_ref_id 和 RecID)。
|
|
|
|
|
+UPDATE ado_s8_exception e
|
|
|
|
|
+JOIN DepartmentMaster d
|
|
|
|
|
+ ON d.Department = CASE e.order_flow_code
|
|
|
|
|
+ WHEN 'ORDER_REVIEW_PLAN_CALC' THEN 'D-ORDER-MGMT'
|
|
|
|
|
+ WHEN 'PRODUCT_DESIGN' THEN 'D-TECH-DESIGN'
|
|
|
|
|
+ WHEN 'MATERIAL_PURCHASE' THEN 'D-PURCHASE'
|
|
|
|
|
+ WHEN 'BODY_PRODUCTION' THEN 'D-PROD'
|
|
|
|
|
+ WHEN 'FINAL_ASSEMBLY_DELIVERY' THEN 'D-PROD'
|
|
|
|
|
+ END
|
|
|
|
|
+ AND d.factory_ref_id = e.factory_id
|
|
|
|
|
+ AND d.IsActive = 1
|
|
|
|
|
+SET e.responsible_dept_id = d.RecID,
|
|
|
|
|
+ e.occurrence_dept_id = d.RecID,
|
|
|
|
|
+ e.updated_at = NOW(),
|
|
|
|
|
+ e.updated_by = 'system:s8_dept_master_expand_backfill'
|
|
|
|
|
+WHERE e.is_deleted = 0
|
|
|
|
|
+ AND e.source_rule_code = 'ORDER_FLOW_KPI_OVERTIME_DERIVED';
|
|
|
|
|
+
|
|
|
|
|
+-- 验证 SQL(注释,仅人工核对,脚本本身不依赖 SELECT 结果):
|
|
|
|
|
+-- SELECT Department, Descr, IsActive FROM DepartmentMaster
|
|
|
|
|
+-- WHERE Department IN ('D-ORDER-MGMT','D-TECH-DESIGN','D-PURCHASE','D-WAREHOUSE') AND factory_ref_id=1;
|
|
|
|
|
+-- SELECT e.order_flow_code, d.Department, COUNT(*) FROM ado_s8_exception e
|
|
|
|
|
+-- LEFT JOIN DepartmentMaster d ON d.RecID=e.responsible_dept_id
|
|
|
|
|
+-- WHERE e.is_deleted=0 AND e.source_rule_code='ORDER_FLOW_KPI_OVERTIME_DERIVED'
|
|
|
|
|
+-- GROUP BY e.order_flow_code, d.Department;
|