|
|
@@ -0,0 +1,93 @@
|
|
|
+-- 1.0.125.sql
|
|
|
+-- S8-ORDER-CHAIN-MATERIAL-PROCUREMENT-BASELINE-FIELD-ALIGN-1
|
|
|
+-- 给既有库 ado_s8_order_flow_procurement_pivot 表补两列:impact_count(影响台次)/ kit_rate(准时齐套率),
|
|
|
+-- 并为 BASELINE_PPT 的 XX / YY / ZZ 关键材料 grand 单元(supplier_code=TOTAL && spec_code=TOTAL)回填业务基线值。
|
|
|
+--
|
|
|
+-- 修正范围:
|
|
|
+-- ado_s8_order_flow_procurement_pivot:
|
|
|
+-- 1) 幂等加列 impact_count INT NULL;
|
|
|
+-- 2) 幂等加列 kit_rate DECIMAL(5,4) NULL;
|
|
|
+-- 3) 限定 order_id IS NULL && supplier_code='TOTAL' && spec_code='TOTAL' && is_deleted=0
|
|
|
+-- 分别 UPDATE XX(55, 0.8500) / YY(23, 0.8400) / ZZ(10, 0.9700) 三行。
|
|
|
+--
|
|
|
+-- 安全边界:
|
|
|
+-- * 仅 ALTER TABLE ADD COLUMN(幂等)+ UPDATE(精确 4 条件限定单行)
|
|
|
+-- * 禁 DELETE / TRUNCATE / DROP;表行数保持原 48 行不变
|
|
|
+-- * 不动 cycle_days / status / scenario_code / data_source 等既有字段值
|
|
|
+-- * 不动 ado_s8_order_flow_order / stage / substep / substep_unit / snapshot
|
|
|
+-- * 不动 ado_s8_order_flow_product_design_drawing(产品设计阶段)
|
|
|
+-- * 不动 S0 / .vscode / Database.json / SysMenu
|
|
|
+-- * 不引入 TOTAL material 行(保持现有 3 material × 4 supplier × 4 spec = 48 行结构)
|
|
|
+--
|
|
|
+-- 幂等性:
|
|
|
+-- * ALTER:通过 information_schema.COLUMNS 判断列是否存在,PREPARE/EXECUTE 条件执行
|
|
|
+-- * UPDATE:四条件复合 WHERE 唯一定位 grand 单元,二次执行得到同样结果
|
|
|
+--
|
|
|
+-- 兼容性:
|
|
|
+-- * MySQL 5.7+ / 8.x 通用语法
|
|
|
+--
|
|
|
+-- 验证(阶段 4 重演后必查):
|
|
|
+-- SELECT material_code, impact_count, kit_rate
|
|
|
+-- FROM ado_s8_order_flow_procurement_pivot
|
|
|
+-- WHERE order_id IS NULL
|
|
|
+-- AND supplier_code = 'TOTAL'
|
|
|
+-- AND spec_code = 'TOTAL'
|
|
|
+-- AND is_deleted = 0
|
|
|
+-- ORDER BY material_code;
|
|
|
+-- → 3 行:XX=55/0.8500,YY=23/0.8400,ZZ=10/0.9700
|
|
|
+-- 2026-05-25
|
|
|
+
|
|
|
+
|
|
|
+-- ─── 1) 幂等加列:impact_count ───
|
|
|
+SET @col_exists := (
|
|
|
+ SELECT COUNT(*) FROM information_schema.COLUMNS
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 'ado_s8_order_flow_procurement_pivot'
|
|
|
+ AND COLUMN_NAME = 'impact_count'
|
|
|
+);
|
|
|
+SET @sql := IF(@col_exists = 0,
|
|
|
+ 'ALTER TABLE `ado_s8_order_flow_procurement_pivot` ADD COLUMN `impact_count` INT NULL COMMENT ''影响台次''',
|
|
|
+ 'SELECT 1');
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
+
|
|
|
+
|
|
|
+-- ─── 2) 幂等加列:kit_rate ───
|
|
|
+SET @col_exists := (
|
|
|
+ SELECT COUNT(*) FROM information_schema.COLUMNS
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 'ado_s8_order_flow_procurement_pivot'
|
|
|
+ AND COLUMN_NAME = 'kit_rate'
|
|
|
+);
|
|
|
+SET @sql := IF(@col_exists = 0,
|
|
|
+ 'ALTER TABLE `ado_s8_order_flow_procurement_pivot` ADD COLUMN `kit_rate` DECIMAL(5,4) NULL COMMENT ''准时齐套率''',
|
|
|
+ 'SELECT 1');
|
|
|
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
|
|
+
|
|
|
+
|
|
|
+-- ─── 3) 回填 BASELINE_PPT grand 单元(每条 UPDATE 精确命中 1 行) ───
|
|
|
+UPDATE `ado_s8_order_flow_procurement_pivot`
|
|
|
+ SET `impact_count` = 55,
|
|
|
+ `kit_rate` = 0.8500
|
|
|
+ WHERE `order_id` IS NULL
|
|
|
+ AND `material_code` = 'XX'
|
|
|
+ AND `supplier_code` = 'TOTAL'
|
|
|
+ AND `spec_code` = 'TOTAL'
|
|
|
+ AND `is_deleted` = 0;
|
|
|
+
|
|
|
+UPDATE `ado_s8_order_flow_procurement_pivot`
|
|
|
+ SET `impact_count` = 23,
|
|
|
+ `kit_rate` = 0.8400
|
|
|
+ WHERE `order_id` IS NULL
|
|
|
+ AND `material_code` = 'YY'
|
|
|
+ AND `supplier_code` = 'TOTAL'
|
|
|
+ AND `spec_code` = 'TOTAL'
|
|
|
+ AND `is_deleted` = 0;
|
|
|
+
|
|
|
+UPDATE `ado_s8_order_flow_procurement_pivot`
|
|
|
+ SET `impact_count` = 10,
|
|
|
+ `kit_rate` = 0.9700
|
|
|
+ WHERE `order_id` IS NULL
|
|
|
+ AND `material_code` = 'ZZ'
|
|
|
+ AND `supplier_code` = 'TOTAL'
|
|
|
+ AND `spec_code` = 'TOTAL'
|
|
|
+ AND `is_deleted` = 0;
|