1.0.157.sql 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. -- ──────────────────────────────────────────────────────────────────────
  2. -- S0-PRODUCT-DESIGN-CYCLE-ITEMMASTER-TYPE-LINK-1
  3. -- 字典 s0_material_type 与 ItemMaster.ItemType 真实 RS 编码对齐。
  4. --
  5. -- 1) 禁用旧语义 6 项(raw/semi/finished/aux/fixture/packaging)— 仅当 Status=1 时
  6. -- UPDATE,保留行不物理删除;不覆盖人工恢复。
  7. -- 2) 插入新 9 项 RS 编码(RS11/12/13/14/15/30/50/60/99),label = code(无正式中文映射)。
  8. --
  9. -- 幂等:
  10. -- - 旧码 UPDATE WHERE Status=1 → 第二次执行命中 0 行(Status 已 0)→ 空操作;
  11. -- - 新码 INSERT IGNORE 走 (DictTypeId, Value) UNIQUE 索引(index_SysDictData_TV)防重;
  12. -- - 仅作用于 s0_material_type 字典,不影响 s0_owner_application 或其他字典类型;
  13. -- - 不使用 DROP / TRUNCATE / 无条件 DELETE;不更新 ProductDesignCycle / ItemMaster 业务数据。
  14. -- ──────────────────────────────────────────────────────────────────────
  15. -- 1. 禁用旧 6 项(仅 Status=1 时)
  16. UPDATE `SysDictData`
  17. SET `Status` = 0,
  18. `UpdateTime` = NOW()
  19. WHERE `DictTypeId` = (SELECT `Id` FROM `SysDictType` WHERE `Code` = 's0_material_type')
  20. AND `Value` IN ('raw', 'semi', 'finished', 'aux', 'fixture', 'packaging')
  21. AND `Status` = 1;
  22. -- 2. 插入新 9 项 RS 编码(label=code;走唯一索引幂等)
  23. INSERT IGNORE INTO `SysDictData`
  24. (`Id`, `DictTypeId`, `Label`, `Value`, `OrderNo`, `Status`, `CreateTime`)
  25. SELECT
  26. 1329900100100 + v.ord_offset AS `Id`,
  27. (SELECT `Id` FROM `SysDictType` WHERE `Code` = 's0_material_type') AS `DictTypeId`,
  28. v.code AS `Label`,
  29. v.code AS `Value`,
  30. 100 + v.ord_offset AS `OrderNo`,
  31. 1 AS `Status`,
  32. NOW() AS `CreateTime`
  33. FROM (
  34. SELECT 'RS11' AS code, 0 AS ord_offset UNION ALL
  35. SELECT 'RS12', 1 UNION ALL
  36. SELECT 'RS13', 2 UNION ALL
  37. SELECT 'RS14', 3 UNION ALL
  38. SELECT 'RS15', 4 UNION ALL
  39. SELECT 'RS30', 5 UNION ALL
  40. SELECT 'RS50', 6 UNION ALL
  41. SELECT 'RS60', 7 UNION ALL
  42. SELECT 'RS99', 8
  43. ) v;