1.0.123.sql 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. -- 1.0.123.sql
  2. -- S8-ORDER-CHAIN-PRODUCT-DESIGN-PPT-STATIC-AND-SINGLE-ORDER-ALIGN-1
  3. -- 修正既有产品设计阶段数据,使其与本批次业务口径一致。仅 UPDATE,禁 DELETE / TRUNCATE / DROP。
  4. --
  5. -- 修正范围:
  6. -- 1) ado_s8_order_flow_product_design_drawing:
  7. -- a) 非标 (NON_STANDARD) 图号 KPI 从 12 改为 3,对应 actual_days 全部 > 3 → is_achieved=0 / status='red'
  8. -- b) responsible_person 由责任单位(研发中心 / 结构设计组 / 电气设计组 / 工艺设计组 / 设计审核组)
  9. -- 改为 6 位设计师姓名(李海峰 / 陈思远 / 王明华 / 赵建国 / 刘振宇 / 周启明),按 sort_no 循环分配
  10. -- 2) ado_s8_order_flow_snapshot:
  11. -- BASELINE_PPT 中 PRODUCT_DESIGN 行 actualAvgDays 2.6→2.5、onTimeRate 96→98
  12. --
  13. -- 安全边界:
  14. -- * 不动 ado_s8_order_flow_order / stage / substep / substep_unit
  15. -- * 不动 ORDER_REVIEW_PLAN_CALC / MATERIAL_PURCHASE / BODY_PRODUCTION / FINAL_ASSEMBLY_DELIVERY 任何数据
  16. -- * 不动 S0 / .vscode / Database.json
  17. -- * 仅触发 product_type='NON_STANDARD' 的图号行,与无人工修改过的责任人行
  18. -- * snapshot UPDATE 限定 scope_code='BASELINE_PPT' + snapshot_code='CHAIN_AGGREGATE_BASELINE'
  19. --
  20. -- 幂等性:
  21. -- * 非标行 UPDATE 带 WHERE (kpi_days<>3 OR is_achieved<>0 OR status<>'red'),重复执行命中行数为 0
  22. -- * 责任人 UPDATE 带 WHERE responsible_person NOT IN (6 设计师姓名),已对齐后不再触发
  23. -- * snapshot REPLACE 函数对已替换字符串无效,重复执行结果一致
  24. --
  25. -- 兼容性:
  26. -- * 仅使用 UPDATE / REPLACE / CASE / % 运算符,全部 MySQL 5.x / 8.x 通用语法,无需检查 MySQL 版本
  27. -- * 未使用 JSON_REPLACE / JSON_SET,避免依赖 MySQL 5.7.8+
  28. --
  29. -- Rollback:
  30. -- * 由 SeedData 与本脚本共同维护目标态。如需回滚业务口径,git revert 同 commit 并重新跑一次本脚本以外的 UPDATE 即可
  31. -- * 本脚本本身无数据破坏性操作
  32. -- 2026-05-21
  33. -- ─── 1) 非标图号 kpi_days / is_achieved / status 联动 ───
  34. UPDATE ado_s8_order_flow_product_design_drawing
  35. SET kpi_days = 3.00,
  36. is_achieved = 0,
  37. status = 'red'
  38. WHERE product_type = 'NON_STANDARD'
  39. AND is_deleted = 0
  40. AND (kpi_days <> 3.00 OR is_achieved <> 0 OR status <> 'red');
  41. -- ─── 2) 责任人按 sort_no 循环 6 位设计师 ───
  42. UPDATE ado_s8_order_flow_product_design_drawing
  43. SET responsible_person = CASE ((sort_no - 1) % 6)
  44. WHEN 0 THEN '李海峰'
  45. WHEN 1 THEN '陈思远'
  46. WHEN 2 THEN '王明华'
  47. WHEN 3 THEN '赵建国'
  48. WHEN 4 THEN '刘振宇'
  49. WHEN 5 THEN '周启明'
  50. END
  51. WHERE is_deleted = 0
  52. AND responsible_person NOT IN ('李海峰','陈思远','王明华','赵建国','刘振宇','周启明');
  53. -- ─── 3) snapshot PRODUCT_DESIGN actualAvgDays 2.6→2.5 与 onTimeRate 96→98 ───
  54. -- 用片段 '"actualAvgDays":2.6,"onTimeRate":96' 作为整体替换键,该字符串在 BASELINE_PPT JSON 中
  55. -- 仅出现于 PRODUCT_DESIGN 行(其他阶段 actualAvgDays 分别是 6.2 / 15.5 / 6.7 / 2.9),不会误伤。
  56. UPDATE ado_s8_order_flow_snapshot
  57. SET stage_snapshots_json = REPLACE(
  58. stage_snapshots_json,
  59. '"actualAvgDays":2.6,"onTimeRate":96',
  60. '"actualAvgDays":2.5,"onTimeRate":98')
  61. WHERE scope_code = 'BASELINE_PPT'
  62. AND snapshot_code = 'CHAIN_AGGREGATE_BASELINE'
  63. AND is_deleted = 0;