# MDM 物料批次属性配置 - 前端联调方案 ## 涉及页面 - 基础数据 - 物料产品列表页 - 物料详情/编辑页 - MES 生产 - 物料产品详情页 ## 业务场景 当物料启用批次管理(`isBatchManaged = true`)时,需要配置批次属性,定义创建批次时哪些字段是必填的。 **批次属性字段(仅保留以下7个):** | 字段 | 说明 | |------|------| | 生产日期 | 批次的生产日期 | | 有效期 | 批次的失效日期 | | 入库日期 | 批次的入库日期 | | 供应商 | 批次的供应商 | | 采购订单编号 | 批次的采购订单号 | | 生产批号 | 批次的批号 | | 质量状态 | 批次的质量状态 | ## 双向同步说明 ``` ┌─────────────────────────────────────────────────────────────┐ │ 批次配置双向同步 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ MDM 物料页面 ←────────────────→ MES 物料页面 │ │ │ │ │ │ ▼ ▼ │ │ mdm_item_batch_config ←─────────→ mes_md_item_batch_config │ │ │ │ │ │ └──────────主存储──────────────────┘ │ │ │ │ 说明: │ │ - MDM 表是主存储,MES 表是镜像 │ │ - 任意一方修改,自动同步到另一方 │ │ - 查询时优先从 MDM 表获取 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ## API ### 获取物料批次配置 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/mes/md/item-batch-config/get-by-item-id` | 根据物料ID获取批次配置 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | itemId | Long | 是 | 物料ID | **响应:** ```json { "code": 0, "data": { "id": 1, "itemId": 8, "produceDateFlag": true, "expireDateFlag": true, "receiptDateFlag": false, "vendorFlag": true, "purchaseOrderCodeFlag": false, "lotNumberFlag": true, "qualityStatusFlag": false }, "msg": "操作成功" } ``` **响应字段说明:** | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 配置ID | | itemId | Long | 物料ID | | produceDateFlag | Boolean | 生产日期必填 | | expireDateFlag | Boolean | 有效期必填 | | receiptDateFlag | Boolean | 入库日期必填 | | vendorFlag | Boolean | 供应商必填 | | purchaseOrderCodeFlag | Boolean | 采购订单号必填 | | lotNumberFlag | Boolean | 生产批号必填 | | qualityStatusFlag | Boolean | 质量状态必填 | ### 保存物料批次配置 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/mes/md/item-batch-config/save` | 保存批次配置(新增/更新) | **请求参数:** ```json { "itemId": 8, "produceDateFlag": true, "expireDateFlag": true, "receiptDateFlag": false, "vendorFlag": true, "purchaseOrderCodeFlag": false, "lotNumberFlag": true, "qualityStatusFlag": false } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | itemId | Long | 是 | 物料ID | | produceDateFlag | Boolean | 否 | 生产日期必填,默认 false | | expireDateFlag | Boolean | 否 | 有效期必填,默认 false | | receiptDateFlag | Boolean | 否 | 入库日期必填,默认 false | | vendorFlag | Boolean | 否 | 供应商必填,默认 false | | purchaseOrderCodeFlag | Boolean | 否 | 采购订单号必填,默认 false | | lotNumberFlag | Boolean | 否 | 生产批号必填,默认 false | | qualityStatusFlag | Boolean | 否 | 质量状态必填,默认 false | **响应:** ```json { "code": 0, "data": 1, "msg": "操作成功" } ``` ## 前端修改点 ### 1. 物料详情/编辑页 在物料详情页增加"批次属性配置"区块。 **展示条件:** - 当物料的 `isBatchManaged = true` 时显示该配置区块 - 当物料的 `isBatchManaged = false` 时隐藏该配置区块 ### 2. 批次属性配置表单 **表单字段(仅7个):** | 字段 | 控件类型 | 说明 | |------|----------|------| | 生产日期 | el-checkbox | 勾选表示创建批次时必填 | | 有效期 | el-checkbox | 勾选表示创建批次时必填 | | 入库日期 | el-checkbox | 勾选表示创建批次时必填 | | 供应商 | el-checkbox | 勾选表示创建批次时必填 | | 采购订单号 | el-checkbox | 勾选表示创建批次时必填 | | 生产批号 | el-checkbox | 勾选表示创建批次时必填 | | 质量状态 | el-checkbox | 勾选表示创建批次时必填 | **建议布局:** ``` ┌─────────────────────────────────────────────────────────────┐ │ 批次属性配置 │ ├─────────────────────────────────────────────────────────────┤ │ ☑ 生产日期 ☑ 有效期 ☐ 入库日期 ☑ 供应商 │ │ ☐ 采购订单号 ☑ 生产批号 ☐ 质量状态 │ └─────────────────────────────────────────────────────────────┘ ``` ### 3. 数据加载逻辑 **进入物料详情页时:** 1. 加载物料基本信息 2. 判断 `isBatchManaged` 是否为 `true` 3. 如果是,调用 `GET /mes/md/item-batch-config/get-by-item-id?itemId={物料ID}` 获取配置 4. 渲染配置表单,将返回的配置数据绑定到表单 **保存物料时:** 1. 先保存物料基本信息 2. 如果 `isBatchManaged = true`,调用 `POST /mes/md/item-batch-config/save` 保存批次配置 ### 4. 推荐默认配置 对于常见的采购物料,推荐默认配置: | 字段 | 推荐 | 说明 | |------|------|------| | 生产日期 | ☑ | 追溯生产时间 | | 有效期 | ☑ | 有保质期的物料 | | 入库日期 | ☐ | 通常自动记录 | | 供应商 | ☑ | 采购物料需要追溯来源 | | 采购订单号 | ☐ | 可选 | | 生产批号 | ☑ | 批次追溯 | | 质量状态 | ☐ | 需要质检时使用 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 物料未启用批次管理 | 不显示批次属性配置区块 | | 物料启用批次管理但无配置 | 创建批次时允许任意字段(宽松模式) | | 物料启用批次管理且有配置 | 创建批次时校验必填字段 | | MDM 修改批次配置 | 自动同步到 MES 表 | | MES 修改批次配置 | 自动同步到 MDM 表 | ## 注意事项 - 批次配置是物料级别的,每个物料独立配置 - 修改批次配置不会影响已创建的批次,只影响后续新创建的批次 - MDM 和 MES 的批次配置会自动双向同步 - 只保留必要的7个批次属性字段,其他字段不再使用