WIP-S8-DEMO-GOLDEN-DATASET.sql 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. -- =====================================================================================
  2. -- S8-DEMO-DATA-SEED-1 / STEP 2:UATAdminA Golden Demo Dataset(Order Flow 12 表)
  3. --
  4. -- 目标 scope :tenant=838257186181189 (UATTEST_CHL) / factory=838257186320453
  5. -- 源 模板 :tenant=797403760988230 (AIDOP-Demo) / factory=797403760988231 —— 只读,绝不修改
  6. --
  7. -- 设计要点(S8-DEMO-DATA-SEED-1 STEP 1 拍板):
  8. -- D1-A SO-2026-012 定义为「采购延期但后续追回工期」对照单,actual_cycle_days=30
  9. -- D2-A snapshot 按 Golden Roster 重算(total_orders=5 / total_customers=5),不复制 PPT 的 105
  10. -- D3 KPI 口径:PO=green 占比、WO=AVG(achievement_rate)
  11. -- D4-A 日期整体平移 +96 天(源业务窗 2026-04-15~05-18 → 2026-07-20~08-22,落入 Q3 且不含未来日期)
  12. -- 客户身份统一取 UAT S0 CustMaster 主数据,不沿用源 Demo 的「电气设备厂A/B/D/E」
  13. --
  14. -- ID 段:UAT 专用固定段 13299093xxxxx ~ 13299094xxxxx(全库未占用),无 MAX(id)+1
  15. -- 幂等:每条 INSERT 均带 NOT EXISTS(id) 守卫;012 修正为对固定值的 UPDATE(天然幂等)
  16. -- 系统审计列 created_at 固定写 '2026-08-27 00:00:00'(确定性,非 NOW());
  17. -- 这 6 张表无业务日期列,且经代码核查不参与任何页面过滤,故不做业务平移。
  18. -- =====================================================================================
  19. -- ---------------------------------------------------------------------------
  20. -- 1) 订单主表:5 条 Golden Order(客户身份改绑 UAT CustMaster)
  21. -- ---------------------------------------------------------------------------
  22. INSERT INTO `ado_s8_order_flow_order`
  23. (`id`,`tenant_id`,`factory_id`,`order_code`,`product_name`,`product_line`,`customer_code`,`customer_name`,
  24. `customer_type`,`region`,`priority`,`workflow_status`,`current_order_flow_code`,`release_at`,
  25. `target_cycle_days`,`actual_cycle_days`,`response_minutes`,`processing_minutes`,`total_loss_minutes`,
  26. `scenario_code`,`data_source`,`created_at`,`updated_at`,`is_deleted`)
  27. SELECT 1329909300000 + m.n, 838257186181189, 838257186320453,
  28. s.`order_code`, s.`product_name`, s.`product_line`,
  29. m.cust_code, m.cust_name,
  30. s.`customer_type`, s.`region`, s.`priority`, s.`workflow_status`, s.`current_order_flow_code`,
  31. DATE_ADD(s.`release_at`, INTERVAL 96 DAY),
  32. s.`target_cycle_days`,
  33. CASE WHEN s.`order_code` = 'SO-2026-012' THEN 30.0 ELSE s.`actual_cycle_days` END,
  34. s.`response_minutes`, s.`processing_minutes`, s.`total_loss_minutes`,
  35. 'DEMO', 'SEED', '2026-08-27 00:00:00', NULL, 0
  36. FROM `ado_s8_order_flow_order` s
  37. JOIN (
  38. SELECT 'SO-2026-001' AS order_code, 1 AS n, '10000000' AS cust_code, '瑞贝德' AS cust_name UNION ALL
  39. SELECT 'SO-2026-002', 2, '10000002', '通广' UNION ALL
  40. SELECT 'SO-2026-012', 3, '10000004', '岛包' UNION ALL
  41. SELECT 'SO-2026-019', 4, 'UATA-A01-CUS', 'A套UAT客户' UNION ALL
  42. SELECT 'SO-2026-020', 5, 'CUST0005', 'TJRQWKQXGFYXGS'
  43. ) m ON m.order_code = s.`order_code`
  44. WHERE s.`tenant_id` = 797403760988230 AND s.`factory_id` = 797403760988231 AND s.`is_deleted` = 0
  45. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_order` x WHERE x.`id` = 1329909300000 + m.n);
  46. -- ---------------------------------------------------------------------------
  47. -- 2) 阶段表:5 单 × 5 阶段 = 25 行
  48. -- ---------------------------------------------------------------------------
  49. INSERT INTO `ado_s8_order_flow_stage`
  50. (`id`,`order_id`,`order_code`,`order_flow_code`,`order_flow_name`,`owner_dept`,`sort_no`,
  51. `planned_days`,`actual_days`,`target_at`,`actual_start_at`,`actual_end_at`,`status`,
  52. `node_variance_days`,`cumulative_variance_days`,`scenario_code`,`data_source`,
  53. `tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  54. SELECT 1329909310000 + (m.n - 1) * 5 + s.`sort_no`,
  55. 1329909300000 + m.n, s.`order_code`, s.`order_flow_code`, s.`order_flow_name`, s.`owner_dept`, s.`sort_no`,
  56. s.`planned_days`, s.`actual_days`,
  57. DATE_ADD(s.`target_at`, INTERVAL 96 DAY),
  58. DATE_ADD(s.`actual_start_at`, INTERVAL 96 DAY),
  59. DATE_ADD(s.`actual_end_at`, INTERVAL 96 DAY),
  60. s.`status`, s.`node_variance_days`, s.`cumulative_variance_days`,
  61. 'DEMO', 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  62. FROM `ado_s8_order_flow_stage` s
  63. JOIN (
  64. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  65. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  66. ) m ON m.order_code = s.`order_code`
  67. WHERE s.`tenant_id` = 797403760988230 AND s.`is_deleted` = 0
  68. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_stage` x
  69. WHERE x.`id` = 1329909310000 + (m.n - 1) * 5 + s.`sort_no`);
  70. -- ---------------------------------------------------------------------------
  71. -- 3) 子步骤:5 单 × 5 = 25 行(仅 ORDER_REVIEW_PLAN_CALC 建模)
  72. -- ---------------------------------------------------------------------------
  73. INSERT INTO `ado_s8_order_flow_substep`
  74. (`id`,`order_id`,`order_code`,`order_flow_code`,`substep_code`,`substep_name`,`pi_hours`,`actual_hours`,
  75. `status`,`sort_no`,`scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  76. SELECT 1329909320000 + (m.n - 1) * 5 + s.`sort_no`,
  77. 1329909300000 + m.n, s.`order_code`, s.`order_flow_code`, s.`substep_code`, s.`substep_name`,
  78. s.`pi_hours`, s.`actual_hours`, s.`status`, s.`sort_no`,
  79. 'DEMO', 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  80. FROM `ado_s8_order_flow_substep` s
  81. JOIN (
  82. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  83. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  84. ) m ON m.order_code = s.`order_code`
  85. WHERE s.`tenant_id` = 797403760988230 AND s.`is_deleted` = 0
  86. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_substep` x
  87. WHERE x.`id` = 1329909320000 + (m.n - 1) * 5 + s.`sort_no`);
  88. -- ---------------------------------------------------------------------------
  89. -- 4) 子步骤单元:5 单 × 15 = 75 行
  90. -- ---------------------------------------------------------------------------
  91. INSERT INTO `ado_s8_order_flow_substep_unit`
  92. (`id`,`substep_id`,`order_id`,`order_code`,`order_flow_code`,`substep_code`,`unit_code`,`unit_name`,
  93. `pi_hours`,`actual_hours`,`status`,`sort_no`,`scenario_code`,`data_source`,
  94. `tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  95. SELECT 1329909330000 + (m.n - 1) * 15 + u.rn,
  96. 1329909320000 + (m.n - 1) * 5 + sub.`sort_no`,
  97. 1329909300000 + m.n, u.`order_code`, u.`order_flow_code`, u.`substep_code`, u.`unit_code`, u.`unit_name`,
  98. u.`pi_hours`, u.`actual_hours`, u.`status`, u.`sort_no`,
  99. 'DEMO', 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  100. FROM (
  101. SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.`order_code` ORDER BY t.`id`) AS rn
  102. FROM `ado_s8_order_flow_substep_unit` t
  103. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0
  104. ) u
  105. JOIN `ado_s8_order_flow_substep` sub ON sub.`id` = u.`substep_id`
  106. JOIN (
  107. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  108. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  109. ) m ON m.order_code = u.`order_code`
  110. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_substep_unit` x
  111. WHERE x.`id` = 1329909330000 + (m.n - 1) * 15 + u.rn);
  112. -- ---------------------------------------------------------------------------
  113. -- 5) 产品设计图纸:5 单 × 7 = 35 行(4 个业务日期列平移)
  114. -- ---------------------------------------------------------------------------
  115. INSERT INTO `ado_s8_order_flow_product_design_drawing`
  116. (`id`,`tenant_id`,`factory_id`,`order_code`,`drawing_no`,`product_type`,`product_quantity`,`responsible_person`,
  117. `planned_start_date`,`planned_end_date`,`actual_start_date`,`actual_end_date`,
  118. `kpi_days`,`actual_days`,`is_achieved`,`status`,`sort_no`,`is_deleted`,`create_time`,`update_time`)
  119. SELECT 1329909340000 + (m.n - 1) * 7 + d.rn,
  120. 838257186181189, 838257186320453,
  121. d.`order_code`, d.`drawing_no`, d.`product_type`, d.`product_quantity`, d.`responsible_person`,
  122. DATE_ADD(d.`planned_start_date`, INTERVAL 96 DAY),
  123. DATE_ADD(d.`planned_end_date`, INTERVAL 96 DAY),
  124. DATE_ADD(d.`actual_start_date`, INTERVAL 96 DAY),
  125. DATE_ADD(d.`actual_end_date`, INTERVAL 96 DAY),
  126. d.`kpi_days`, d.`actual_days`, d.`is_achieved`, d.`status`, d.`sort_no`,
  127. 0, '2026-08-27 00:00:00', NULL
  128. FROM (
  129. SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.`order_code` ORDER BY t.`id`) AS rn
  130. FROM `ado_s8_order_flow_product_design_drawing` t
  131. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0
  132. ) d
  133. JOIN (
  134. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  135. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  136. ) m ON m.order_code = d.`order_code`
  137. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_product_design_drawing` x
  138. WHERE x.`id` = 1329909340000 + (m.n - 1) * 7 + d.rn);
  139. -- ---------------------------------------------------------------------------
  140. -- 6a) 材料采购透视 —— baseline 行 48 条(PPT 第 4 页真值参考基线,order_id IS NULL)
  141. -- 语义 = BUSINESS/PPT REFERENCE BASELINE,非 20 单聚合 → 原样复制
  142. -- ---------------------------------------------------------------------------
  143. INSERT INTO `ado_s8_order_flow_procurement_pivot`
  144. (`id`,`order_id`,`order_code`,`material_code`,`supplier_code`,`spec_code`,`cycle_days`,`status`,
  145. `scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`,
  146. `impact_count`,`kit_rate`)
  147. SELECT 1329909350000 + p.rn, NULL, NULL,
  148. p.`material_code`, p.`supplier_code`, p.`spec_code`, p.`cycle_days`, p.`status`,
  149. p.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0,
  150. p.`impact_count`, p.`kit_rate`
  151. FROM (
  152. SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.`id`) AS rn
  153. FROM `ado_s8_order_flow_procurement_pivot` t
  154. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0 AND t.`order_id` IS NULL
  155. ) p
  156. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_procurement_pivot` x
  157. WHERE x.`id` = 1329909350000 + p.rn);
  158. -- 6b) 材料采购透视 —— 订单级行 5 单 × 48 = 240 条
  159. INSERT INTO `ado_s8_order_flow_procurement_pivot`
  160. (`id`,`order_id`,`order_code`,`material_code`,`supplier_code`,`spec_code`,`cycle_days`,`status`,
  161. `scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`,
  162. `impact_count`,`kit_rate`)
  163. SELECT 1329909360000 + (m.n - 1) * 48 + p.rn,
  164. 1329909300000 + m.n, p.`order_code`,
  165. p.`material_code`, p.`supplier_code`, p.`spec_code`, p.`cycle_days`, p.`status`,
  166. p.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0,
  167. p.`impact_count`, p.`kit_rate`
  168. FROM (
  169. SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.`order_code` ORDER BY t.`id`) AS rn
  170. FROM `ado_s8_order_flow_procurement_pivot` t
  171. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0 AND t.`order_id` IS NOT NULL
  172. ) p
  173. JOIN (
  174. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  175. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  176. ) m ON m.order_code = p.`order_code`
  177. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_procurement_pivot` x
  178. WHERE x.`id` = 1329909360000 + (m.n - 1) * 48 + p.rn);
  179. -- ---------------------------------------------------------------------------
  180. -- 7) 本体生产 · 工序明细:baseline 5 + 订单级 20 = 25 行
  181. -- baseline 语义 = MANUFACTURING_DETAIL_FIXTURE 参考基线 → 原样复制
  182. -- ---------------------------------------------------------------------------
  183. INSERT INTO `ado_s8_order_flow_manufacturing_process`
  184. (`id`,`order_id`,`order_code`,`process_code`,`process_name`,`pi_days`,`actual_days`,`cycle_status`,
  185. `plan_qty`,`achievement_rate`,`achievement_status`,`sort_no`,`scenario_code`,`data_source`,
  186. `tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  187. SELECT 1329909380000 + p.rn, NULL, NULL,
  188. p.`process_code`, p.`process_name`, p.`pi_days`, p.`actual_days`, p.`cycle_status`,
  189. p.`plan_qty`, p.`achievement_rate`, p.`achievement_status`, p.`sort_no`,
  190. p.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  191. FROM (
  192. SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.`sort_no`) AS rn
  193. FROM `ado_s8_order_flow_manufacturing_process` t
  194. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0 AND t.`order_id` IS NULL
  195. ) p
  196. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_manufacturing_process` x
  197. WHERE x.`id` = 1329909380000 + p.rn);
  198. INSERT INTO `ado_s8_order_flow_manufacturing_process`
  199. (`id`,`order_id`,`order_code`,`process_code`,`process_name`,`pi_days`,`actual_days`,`cycle_status`,
  200. `plan_qty`,`achievement_rate`,`achievement_status`,`sort_no`,`scenario_code`,`data_source`,
  201. `tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  202. SELECT 1329909380100 + (m.n - 1) * 5 + p.`sort_no`,
  203. 1329909300000 + m.n, p.`order_code`,
  204. p.`process_code`, p.`process_name`, p.`pi_days`, p.`actual_days`, p.`cycle_status`,
  205. p.`plan_qty`, p.`achievement_rate`, p.`achievement_status`, p.`sort_no`,
  206. p.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  207. FROM `ado_s8_order_flow_manufacturing_process` p
  208. JOIN (
  209. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  210. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  211. ) m ON m.order_code = p.`order_code`
  212. WHERE p.`tenant_id` = 797403760988230 AND p.`is_deleted` = 0 AND p.`order_id` IS NOT NULL
  213. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_manufacturing_process` x
  214. WHERE x.`id` = 1329909380100 + (m.n - 1) * 5 + p.`sort_no`);
  215. -- ---------------------------------------------------------------------------
  216. -- 8) 本体生产 · 损失因素:baseline 5 + 订单级 20 = 25 行
  217. -- ---------------------------------------------------------------------------
  218. INSERT INTO `ado_s8_order_flow_manufacturing_loss_factor`
  219. (`id`,`order_id`,`order_code`,`factor_code`,`factor_name`,`count_value`,`ratio_pct`,`loss_hours`,
  220. `sort_no`,`scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  221. SELECT 1329909390000 + f.rn, NULL, NULL,
  222. f.`factor_code`, f.`factor_name`, f.`count_value`, f.`ratio_pct`, f.`loss_hours`, f.`sort_no`,
  223. f.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  224. FROM (
  225. SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.`sort_no`) AS rn
  226. FROM `ado_s8_order_flow_manufacturing_loss_factor` t
  227. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0 AND t.`order_id` IS NULL
  228. ) f
  229. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_manufacturing_loss_factor` x
  230. WHERE x.`id` = 1329909390000 + f.rn);
  231. INSERT INTO `ado_s8_order_flow_manufacturing_loss_factor`
  232. (`id`,`order_id`,`order_code`,`factor_code`,`factor_name`,`count_value`,`ratio_pct`,`loss_hours`,
  233. `sort_no`,`scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  234. SELECT 1329909390100 + (m.n - 1) * 5 + f.`sort_no`,
  235. 1329909300000 + m.n, f.`order_code`,
  236. f.`factor_code`, f.`factor_name`, f.`count_value`, f.`ratio_pct`, f.`loss_hours`, f.`sort_no`,
  237. f.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  238. FROM `ado_s8_order_flow_manufacturing_loss_factor` f
  239. JOIN (
  240. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  241. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  242. ) m ON m.order_code = f.`order_code`
  243. WHERE f.`tenant_id` = 797403760988230 AND f.`is_deleted` = 0 AND f.`order_id` IS NOT NULL
  244. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_manufacturing_loss_factor` x
  245. WHERE x.`id` = 1329909390100 + (m.n - 1) * 5 + f.`sort_no`);
  246. -- ---------------------------------------------------------------------------
  247. -- 9) 本体生产 · 操作员表现:baseline 3 + 订单级 12 = 15 行
  248. -- ---------------------------------------------------------------------------
  249. INSERT INTO `ado_s8_order_flow_manufacturing_operator`
  250. (`id`,`order_id`,`order_code`,`operator_code`,`operator_name`,`avg_hours`,`status`,`sort_no`,
  251. `scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  252. SELECT 1329909400000 + o.rn, NULL, NULL,
  253. o.`operator_code`, o.`operator_name`, o.`avg_hours`, o.`status`, o.`sort_no`,
  254. o.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  255. FROM (
  256. SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.`sort_no`) AS rn
  257. FROM `ado_s8_order_flow_manufacturing_operator` t
  258. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0 AND t.`order_id` IS NULL
  259. ) o
  260. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_manufacturing_operator` x
  261. WHERE x.`id` = 1329909400000 + o.rn);
  262. INSERT INTO `ado_s8_order_flow_manufacturing_operator`
  263. (`id`,`order_id`,`order_code`,`operator_code`,`operator_name`,`avg_hours`,`status`,`sort_no`,
  264. `scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  265. SELECT 1329909400100 + (m.n - 1) * 3 + o.`sort_no`,
  266. 1329909300000 + m.n, o.`order_code`,
  267. o.`operator_code`, o.`operator_name`, o.`avg_hours`, o.`status`, o.`sort_no`,
  268. o.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  269. FROM `ado_s8_order_flow_manufacturing_operator` o
  270. JOIN (
  271. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  272. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  273. ) m ON m.order_code = o.`order_code`
  274. WHERE o.`tenant_id` = 797403760988230 AND o.`is_deleted` = 0 AND o.`order_id` IS NOT NULL
  275. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_manufacturing_operator` x
  276. WHERE x.`id` = 1329909400100 + (m.n - 1) * 3 + o.`sort_no`);
  277. -- ---------------------------------------------------------------------------
  278. -- 10) 总装发货 · 主门禁:baseline 5 + 订单级 15 = 20 行
  279. -- baseline 语义 = 清洁 PPT 基线(planned=actual、variance=0、全 green)→ 原样复制
  280. -- ---------------------------------------------------------------------------
  281. INSERT INTO `ado_s8_order_flow_final_assembly_gate`
  282. (`id`,`order_id`,`order_code`,`gate_code`,`gate_name`,`planned_offset_days`,`actual_offset_days`,
  283. `variance_days`,`status`,`impacted_order_count`,`risk_order_count`,`top_risk_type`,`top_risk_label`,
  284. `owner_side_text`,`sort_no`,`scenario_code`,`data_source`,`tenant_id`,`factory_id`,
  285. `created_at`,`updated_at`,`is_deleted`)
  286. SELECT 1329909410000 + g.rn, NULL, NULL,
  287. g.`gate_code`, g.`gate_name`, g.`planned_offset_days`, g.`actual_offset_days`,
  288. g.`variance_days`, g.`status`, g.`impacted_order_count`, g.`risk_order_count`,
  289. g.`top_risk_type`, g.`top_risk_label`, g.`owner_side_text`, g.`sort_no`,
  290. g.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  291. FROM (
  292. SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.`sort_no`) AS rn
  293. FROM `ado_s8_order_flow_final_assembly_gate` t
  294. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0 AND t.`order_id` IS NULL
  295. ) g
  296. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_final_assembly_gate` x
  297. WHERE x.`id` = 1329909410000 + g.rn);
  298. INSERT INTO `ado_s8_order_flow_final_assembly_gate`
  299. (`id`,`order_id`,`order_code`,`gate_code`,`gate_name`,`planned_offset_days`,`actual_offset_days`,
  300. `variance_days`,`status`,`impacted_order_count`,`risk_order_count`,`top_risk_type`,`top_risk_label`,
  301. `owner_side_text`,`sort_no`,`scenario_code`,`data_source`,`tenant_id`,`factory_id`,
  302. `created_at`,`updated_at`,`is_deleted`)
  303. SELECT 1329909410100 + (m.n - 1) * 5 + (g.`sort_no` / 10),
  304. 1329909300000 + m.n, g.`order_code`,
  305. g.`gate_code`, g.`gate_name`, g.`planned_offset_days`, g.`actual_offset_days`,
  306. g.`variance_days`, g.`status`, g.`impacted_order_count`, g.`risk_order_count`,
  307. g.`top_risk_type`, g.`top_risk_label`, g.`owner_side_text`, g.`sort_no`,
  308. g.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  309. FROM `ado_s8_order_flow_final_assembly_gate` g
  310. JOIN (
  311. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  312. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  313. ) m ON m.order_code = g.`order_code`
  314. WHERE g.`tenant_id` = 797403760988230 AND g.`is_deleted` = 0 AND g.`order_id` IS NOT NULL
  315. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_final_assembly_gate` x
  316. WHERE x.`id` = 1329909410100 + (m.n - 1) * 5 + (g.`sort_no` / 10));
  317. -- ---------------------------------------------------------------------------
  318. -- 11) 总装发货 · 并行准备:baseline 4 + 订单级 12 = 16 行
  319. -- ---------------------------------------------------------------------------
  320. INSERT INTO `ado_s8_order_flow_final_assembly_parallel`
  321. (`id`,`order_id`,`order_code`,`prep_code`,`prep_name`,`kitting_rate`,`status`,
  322. `impacted_order_count`,`risk_order_count`,`top_risk_type`,`top_risk_label`,`owner_side_text`,`sort_no`,
  323. `scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  324. SELECT 1329909420000 + p.rn, NULL, NULL,
  325. p.`prep_code`, p.`prep_name`, p.`kitting_rate`, p.`status`,
  326. p.`impacted_order_count`, p.`risk_order_count`, p.`top_risk_type`, p.`top_risk_label`,
  327. p.`owner_side_text`, p.`sort_no`,
  328. p.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  329. FROM (
  330. SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.`sort_no`) AS rn
  331. FROM `ado_s8_order_flow_final_assembly_parallel` t
  332. WHERE t.`tenant_id` = 797403760988230 AND t.`is_deleted` = 0 AND t.`order_id` IS NULL
  333. ) p
  334. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_final_assembly_parallel` x
  335. WHERE x.`id` = 1329909420000 + p.rn);
  336. INSERT INTO `ado_s8_order_flow_final_assembly_parallel`
  337. (`id`,`order_id`,`order_code`,`prep_code`,`prep_name`,`kitting_rate`,`status`,
  338. `impacted_order_count`,`risk_order_count`,`top_risk_type`,`top_risk_label`,`owner_side_text`,`sort_no`,
  339. `scenario_code`,`data_source`,`tenant_id`,`factory_id`,`created_at`,`updated_at`,`is_deleted`)
  340. SELECT 1329909420100 + (m.n - 1) * 4 + (p.`sort_no` / 10),
  341. 1329909300000 + m.n, p.`order_code`,
  342. p.`prep_code`, p.`prep_name`, p.`kitting_rate`, p.`status`,
  343. p.`impacted_order_count`, p.`risk_order_count`, p.`top_risk_type`, p.`top_risk_label`,
  344. p.`owner_side_text`, p.`sort_no`,
  345. p.`scenario_code`, 'SEED', 838257186181189, 838257186320453, '2026-08-27 00:00:00', NULL, 0
  346. FROM `ado_s8_order_flow_final_assembly_parallel` p
  347. JOIN (
  348. SELECT 'SO-2026-001' AS order_code, 1 AS n UNION ALL SELECT 'SO-2026-002', 2 UNION ALL
  349. SELECT 'SO-2026-012', 3 UNION ALL SELECT 'SO-2026-019', 4 UNION ALL SELECT 'SO-2026-020', 5
  350. ) m ON m.order_code = p.`order_code`
  351. WHERE p.`tenant_id` = 797403760988230 AND p.`is_deleted` = 0 AND p.`order_id` IS NOT NULL
  352. AND NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_final_assembly_parallel` x
  353. WHERE x.`id` = 1329909420100 + (m.n - 1) * 4 + (p.`sort_no` / 10));
  354. -- =====================================================================================
  355. -- 12) SO-2026-012 对照单重算:采购延期 +2 天 → 本体生产追回 2 天 → 总装追回 1 天
  356. -- stage 实际 5/3/16/4/2 = 30(planned 5/3/14/6/3 = 31 = target_cycle_days,不变)
  357. -- 全部为对固定值的 UPDATE,天然幂等;只作用于 UAT scope,源租户不受影响。
  358. -- =====================================================================================
  359. -- 12.1 阶段:BODY_PRODUCTION 6→4,FINAL_ASSEMBLY 3→2,同步 variance 链与实际日期
  360. UPDATE `ado_s8_order_flow_stage`
  361. SET `actual_days` = 4.0, `node_variance_days` = -2.0, `cumulative_variance_days` = 0.0,
  362. `actual_start_at` = '2026-08-13 09:00:00', `actual_end_at` = '2026-08-17 09:00:00'
  363. WHERE `tenant_id` = 838257186181189 AND `factory_id` = 838257186320453
  364. AND `order_id` = 1329909300003 AND `order_flow_code` = 'BODY_PRODUCTION';
  365. UPDATE `ado_s8_order_flow_stage`
  366. SET `actual_days` = 2.0, `node_variance_days` = -1.0, `cumulative_variance_days` = -1.0,
  367. `actual_start_at` = '2026-08-17 09:00:00', `actual_end_at` = '2026-08-19 09:00:00'
  368. WHERE `tenant_id` = 838257186181189 AND `factory_id` = 838257186320453
  369. AND `order_id` = 1329909300003 AND `order_flow_code` = 'FINAL_ASSEMBLY_DELIVERY';
  370. -- 12.2 工序明细:按既有算法 actual[i] = round(baseline_actual[i] × A / 6.8, 3),A=4.0;
  371. -- 末位守恒尾差修正;plan_qty = round(baseline_plan × A/6.8);
  372. -- cycle_status = ≤pi green / ≤pi×1.2 yellow / 否则 red(achievement_* 为工序固定属性,不随 A 变)
  373. UPDATE `ado_s8_order_flow_manufacturing_process`
  374. SET `actual_days` = 1.412, `plan_qty` = 26, `cycle_status` = 'red'
  375. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `process_code` = 'P10';
  376. UPDATE `ado_s8_order_flow_manufacturing_process`
  377. SET `actual_days` = 0.471, `plan_qty` = 2, `cycle_status` = 'green'
  378. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `process_code` = 'P20';
  379. UPDATE `ado_s8_order_flow_manufacturing_process`
  380. SET `actual_days` = 1.765, `plan_qty` = 9, `cycle_status` = 'green'
  381. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `process_code` = 'P30';
  382. UPDATE `ado_s8_order_flow_manufacturing_process`
  383. SET `actual_days` = 0.352, `plan_qty` = 1, `cycle_status` = 'green'
  384. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `process_code` = 'P40';
  385. UPDATE `ado_s8_order_flow_manufacturing_process`
  386. SET `actual_days` = 4.000, `cycle_status` = 'green'
  387. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `process_code` = 'TOTAL';
  388. -- 12.3 损失因素:count = round(baseline_count × A/6.8),loss_hours = round(baseline_hours × A/6.8, 2)
  389. UPDATE `ado_s8_order_flow_manufacturing_loss_factor`
  390. SET `count_value` = 5, `loss_hours` = 5.29
  391. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `factor_code` = 'MATERIAL';
  392. UPDATE `ado_s8_order_flow_manufacturing_loss_factor`
  393. SET `count_value` = 4, `loss_hours` = 2.65
  394. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `factor_code` = 'EQUIPMENT';
  395. UPDATE `ado_s8_order_flow_manufacturing_loss_factor`
  396. SET `count_value` = 2, `loss_hours` = 2.00
  397. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `factor_code` = 'QUALITY';
  398. UPDATE `ado_s8_order_flow_manufacturing_loss_factor`
  399. SET `count_value` = 7, `loss_hours` = 5.44
  400. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `factor_code` = 'EFFICIENCY';
  401. UPDATE `ado_s8_order_flow_manufacturing_loss_factor`
  402. SET `count_value` = 18, `loss_hours` = 4.41
  403. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `factor_code` = 'SUBTOTAL';
  404. -- 12.4 操作员表现:avg_hours = round(baseline_hours × A/6.8, 2)(status 为操作员固定属性)
  405. UPDATE `ado_s8_order_flow_manufacturing_operator`
  406. SET `avg_hours` = 11.76
  407. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `operator_code` = 'OP_ZHANG';
  408. UPDATE `ado_s8_order_flow_manufacturing_operator`
  409. SET `avg_hours` = 5.88
  410. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `operator_code` = 'OP_LI';
  411. UPDATE `ado_s8_order_flow_manufacturing_operator`
  412. SET `avg_hours` = 4.71
  413. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `operator_code` = 'OP_WANG';
  414. -- 12.5 总装门禁:scale = stage.actual_days / 3.0 = 2/3;末位守恒修正 = stage.actual_days
  415. -- variance = actual - planned(全为负 = 提前,status green)
  416. UPDATE `ado_s8_order_flow_final_assembly_gate`
  417. SET `actual_offset_days` = 0.400, `variance_days` = -0.200, `status` = 'green',
  418. `impacted_order_count` = 0, `risk_order_count` = 0, `top_risk_type` = NULL, `top_risk_label` = NULL
  419. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `gate_code` = 'ASSEMBLY_COMPLETION';
  420. UPDATE `ado_s8_order_flow_final_assembly_gate`
  421. SET `actual_offset_days` = 0.800, `variance_days` = -0.400, `status` = 'green',
  422. `impacted_order_count` = 0, `risk_order_count` = 0, `top_risk_type` = NULL, `top_risk_label` = NULL
  423. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `gate_code` = 'QUALITY_RELEASE';
  424. UPDATE `ado_s8_order_flow_final_assembly_gate`
  425. SET `actual_offset_days` = 1.200, `variance_days` = -0.600, `status` = 'green',
  426. `impacted_order_count` = 0, `risk_order_count` = 0, `top_risk_type` = NULL, `top_risk_label` = NULL
  427. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `gate_code` = 'PACKAGING_COMPLETION';
  428. UPDATE `ado_s8_order_flow_final_assembly_gate`
  429. SET `actual_offset_days` = 1.600, `variance_days` = -0.800, `status` = 'green',
  430. `impacted_order_count` = 0, `risk_order_count` = 0, `top_risk_type` = NULL, `top_risk_label` = NULL
  431. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `gate_code` = 'GOODS_HANDOVER';
  432. UPDATE `ado_s8_order_flow_final_assembly_gate`
  433. SET `actual_offset_days` = 2.000, `variance_days` = -1.000, `status` = 'green',
  434. `impacted_order_count` = 0, `risk_order_count` = 0, `top_risk_type` = NULL, `top_risk_label` = NULL
  435. WHERE `tenant_id` = 838257186181189 AND `order_id` = 1329909300003 AND `gate_code` = 'SHIPMENT_CONFIRMATION';
  436. -- 12.6 SO-2026-001 源缺陷修正:MATERIAL_PURCHASE 标注 actual_days=13,
  437. -- 但其自身日期跨度(+96 后 2026-07-30 → 2026-08-11)实为 12 天,
  438. -- 且该单其余 4 阶段的天数与日期跨度均自洽、5 阶段日期跨度合计 30 = actual_cycle_days=30。
  439. -- 故 13 为源模板笔误;在 UAT 副本内校正为 12,使 stage 合计 = 订单周期(源租户不改)。
  440. -- 连带修正 variance 链:nv = 12-14 = -2.0;cv = 2.0 + (-2.0) = 0.0(由 red 阶段回正)。
  441. UPDATE `ado_s8_order_flow_stage`
  442. SET `actual_days` = 12.0, `node_variance_days` = -2.0, `cumulative_variance_days` = 0.0, `status` = 'green'
  443. WHERE `tenant_id` = 838257186181189 AND `factory_id` = 838257186320453
  444. AND `order_id` = 1329909300001 AND `order_flow_code` = 'MATERIAL_PURCHASE';
  445. UPDATE `ado_s8_order_flow_stage`
  446. SET `cumulative_variance_days` = -1.0
  447. WHERE `tenant_id` = 838257186181189 AND `factory_id` = 838257186320453
  448. AND `order_id` = 1329909300001 AND `order_flow_code` = 'BODY_PRODUCTION';
  449. UPDATE `ado_s8_order_flow_stage`
  450. SET `cumulative_variance_days` = -1.0
  451. WHERE `tenant_id` = 838257186181189 AND `factory_id` = 838257186320453
  452. AND `order_id` = 1329909300001 AND `order_flow_code` = 'FINAL_ASSEMBLY_DELIVERY';
  453. -- =====================================================================================
  454. -- 13) 链路聚合快照:按 Golden Roster 实算(D2-A),不复制 PPT 的 total_orders=105
  455. -- total_orders / total_customers / 三项 avg / 5 阶段 JSON 全部由 UAT 数据聚合得出
  456. -- =====================================================================================
  457. INSERT INTO `ado_s8_order_flow_snapshot`
  458. (`id`,`tenant_id`,`factory_id`,`snapshot_code`,`scope_code`,`total_orders`,`total_customers`,
  459. `avg_response_minutes`,`avg_processing_minutes`,`avg_loss_minutes`,`stage_snapshots_json`,
  460. `scenario_code`,`data_source`,`created_at`,`updated_at`,`is_deleted`)
  461. SELECT 1329909370001, 838257186181189, 838257186320453,
  462. 'CHAIN_AGGREGATE_BASELINE', 'BASELINE_PPT',
  463. agg.total_orders, agg.total_customers,
  464. agg.avg_r, agg.avg_p, agg.avg_l,
  465. js.stage_json,
  466. 'DEMO', 'SEED', '2026-08-27 00:00:00', NULL, 0
  467. FROM (
  468. SELECT COUNT(*) AS total_orders,
  469. COUNT(DISTINCT `customer_code`) AS total_customers,
  470. ROUND(AVG(`response_minutes`), 2) AS avg_r,
  471. ROUND(AVG(`processing_minutes`), 2) AS avg_p,
  472. ROUND(AVG(`total_loss_minutes`), 2) AS avg_l
  473. FROM `ado_s8_order_flow_order`
  474. WHERE `tenant_id` = 838257186181189 AND `factory_id` = 838257186320453 AND `is_deleted` = 0
  475. ) agg
  476. CROSS JOIN (
  477. SELECT CAST(CONCAT('[', GROUP_CONCAT(j ORDER BY sn SEPARATOR ','), ']') AS CHAR) AS stage_json
  478. FROM (
  479. SELECT MIN(st.`sort_no`) AS sn,
  480. JSON_OBJECT(
  481. 'orderFlowCode', st.`order_flow_code`,
  482. 'orderFlowName', MIN(st.`order_flow_name`),
  483. 'kpiAvgDays', CAST(ROUND(AVG(st.`planned_days`), 1) AS DECIMAL(10,1)),
  484. 'actualAvgDays', CAST(ROUND(AVG(st.`actual_days`), 1) AS DECIMAL(10,1)),
  485. 'onTimeRate', CAST(ROUND(100 * SUM(st.`actual_days` IS NOT NULL AND st.`actual_days` <= st.`planned_days`)
  486. / NULLIF(SUM(st.`actual_days` IS NOT NULL), 0), 0) AS SIGNED),
  487. 'green', CAST(SUM(st.`status` = 'green') AS SIGNED),
  488. 'yellow', CAST(SUM(st.`status` = 'yellow') AS SIGNED),
  489. 'red', CAST(SUM(st.`status` = 'red') AS SIGNED),
  490. 'pending', CAST(SUM(st.`status` = 'pending') AS SIGNED)
  491. ) AS j
  492. FROM `ado_s8_order_flow_stage` st
  493. WHERE st.`tenant_id` = 838257186181189 AND st.`factory_id` = 838257186320453 AND st.`is_deleted` = 0
  494. GROUP BY st.`order_flow_code`
  495. ) t
  496. ) js
  497. WHERE NOT EXISTS (SELECT 1 FROM `ado_s8_order_flow_snapshot` x WHERE x.`id` = 1329909370001);