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

袋码绑定托盘(免先录批次) - 前端联调方案

涉及页面

  • 赋码管理(袋码列表)→ 工具栏「绑定托盘」按钮 + 「袋码绑定托盘」弹窗

口径变更

原「绑定托盘」要求所选袋码先录入生产批次,否则提示「请先录入生产批次,再绑定托盘」。现去掉该前置限制,按勾选袋码的批次状态分流:

所选袋码 可选托盘 绑定结果
均已录入同一批次 该批次的托盘 仅绑定托盘(与改造前一致)
均未录入批次 该品种可用的全部托盘(临时托盘 + 正式托盘) 绑到临时托盘:袋码保持未录入批次;绑到某批次的正式托盘:先自动把袋码补录进该批次,再绑定
混合(部分已录批次、部分未录) — 前端拦截,提示分开操作

解绑不回退批次:袋码因绑托盘而补录进批次后,后续「解绑托盘」只解除托盘关系,批次归属保留,与「编辑批次取消勾选托盘不回退状态」口径一致。

API

方法 路径 说明
GET /mes/pro/pallet/bindable-list 新增:袋码绑定托盘时的可选目标托盘列表(临时托盘 + 正式托盘,排除已作废)
PUT /mes/pro/bag-code/bind-pallet 复用,请求与响应结构不变

请求参数(新增接口):

参数 类型 必填 说明
itemId Long 否 袋码品种编号。传入后仅返回该品种的托盘,以及尚未确定品种的预生成临时托盘(item_id 为空,绑定袋码时回填品种)

响应: MesProPalletRespVO 数组,关键字段:

字段 类型 说明
id Long 托盘编号(提交绑定用)
code String 正式托盘码;临时托盘为空
tempCode String 临时托盘码;code 为空时用它展示
batchId / batchCode Long / String 已绑定的生产批次;临时托盘为空
itemId / itemName Long / String 品种
bagCount Integer 已装袋数
capacity Integer 可装袋数
status Integer 托盘状态(字典 mes_pro_pallet_status),已排除作废(20)

接口调用时序

  1. 用户勾选袋码,点击「绑定托盘」。
  2. 按勾选袋码的批次状态选择托盘数据源:
  • 都已录入同一批次 → GET /mes/pro/pallet/simple-list?batchId=
  • 都未录入批次 → GET /mes/pro/pallet/bindable-list?itemId=,itemId 取所选袋码的品种
  1. 提交 PUT /mes/pro/bag-code/bind-pallet,body 为 { palletId, ids }。

字段展示规则

字段 展示位置 说明
batchCode 弹窗「生产批次」输入框(只读) 已录入批次显示批次号;未录入批次显示「未录入批次」
bagCount 弹窗「绑定袋数」输入框(只读) 本次勾选的袋码数量
code / tempCode 托盘下拉选项 正式托盘取 code,临时托盘回退到 tempCode
batchCode 托盘下拉选项 未录入批次场景下显示「批次 xxx」或「临时托盘」,便于在混合列表中分辨

业务规则说明

场景 规则
袋码已录入批次,托盘同批次 允许
袋码已录入批次,托盘跨批次 拒绝:袋码与托盘不属于同一生产批次,不允许绑定
袋码未录入批次 + 临时托盘 允许;袋码保持未录入批次,后续「录入批次」时按既有级联逻辑把该临时托盘升为正式托盘码
袋码未录入批次 + 某批次正式托盘 允许;后端先复用「录入批次」逻辑把袋码补录进该批次,再绑定托盘
袋码未录入批次 + 非生产中批次 / 未补录批次 拒绝:生产批次不是生产中状态,不允许生成袋码/托盘码;或生产批次尚未补录正式信息
袋码未录入批次 + 品种与批次不一致 拒绝:袋码/托盘必须与批次品种一致
托盘未绑定批次 + 袋码已录入批次 拒绝:所选袋码已录入生产批次,请改选该批次下的托盘
解绑托盘 只解除托盘关系,批次归属不回退

注意事项

  • 「补录批次 + 绑定托盘」在同一事务内完成,任一步校验失败整体回滚,不会出现袋码已进批次但未绑托盘。
  • 未录入批次场景下托盘下拉可能较长,请保持 showSearch 并按袋码品种传 itemId 收窄范围。
  • bindable-list 已排除作废托盘;simple-list 未排除,原有的前端作废过滤需保留。
  • 袋码与托盘必须同品种:bindable-list 按 itemId 过滤,但后端仍会二次校验,前端不必据此做硬拦截。