编辑 | blame | 历史 | 原始文档

MDM 与 MES 物料双向同步 - 前端联调方案

涉及页面

  • MDM 模块:物料主数据列表页、物料新增/编辑页
  • MES 模块:物料产品列表页、物料产品新增/编辑页

业务流程说明

双向同步关系

MDM 物料 ←――――――→ MES 物料
    ↑                  ↑
    | syncMes=true     | syncMdm=true
    └──────────────────┘
操作端 同步触发条件 同步目标
MDM 新增/编辑物料 syncMes = true MES mes_md_item + mes_md_item_batch_config
MES 新增/编辑物料 syncMdm = true MDM mdm_item + mdm_item_batch_config

批次属性字段(7个必填项)

字段 中文名 说明
produceDateFlag 生产日期必填 入库时是否必填生产日期
expireDateFlag 有效期必填 入库时是否必填有效期
receiptDateFlag 入库日期必填 入库时是否必填入库日期
vendorFlag 供应商必填 入库时是否必填供应商
purchaseOrderCodeFlag 采购订单号必填 入库时是否必填采购订单号
lotNumberFlag 生产批号必填 入库时是否必填生产批号
qualityStatusFlag 质量状态必填 入库时是否必填质量状态

API

1. MDM 物料新增/编辑

方法 路径 说明
POST /admin-api/mdm/item/create 新增 MDM 物料
PUT /admin-api/mdm/item/update 编辑 MDM 物料

请求参数(MdmItemSaveReqVO):

参数 类型 必填 说明
id Long 物料编号(编辑时必填)
code String 物料编码
name String 物料名称
specification String 规格型号
categoryId Long 分类ID(关联 MES 物料分类)
unitMeasureId Long 计量单位ID
itemType Integer 物料类型:1原料, 2半成品, 3成品, 4辅料
status Integer 状态:0启用, 1禁用
minStock BigDecimal 最低库存
maxStock BigDecimal 最高库存
isBatchManaged Boolean 是否批次管理
isHighValue Boolean 是否高值物料
remark String 备注
syncMes Boolean 是否同步到 MES
produceDateFlag Boolean 生产日期必填
expireDateFlag Boolean 有效期必填
receiptDateFlag Boolean 入库日期必填
vendorFlag Boolean 供应商必填
purchaseOrderCodeFlag Boolean 采购订单号必填
lotNumberFlag Boolean 生产批号必填
qualityStatusFlag Boolean 质量状态必填

响应:

{
  "code": 0,
  "msg": "操作成功",
  "data": 123  // 物料ID
}

2. MES 物料新增/编辑

方法 路径 说明
POST /admin-api/mes/md-item/create 新增 MES 物料
PUT /admin-api/mes/md-item/update 编辑 MES 物料

请求参数(MesMdItemSaveReqVO):

参数 类型 必填 说明
id Long 物料编号(编辑时必填)
code String 物料编码
name String 物料名称
specification String 规格型号
unitMeasureId Long 计量单位ID
itemTypeId Long 物料分类ID
safeStockFlag Boolean 是否启用安全库存
minStock BigDecimal 最低库存
maxStock BigDecimal 最高库存
highValue Boolean 是否高值物料
batchFlag Boolean 是否批次管理
remark String 备注
syncMdm Boolean 是否同步到 MDM

响应:

{
  "code": 0,
  "msg": "操作成功",
  "data": 456  // 物料ID
}

3. MES 批次属性配置保存

方法 路径 说明
POST /admin-api/mes/md-item-batch-config/create 新增批次配置
PUT /admin-api/mes/md-item-batch-config/update 编辑批次配置

请求参数(MesMdItemBatchConfigSaveReqVO):

参数 类型 必填 说明
id Long 配置ID(编辑时必填)
itemId Long 物料ID
produceDateFlag Boolean 生产日期必填
expireDateFlag Boolean 有效期必填
receiptDateFlag Boolean 入库日期必填
vendorFlag Boolean 供应商必填
purchaseOrderCodeFlag Boolean 采购订单号必填
lotNumberFlag Boolean 生产批号必填
qualityStatusFlag Boolean 质量状态必填

响应:

{
  "code": 0,
  "msg": "操作成功",
  "data": 789  // 配置ID
}

前端修改点

1. MDM 物料新增/编辑页面

1.1 表单字段新增

在物料表单中新增以下字段:

字段 控件类型 展示条件 说明
syncMes Switch 开关 始终显示 是否同步到 MES
批次属性配置 分组标题 isBatchManaged = true 时显示 批次属性必填配置
produceDateFlag Switch 开关 isBatchManaged = true 时显示 生产日期必填
expireDateFlag Switch 开关 isBatchManaged = true 时显示 有效期必填
receiptDateFlag Switch 开关 isBatchManaged = true 时显示 入库日期必填
vendorFlag Switch 开关 isBatchManaged = true 时显示 供应商必填
purchaseOrderCodeFlag Switch 开关 isBatchManaged = true 时显示 采购订单号必填
lotNumberFlag Switch 开关 isBatchManaged = true 时显示 生产批号必填
qualityStatusFlag Switch 开关 isBatchManaged = true 时显示 质量状态必填

1.2 数据结构

data() {
  return {
    form: {
      // 原有字段...
      syncMes: false,
      // 批次属性配置
      produceDateFlag: false,
      expireDateFlag: false,
      receiptDateFlag: false,
      vendorFlag: false,
      purchaseOrderCodeFlag: false,
      lotNumberFlag: false,
      qualityStatusFlag: false
    }
  }
}

1.3 提交逻辑

提交时将所有字段一起提交到 /admin-api/mdm/item/create/admin-api/mdm/item/update

注意事项:
- 当 isBatchManaged = true 时,显示批次属性配置区域
- 后端会自动将批次配置保存到 mdm_item_batch_config
- 当 syncMes = true 时,后端会同步物料和批次配置到 MES


2. MES 物料新增/编辑页面

2.1 表单字段新增

在物料表单中新增以下字段:

字段 控件类型 展示条件 说明
syncMdm Switch 开关 始终显示 是否同步到 MDM

2.2 数据结构

data() {
  return {
    form: {
      // 原有字段...
      syncMdm: false
    }
  }
}

2.3 提交逻辑

提交时将 syncMdm 字段一起提交。

注意事项:
- 当 syncMdm = true 时,后端会同步物料和批次配置到 MDM
- MES 的批次配置通过单独的批次配置页面维护(已有功能)


3. MES 批次属性配置页面(已有功能,无需修改)

该页面已有,用于配置 MES 物料的批次属性必填项。当 MES 物料同步到 MDM 时,会自动带上这些配置。


字段展示规则

MDM 物料列表页

字段 展示位置 说明
code 列表、详情 物料编码
name 列表、详情 物料名称
specification 列表、详情 规格型号
itemType 列表、详情 物料类型(需转换显示:1原料, 2半成品, 3成品, 4辅料)
status 列表、详情 状态
isBatchManaged 列表、详情 是否批次管理
syncMes 详情 是否已同步到 MES(根据是否有对应 MES 物料判断)

MES 物料列表页

字段 展示位置 说明
code 列表、详情 物料编码
name 列表、详情 物料名称
specification 列表、详情 规格型号
itemTypeName 列表、详情 物料分类名称
batchFlag 列表、详情 是否批次管理
syncMdm 详情 是否已同步到 MDM(根据是否有对应 MDM 物料判断)

业务规则说明

同步规则

场景 规则
MDM 新增物料 + syncMes=true 创建 MDM 物料 → 同步创建 MES 物料和批次配置
MDM 编辑物料 + syncMes=true 更新 MDM 物料 → 同步更新 MES 物料和批次配置(按 code 匹配)
MES 新增物料 + syncMdm=true 创建 MES 物料 → 同步创建 MDM 物料和批次配置
MES 编辑物料 + syncMdm=true 更新 MES 物料 → 同步更新 MDM 物料和批次配置(按 code 匹配)

批次配置同步规则

场景 规则
MDM → MES 同步 将 MDM 的 mdm_item_batch_config 同步到 MES 的 mes_md_item_batch_config
MES → MDM 同步 将 MES 的 mes_md_item_batch_config 同步到 MDM 的 mdm_item_batch_config

字段映射规则

MDM 字段 MES 字段 说明
code code 物料编码,唯一标识
name name 物料名称
specification specification 规格型号
unitMeasureId (MDM 单位ID) unitMeasureId (MES 单位ID) 通过单位编码转换
categoryId (MDM 分类ID) itemTypeId (MES 分类ID) 通过分类编码转换
itemType itemOrProduct 1/2/4→ITEM, 3→PRODUCT
isBatchManaged batchFlag 是否批次管理
isHighValue highValue 是否高值物料
minStock minStock 最低库存
maxStock maxStock 最高库存

物料类型映射

MDM itemType MDM 说明 MES itemOrProduct MES 说明
1 原料 ITEM 物料
2 半成品 ITEM 物料
3 成品 PRODUCT 产品
4 辅料 ITEM 物料

注意事项

  1. 同步失败处理:同步操作与物料保存是同一事务,如果同步失败,整个保存操作会回滚。

  2. 编码唯一性:物料编码(code)在 MDM 和 MES 中都必须唯一,同步时按 code 进行匹配(存在则更新,不存在则新增)。

  3. 单位/分类映射:MDM 和 MES 的单位、分类是两套独立的主数据,同步时通过编码(code)进行映射,确保两边有相同的编码数据。

  4. 批次配置同步时机

  • MDM 保存物料时,批次配置保存到本地 mdm_item_batch_config
  • 如果 syncMes=true,同时同步到 MES 的 mes_md_item_batch_config
  • MES 同理
  1. 前端展示建议
  • 在列表页增加"同步状态"列,显示是否已同步到对方系统
  • 可以通过物料编码查询对方系统是否存在来判断同步状态
  1. 数据一致性
  • 建议在一端维护物料数据后,同步到另一端
  • 避免两边同时编辑同一物料导致数据冲突

调试建议

  1. 首先测试 MDM → MES 同步:创建 MDM 物料,勾选 syncMes,检查 MES 是否生成对应物料
  2. 测试 MES → MDM 同步:创建 MES 物料,勾选 syncMdm,检查 MDM 是否生成对应物料
  3. 测试批次配置同步:在 MDM 设置批次属性,同步后检查 MES 的批次配置是否一致
  4. 检查数据库:
  • MDM 物料:mdm_itemmdm_item_batch_config
  • MES 物料:mes_md_itemmes_md_item_batch_config