-- =====================================================
-- MDM 主数据迁移 - 补充：添加缺失的字段
-- 执行顺序：在 mdm_migration_02_item_data.sql 之后执行
-- =====================================================

-- =====================================================
-- 01. 检查并添加 mes_wm_material_stock 表的 item_type_id 字段
-- =====================================================

-- 添加 item_type_id 字段（如果不存在）
-- MySQL 不支持 IF NOT EXISTS 用于 ADD COLUMN，使用存储过程或直接执行
-- 先尝试添加，如果已存在会报错，可以忽略

-- 方式1：直接添加（如果字段已存在会报错，忽略即可）
ALTER TABLE mes_wm_material_stock ADD COLUMN item_type_id bigint DEFAULT NULL COMMENT '物料分类编号' AFTER id;

-- 方式2：如果方式1报错说字段已存在，说明字段已经存在，跳过即可


-- =====================================================
-- 02. 为 item_type_id 创建索引（可选）
-- =====================================================

-- 创建索引（如果不存在）
-- CREATE INDEX idx_item_type_id ON mes_wm_material_stock(item_type_id);


-- =====================================================
-- 03. 更新库存表中的 item_type_id
-- 根据 item_id 关联 mes_md_item 表获取 item_type_id
-- =====================================================

-- 从物料表获取分类ID并更新到库存表
UPDATE mes_wm_material_stock s
INNER JOIN mes_md_item i ON s.item_id = i.id
SET s.item_type_id = i.item_type_id + 10000  -- MDM分类ID偏移10000
WHERE s.item_type_id IS NULL
  AND s.deleted = 0;

-- =====================================================
-- 04. 验证结果
-- =====================================================

-- 查看库存表字段
SELECT * FROM mes_wm_material_stock LIMIT 5;

-- 验证 item_type_id 是否更新
SELECT COUNT(*) AS updated_count
FROM mes_wm_material_stock
WHERE item_type_id IS NOT NULL AND item_type_id >= 10000 AND deleted = 0;
