-- ===================================================================== -- 设备台账联动设备仓:设备物料主数据初始化脚本(MySQL) -- 目标库:mom-xgdl(本地 dev 库)。其它库执行前请核对主键 id 是否冲突。 -- -- 背景: -- 1) MES 设备创建时自动生成对应物料,进入设备仓库存,关联链为: -- mes_dv_machinery.item_id -> mdm_item.id(= mes_md_item.id 对齐) -- 2) 设备物料复用了 MDM/MES 两套主数据,本脚本补齐: -- - 分类/类型:“设备”(mes_md_item_type 与 mdm_item_category 使用同一 id 对齐) -- - 计量单位:“台”(mes_md_unit_measure 与 mdm_unit_measure) -- - 设备仓/库区/库位:SYS-EQUIPMENT / SYS-EQUIP-LOC-01 / SYS-EQUIP-BIN-01 -- (如目标库缺失需另行初始化;代码仅在缺失时给出“主数据未初始化”提示) -- -- 约束:脚本不含 tenant_id;ADD COLUMN 前做存在性检查(MySQL 不支持 IF NOT EXISTS)。 -- ===================================================================== -- 1. mes_dv_machinery 增加 item_id(设备对应物料编号) SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = 'mom-xgdl' AND table_name = 'mes_dv_machinery' AND column_name = 'item_id'); SET @ddl = IF(@col_exists = 0, 'ALTER TABLE `mes_dv_machinery` ADD COLUMN `item_id` BIGINT NULL COMMENT ''对应物料编号(mdm_item.id)'' AFTER `workstation_id`', 'SELECT 1'); PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s; -- 2. MES 物料类型:“设备”(code=EQUIPMENT,作为设备物料的分类/类型) INSERT INTO `mes_md_item_type` (`id`, `code`, `name`, `parent_id`, `item_or_product`, `sort`, `status`) SELECT 100, 'EQUIPMENT', '设备', 0, 'ITEM', 1, 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mes_md_item_type` WHERE `code` = 'EQUIPMENT' AND `deleted` = 0); -- 3. MDM 物料分类:“设备”(id 与 MES 类型 id=100 对齐,代码据此解析 MDM categoryId) INSERT INTO `mdm_item_category` (`id`, `parent_id`, `code`, `name`, `item_type`, `item_or_product`, `sort`, `status`) SELECT 100, 0, 'EQUIPMENT', '设备', 4, 'ITEM', 1, 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mdm_item_category` WHERE `code` = 'EQUIPMENT' AND `deleted` = 0); -- 4. MES 计量单位:“台”(code=TAI) INSERT INTO `mes_md_unit_measure` (`id`, `code`, `name`, `primary_flag`, `primary_id`, `change_rate`, `status`) SELECT 100, 'TAI', '台', 1, NULL, 1, 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mes_md_unit_measure` WHERE `code` = 'TAI' AND `deleted` = 0); -- 5. MDM 计量单位:“台”(code=TAI) INSERT INTO `mdm_unit_measure` (`id`, `code`, `name`, `primary_flag`, `primary_id`, `change_rate`, `status`) SELECT 100, 'TAI', '台', 1, NULL, 1, 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mdm_unit_measure` WHERE `code` = 'TAI' AND `deleted` = 0); -- 说明:若目标库中 id=100 与已有记录冲突,可将上面 4 处 id 调整为同一空闲 id, -- 并保证 mes_md_item_type 与 mdm_item_category 的“设备”行 id 相等(代码据此取 MDM categoryId)。