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