-- ────────────────────────────────────────────────────────────────────── -- 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;