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

MDM 物料同步到 MES

涉及页面

  • MDM 物料管理 - 新增物料弹窗
  • MDM 物料管理 - 编辑物料弹窗

功能说明

在 MDM 物料「新增 / 编辑」时,新增「同步到 MES」开关。勾选后,MDM 物料保存成功的同时,会自动在 MES 侧创建/更新一条对应的物料产品(mes_md_item),实现主数据向 MES 的同步。

  • 新增(create):勾选同步 → MDM 新建 + MES 新建。
  • 编辑(update):勾选同步 → MDM 更新 + MES 更新(MES 侧按物料编码 code 匹配:已存在则更新,不存在则新建,即 upsert)。
  • 不勾选或 syncMes=false:仅操作 MDM,不影响 MES。

API

接口路径不变,仅在请求体新增 syncMes 字段。

方法 路径 说明
POST /admin-api/mdm/item/create 创建物料(可同步 MES)
PUT /admin-api/mdm/item/update 更新物料(可同步 MES)

请求参数(仅列出新增/相关字段):

参数 类型 必填 说明
syncMes Boolean 是否同步到 MES,默认 false。勾选时触发 MES 同步
code String 物料编码(MDM/MES 关联键,两边须一致)
name String 物料名称
unitMeasureId Long MDM 计量单位 id(同步时按 code 映射到 MES 单位)
categoryId Long MDM 物料分类 id(同步时按 code 映射到 MES 物料分类)

响应: 创建返回 { "code": 200, "data": <物料id> };更新返回 { "code": 200, "data": true }(与原接口一致)。

注意:同步失败时(如 MES 侧找不到对应 code 的单位/分类、或 MES 名称重复等),接口会返回错误,且 MDM 的创建/更新会一并回滚(同一事务)。

前端修改点

1. 表单增加「同步到 MES」开关

在物料新增/编辑表单(mes/pd/...mdm/item 对应表单组件)中新增一个开关:

<el-form-item label="同步到 MES">
  <el-switch v-model="formData.syncMes" />
</el-form-item>

2. data 数据

data() {
  return {
    formData: {
      // ... 原有字段
      syncMes: false, // 是否同步到 MES,默认不勾选
    },
  }
}

编辑回显时,syncMes 默认置为 false(不同步)即可,由用户按需勾选。

3. 提交方法

无需改动提交逻辑,syncMes 随表单一并提交即可:

submitForm() {
  this.$refs['form'].validate(valid => {
    if (!valid) return
    // formData 中已包含 syncMes,正常调用 create / update 接口
    if (this.formData.id) {
      updateItem(this.formData).then(...)
    } else {
      createItem(this.formData).then(...)
    }
  })
}

注意事项

  • 仅 create / update 生效:删除、状态变更不同步 MES。
  • 同步失败会回滚:勾选同步后若 MES 侧出错,MDM 的保存也会回滚,前端会收到错误提示,需根据错误信息处理(通常是 MES 侧缺对应单位/分类)。
  • MES 物料默认禁用:同步创建的 MES 物料状态为「禁用」,需在 MES 物料产品页面另行启用。
  • 前提:单位/分类编码须一致:同步按 code 映射——MDM 的计量单位 code 必须在 MES mes_md_unit_measure 中存在,MDM 的物料分类 code 必须在 MES mes_md_item_type 中存在(且为叶子分类),否则同步报错回滚。请确保两边主数据编码已对齐。
  • 字段映射:MDM isHighValue→MES highValue,MDM isBatchManaged→MES batchFlagminStock/maxStock/specification/remark 直传;MES safeStockFlag 固定为 true 以保留库存上下限。