袋码绑定托盘(免先录批次) - 前端联调方案
涉及页面
- 赋码管理(袋码列表)→ 工具栏「绑定托盘」按钮 + 「袋码绑定托盘」弹窗
口径变更
原「绑定托盘」要求所选袋码先录入生产批次,否则提示「请先录入生产批次,再绑定托盘」。现去掉该前置限制,按勾选袋码的批次状态分流:
| 所选袋码 |
可选托盘 |
绑定结果 |
| 均已录入同一批次 |
该批次的托盘 |
仅绑定托盘(与改造前一致) |
| 均未录入批次 |
该品种可用的全部托盘(临时托盘 + 正式托盘) |
绑到临时托盘:袋码保持未录入批次;绑到某批次的正式托盘:先自动把袋码补录进该批次,再绑定 |
| 混合(部分已录批次、部分未录) |
— |
前端拦截,提示分开操作 |
解绑不回退批次:袋码因绑托盘而补录进批次后,后续「解绑托盘」只解除托盘关系,批次归属保留,与「编辑批次取消勾选托盘不回退状态」口径一致。
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) |
接口调用时序
- 用户勾选袋码,点击「绑定托盘」。
- 按勾选袋码的批次状态选择托盘数据源:
- 都已录入同一批次 →
GET /mes/pro/pallet/simple-list?batchId=
- 都未录入批次 →
GET /mes/pro/pallet/bindable-list?itemId=,itemId 取所选袋码的品种
- 提交
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 过滤,但后端仍会二次校验,前端不必据此做硬拦截。