3 天以前 93327134ed36b2b514ce12af9a5f6b0e773718ad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
-- =====================================================================
-- 设备台账联动设备仓:设备物料主数据初始化脚本(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)。