# 一袋一码模块:新增产线维护 + 批次恢复品种关联 - 前端联调方案 > 本文档为变更说明,取代 `mes_bag_code_module_decouple.md` 中"移除品种、产线手填"的部分。 > 袋码赋码、托盘码管理两个页面本次**无任何变化**。 ## 功能概述 1. **产线维护(新增页面)**:维护产线主数据(编码、名称、状态、备注),供生产批次下拉选择。 2. **批次恢复品种关联**:批次重新关联 MDM 物料(品种),表单用物料选择器选择。 3. **批次产线改为下拉选择**:批次表单不再手填产线编码/名称,改为从产线维护数据中选择。 4. **批次号规则恢复**:前缀(PC) + 日期(yyyyMMdd) + 产线编码 + 品种编码 + 流水号。 ## 涉及页面 - **一袋一码管理 → 产线维护**(新增页面:列表 + 新增/编辑/详情弹窗) - **一袋一码管理 → 批次生产管理**(表单与列表改造) 菜单已初始化:产线维护菜单挂在「一袋一码管理」下第一位(路由 `/bagcode/line`,组件 `mes/pro/line/index`),按钮权限 `mes:pro-line:query/create/update/delete/export`。 ## API:产线维护(权限前缀 `mes:pro-line`) | 方法 | 路径 | 说明 | 权限 | |------|------|------|------| | POST | /mes/pro/line/create | 创建产线 | mes:pro-line:create | | PUT | /mes/pro/line/update | 更新产线 | mes:pro-line:update | | DELETE | /mes/pro/line/delete | 删除产线 | mes:pro-line:delete | | GET | /mes/pro/line/get | 产线详情 | mes:pro-line:query | | GET | /mes/pro/line/page | 产线分页 | mes:pro-line:query | | GET | /mes/pro/line/simple-list | 产线精简列表(仅启用,供下拉) | 无(登录即可) | | GET | /mes/pro/line/export-excel | 导出产线 Excel | mes:pro-line:export | ### 创建/更新请求参数(POST /create、PUT /update) | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 更新时必填 | 编号 | | code | String | 是 | 产线编码(参与批次号生成,建议 ≤ 8 位) | | name | String | 是 | 产线名称 | | status | Integer | 是 | 状态(字典 common_status:0 启用/1 停用) | | remark | String | 否 | 备注 | ### 分页查询参数(GET /page) code(模糊)、name(模糊)、status、createTime[](创建时间范围)、pageNo/pageSize。 ### 响应字段 | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 编号 | | code | String | 产线编码 | | name | String | 产线名称 | | status | Integer | 状态(字典 common_status) | | remark | String | 备注 | | createTime | String | 创建时间 | simple-list 返回相同结构(仅 id/code/name/remark 有值),且只包含启用状态的产线。 ## 批次接口变更(/mes/pro/batch/*) 接口路径与权限均不变,仅请求/响应字段调整。 ### 创建/更新请求参数变化 | 变化 | 参数 | 类型 | 必填 | 说明 | |------|------|------|------|------| | 新增 | itemId | Long | 是 | 品种(产品物料)编号,选 MDM 物料 | | 新增 | lineId | Long | 是 | 产线编号,选产线维护数据 | | 移除 | lineCode / lineName | — | — | 不再接收,由后端按 lineId 自动回填 | 其余参数不变:produceDate(必填)、planQuantity、ownerUserId(必填)、remark、workers(必填,至少 1 条)。 ### 响应字段新增 | 字段 | 类型 | 说明 | |------|------|------| | itemId | Long | 品种编号 | | itemCode / itemName / itemSpecification | String | 品种编码/名称/规格(后端拼接,展示最新主数据) | | lineId | Long | 产线编号 | lineCode / lineName 仍返回(冗余快照,历史批次不受产线改名影响)。 ### 分页查询参数新增 itemId(品种编号,精确)、lineId(产线编号,精确);原 code/lineCode/lineName/ownerUserId/status/produceDate/createTime 不变。 ## 业务流程与数据带入 1. **先维护产线**:一袋一码管理 → 产线维护 → 新增产线(编码 + 名称 + 状态启用)。 2. **新增批次**:选品种(物料选择器)→ 选产线(仅展示启用的产线)→ 选生产日期、责任人 → 配置生产人员(至少 1 人)。保存后批次号自动生成 = PC + 日期 + 产线编码 + 品种编码 + 流水号。 3. **编辑批次**:变更品种或产线会**自动重新生成批次号**;产线未变更时,即使该产线已被停用,仍可编辑其他字段。 4. **生成袋码/托盘码**:流程不变(选批次 + 数量),批次下拉仅展示批次号。 ## 接口调用时序 | 时机 | 调用 | 说明 | |------|------|------| | 批次表单打开 | GET /mes/pro/line/simple-list | 产线下拉选项(仅启用) | | 批次表单打开 | 物料选择器内部查询 | 品种选择(现有 MdItemSelect 组件) | | 批次列表/详情渲染 | 无需额外调用 | 品种编码/名称/规格由后端拼接返回 | | 产线维护页 | /mes/pro/line/page、create、update、delete | 常规 CRUD | ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | 产线编码/名称/状态/备注 | 产线维护列表、表单 | 状态用字典 common_status | | 品种(编码+名称) | 批次列表 | 后端拼接字段 itemCode/itemName | | 品种 itemId | 批次表单(物料选择器) | 必填 | | 产线 lineId | 批次表单(产线下拉) | 必填,仅启用产线可选 | | 产线编码/名称 | 批次列表、详情 | 冗余快照列,只读 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 产线编码/名称唯一 | 创建、更新时校验,重复报错 | | 产线删除 | 已被生产批次引用的产线不允许删除 | | 产线停用 | 停用后新批次不可选(下拉不展示),已生成的历史批次不受影响 | | 批次号生成 | 前缀 PC + 日期(yyyyMMdd) + 产线编码 + 品种编码 + 流水号(3位按日循环) | | 批次号重新生成 | 编辑批次时品种或产线变化即重新生成 | | 袋码/托盘码 | 规则不变(袋码 = 批次号 + "-" + 4位序号;托盘码 = 批次号 + "-P" + 2位序号) | ## 注意事项 - 产线维护页面已在数据库初始化菜单,前端需新增页面文件(组件路径 `mes/pro/line/index`,组件名 `MesProLine`)。 - 批次表单提交体变为 `{ itemId, lineId, produceDate, planQuantity, ownerUserId, remark, workers }`,**不要再传 lineCode/lineName**。 - 产线下拉务必调用 simple-list(仅启用产线),不要调用 page 接口。 - 品种的编码/名称/规格**不要**存入批次表单,仅传 itemId,展示以批次列表/详情接口返回的拼接字段为准。 - 袋码列表、托盘码列表、扫码追溯页面**不展示品种信息**(品种只关联到批次层)。 - 状态字典统一为 common_status(0 启用/1 停用),无需新增字典。