# MDM 主数据模块改造计划 ## 一、改造背景 当前 ERP、MES、WMS 三个模块各自维护产品/物料数据,存在数据孤岛问题: - **ERP**:维护产品数据(erp_product)、产品分类(erp_product_category)、计量单位(erp_product_unit) - **MES**:维护物料数据(mes_md_item)、物料分类(mes_md_item_type)、计量单位(mes_md_unit_measure) - **WMS**:维护商品数据(wms_item)、商品分类(wms_item_category)、品牌(wms_item_brand)、SKU(wms_item_sku) 改造目标:将基础产品数据统一到 MDM 模块管理,三个模块通过 API 调用获取数据。 --- ## 二、改造阶段规划 ### 第一阶段:基础数据迁移(预计 1 天) **目标**:完成分类、单位、品牌等基础数据的迁移 | 序号 | 任务 | 模块 | 优先级 | |------|------|------|--------| | 1.1 | 迁移 ERP 产品分类到 MDM 物料分类 | ERP | P0 | | 1.2 | 迁移 MES 物料分类到 MDM 物料分类 | MES | P0 | | 1.3 | 迁移 WMS 商品分类到 MDM 物料分类 | WMS | P0 | | 1.4 | 迁移 ERP 计量单位到 MDM 计量单位 | ERP | P0 | | 1.5 | 迁移 MES 计量单位到 MDM 计量单位 | MES | P0 | | 1.6 | 迁移 WMS 商品品牌到 MDM 品牌 | WMS | P0 | **产出物**: - SQL 数据迁移脚本 - 前端变更文档 --- ### 第二阶段:物料数据迁移(预计 1 天) **目标**:完成物料/产品主数据迁移 | 序号 | 任务 | 模块 | 优先级 | |------|------|------|--------| | 2.1 | 迁移 MES 物料到 MDM(itemType=1 物料) | MES | P0 | | 2.2 | 迁移 ERP 产品到 MDM(itemType=2 产品) | ERP | P0 | | 2.3 | 迁移 WMS 商品到 MDM | WMS | P0 | | 2.4 | 创建物料 SKU 数据 | MDM | P0 | **产出物**: - SQL 数据迁移脚本 - 前端变更文档 --- ### 第三阶段:模块适配改造(预计 4 天) **目标**:ERP/MES/WMS 模块适配 MDM 数据源 | 序号 | 任务 | 模块 | 优先级 | |------|------|------|--------| | 3.1 | ERP 模块引用 MDM API,修改 Service 层 | ERP | P0 | | 3.2 | ERP 模块修改 Controller 层响应结构 | ERP | P1 | | 3.3 | MES 模块引用 MDM API,修改 Service 层 | MES | P0 | | 3.4 | MES 模块修改 Controller 层响应结构 | MES | P1 | | 3.5 | WMS 模块引用 MDM API,修改 Service 层 | WMS | P0 | | 3.6 | WMS 模块修改 Controller 层响应结构 | WMS | P1 | **产出物**: - 后端代码改造 - 前端变更文档 --- ### 第四阶段:前端适配(预计 3 天) **目标**:前端页面适配新数据结构 | 序号 | 任务 | 模块 | 优先级 | |------|------|------|--------| | 4.1 | ERP 产品管理页面适配 | ERP | P1 | | 4.2 | MES 物料管理页面适配 | MES | P1 | | 4.3 | WMS 商品管理页面适配 | WMS | P1 | | 4.4 | 各模块选择器组件适配 | 全部 | P1 | **产出物**: - 前端代码改造 - 前端变更文档 --- ## 三、数据字段映射 ### 3.1 ERP 产品 → MDM 物料 | ERP 字段 | MDM 字段 | 说明 | |----------|----------|------| | id | id | 产品编号 | | name | name | 产品名称 | | barCode | barCode | 产品条码 | | categoryId | categoryId | 分类编号 | | unitId | unitMeasureId | 单位编号 | | standard | specification | 规格型号 | | status | status | 状态 | | purchasePrice | purchasePrice | 采购价格 | | salePrice | salesPrice | 销售价格 | | minPrice | minPrice | 最低价格 | | expiryDay | expiryDay | 保质期天数 | | weight | weight | 重量 | | remark | remark | 备注 | | - | itemType = 2 | 产品类型 | ### 3.2 MES 物料 → MDM 物料 | MES 字段 | MDM 字段 | 说明 | |----------|----------|------| | id | id | 物料编号 | | code | code | 物料编码 | | name | name | 物料名称 | | specification | specification | 规格型号 | | itemTypeId | categoryId | 分类编号 | | unitMeasureId | unitMeasureId | 单位编号 | | status | status | 状态 | | minStock | minStock | 最低库存 | | maxStock | maxStock | 最高库存 | | batchFlag | isBatchManaged | 是否批次管理 | | highValue | highValue | 是否高值物料 | | safeStockFlag | - | 是否启用安全库存(转为 safetyStock 计算) | | remark | remark | 备注 | | - | itemType = 1 | 物料类型 | ### 3.3 WMS 商品 → MDM 物料 | WMS 字段 | MDM 字段 | 说明 | |----------|----------|------| | id | id | 商品编号 | | code | code | 商品编码 | | name | name | 商品名称 | | unit | - | 单位(需关联 MDM 单位) | | categoryId | categoryId | 分类编号 | | brandId | brandId | 品牌编号 | | remark | remark | 备注 | | - | itemType = 1 | 默认物料类型 | ### 3.4 WMS SKU → MDM SKU | WMS SKU 字段 | MDM SKU 字段 | 说明 | |--------------|--------------|------| | id | id | SKU 编号 | | itemId | itemId | 物料编号 | | code | code | SKU 编码 | | name | name | SKU 名称 | | barCode | barCode | SKU 条码 | | length | length | 长度 | | width | width | 宽度 | | height | height | 高度 | | grossWeight | grossWeight | 毛重 | | netWeight | netWeight | 净重 | | costPrice | costPrice | 成本价 | | sellingPrice | salePrice | 销售价 | --- ## 四、注意事项 1. **数据合并策略**:分类、单位等基础数据可能存在重复,需按编码去重合并 2. **ID 兼容**:迁移后保持原 ID 不变,避免关联失效 3. **向后兼容**:原模块 API 保留,内部调用 MDM API 实现 4. **数据验证**:每阶段完成后进行数据完整性验证 --- ## 五、风险评估 | 风险项 | 风险等级 | 应对措施 | |--------|----------|----------| | 数据合并冲突 | 中 | 制定合并规则,人工审核冲突数据 | | 前端适配遗漏 | 中 | 编写详细变更文档,逐页面核对 | | 性能下降 | 低 | MDM API 增加缓存机制 | --- ## 六、产出物清单 | 文件 | 说明 | 路径 | |------|------|------| | mdm_migration_plan.md | 改造计划总文档 | docs/ | | mdm_migration_01_basic_data.sql | 第一阶段 SQL:基础数据迁移 | docs/sql/ | | mdm_migration_02_item_data.sql | 第二阶段 SQL:物料数据迁移 | docs/sql/ | | mdm_frontend_change_phase1.md | 第一阶段前端变更文档 | docs/ | | mdm_frontend_change_phase2.md | 第二阶段前端变更文档 | docs/ | | mdm_frontend_change.md | MDM API 总览文档 | docs/ | --- ## 七、进度跟踪 | 阶段 | 开始日期 | 结束日期 | 状态 | 完成率 | |------|----------|----------|------|--------| | 第一阶段 | SQL脚本已准备 | - | ✅ 已完成(需手动执行SQL) | 100% | | 第二阶段 | SQL脚本已准备 | - | ✅ 已完成(需手动执行SQL) | 100% | | 第三阶段 | 后端代码改造完成 | - | ✅ 已完成 | 100% | | 第四阶段 | - | - | ❌ 未开始(需前端开发) | 0% | --- ## 八、改造详情 ### 第一阶段完成情况 | 序号 | 任务 | 状态 | |------|------|------| | 1.1 | 迁移 ERP 产品分类到 MDM 物料分类 | ✅ SQL脚本已准备 | | 1.2 | 迁移 MES 物料分类到 MDM 物料分类 | ✅ SQL脚本已准备 | | 1.3 | 迁移 WMS 商品分类到 MDM 物料分类 | ✅ SQL脚本已准备 | | 1.4 | 迁移 ERP 计量单位到 MDM 计量单位 | ✅ SQL脚本已准备 | | 1.5 | 迁移 MES 计量单位到 MDM 计量单位 | ✅ SQL脚本已准备 | | 1.6 | 迁移 WMS 商品品牌到 MDM 品牌 | ✅ SQL脚本已准备 | **产出物**:`docs/sql/mdm_migration_01_basic_data.sql` ### 第二阶段完成情况 | 序号 | 任务 | 状态 | |------|------|------| | 2.1 | 迁移 MES 物料到 MDM(itemType=1 物料) | ✅ SQL脚本已准备 | | 2.2 | 迁移 ERP 产品到 MDM(itemType=2 产品) | ✅ SQL脚本已准备 | | 2.3 | 迁移 WMS 商品到 MDM | ✅ SQL脚本已准备 | | 2.4 | 创建物料 SKU 数据 | ✅ SQL脚本已准备 | **产出物**:`docs/sql/mdm_migration_02_item_data.sql` ### 第三阶段完成情况 | 序号 | 任务 | 状态 | |------|------|------| | 3.1 | ERP 模块引用 MDM API,修改 Service 层 | ✅ 已完成 | | 3.2 | ERP 模块修改 Controller 层响应结构 | ✅ 保持原结构,无需修改 | | 3.3 | MES 模块引用 MDM API,修改 Service 层 | ✅ 已完成 | | 3.4 | MES 模块修改 Controller 层响应结构 | ✅ 保持原结构,无需修改 | | 3.5 | WMS 模块引用 MDM API,修改 Service 层 | ✅ 已完成 | | 3.6 | WMS 模块修改 Controller 层响应结构 | ✅ 保持原结构,无需修改 | **改动文件**: - `yudao-module-erp/pom.xml` - 添加 MDM 依赖 - `yudao-module-erp/.../ErpProductServiceImpl.java` - 改为调用 MDM API - `yudao-module-mes/pom.xml` - 添加 MDM 依赖 - `yudao-module-mes/.../MesMdItemServiceImpl.java` - 改为调用 MDM API - `yudao-module-wms/pom.xml` - 添加 MDM 依赖 - `yudao-module-wms/.../WmsItemServiceImpl.java` - 改为调用 MDM API - `yudao-module-mdm/.../MdmItemRespDTO.java` - 添加 minStock、maxStock 字段 ### 第四阶段待办事项 | 序号 | 任务 | 状态 | 备注 | |------|------|------|------| | 4.1 | ERP 产品管理页面适配 | ❌ 待开始 | 需前端开发 | | 4.2 | MES 物料管理页面适配 | ❌ 待开始 | 需前端开发 | | 4.3 | WMS 商品管理页面适配 | ❌ 待开始 | 需前端开发 | | 4.4 | 各模块选择器组件适配 | ❌ 待开始 | 需前端开发 | **前端变更文档**: - `docs/mdm_frontend_change_phase1.md` - `docs/mdm_frontend_change_phase2.md`