配套需求方案:
docs/mes_bag_code_package_refactor_requirements.md。本方案覆盖接口变更与页面数据带入,前端主体改动已随本次改造同步完成,供联调回归使用。
/mdm/item/get 取 unitMeasureId,再查 /mdm/unit/get?id= 取 type):48千克/100千克 → 输入**托盘数**,预览「每托 N 袋 × 托盘数 = 袋码数」吨 → 输入**袋码数**(无托盘)GET /mes/pro/pallet/unbound-list,展示临时托盘码+已装袋数):勾选后批次状态直接为**生产中**,后端同事务复用托盘绑定批次逻辑(托盘升正式码、托盘下袋码级联录入),任一校验失败整体回滚;编辑时仅需勾选本次新增的托盘(已绑定托盘不在下拉中、不可解绑)。| 方法 | 路径 | 变更 |
|---|---|---|
| POST | /mes/pro/bag-code/generate | 请求/响应结构变更(见下) |
| POST | /mes/pro/bag-code/raw-generate | 新增:生成原始袋码,请求 { itemId, count, remark? };仅按数量生成、不换算计量单位类型、不生成托盘;响应结构同 generate(type/perPallet 为空、palletIds 空数组) |
| PUT | /mes/pro/bag-code/bind-batch | 路径不变;新增品种一致校验、托盘级联绑定;已导出印刷(PRINTED)袋码也允许录入批次 |
| PUT | /mes/pro/pallet/bind-batch | 路径不变;托盘绑定批次时,托盘下未绑批次的袋码自动级联录入同一批次(品种一致校验、回写批次袋数) |
| DELETE | /mes/pro/bag-code/delete-by-uuid | 路径不变;级联删除本组自动生成托盘 |
| POST | /mes/pro/bag-code/replace | 不变;新袋码自动继承原品种 |
| GET | /mes/pro/bag-code/page、list-by-uuid、get-by-code | 响应新增品种字段;page 新增可选查询参数 itemId(品种,等值匹配;导出 Excel 同口径) |
| POST | /mes/pro/pallet/batch-create、pre-generate | 请求去掉 capacity |
| GET | /mes/pro/pallet/page | 响应去掉 capacity,保留 autoGenerated |
| POST/PUT | /mes/pro/batch/create、update、fill-info | 请求去掉 itemId;三者均新增可选 palletIds(绑定时批次进入生产中) |
| GET | /mes/pro/pallet/unbound-list | 新增:未绑定批次的临时托盘列表(权限 mes:pro-pallet:query),供批次新增/补录绑定托盘下拉 |
| GET | /mes/pro/batch/page、get、simple-list | 响应去掉 itemId/itemCode/itemName/itemSpecification |
生成数据包请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| itemId | Long | 是 | 品种编号 |
| palletCount | Integer | 条件必填 | 托盘数(类型=N千克) |
| bagCount | Integer | 条件必填 | 袋码数(类型=吨) |
| remark | String | 否 | 备注 |
生成数据包响应示例:
{
"code": 0,
"data": {
"uuid": "生成组UUID",
"type": "48千克",
"perPallet": 48,
"totalCount": 96,
"palletIds": [101, 102]
}
}
| 字段 | 展示位置 | 说明 |
|---|---|---|
| 品种编码/名称(itemCode/itemName) | 袋码列表、追溯、导出 Excel | 生成时绑定在袋码上 |
| autoGenerated | 托盘列表「自动生成」Tag | 数据包自动创建的托盘标识 |
| 品种(批次页) | 不再展示 | 表单/列表/搜索均已移除 |
| 场景 | 规则 |
|---|---|
| 类型=N千克 生成 | 袋码数 = N × 托盘数,自动建 N 个托盘并均分绑定 |
| 类型=吨 生成 | 无托盘,袋码仅绑批次 |
| 生成原始袋码 | 仅需品种+数量;袋码带品种、不绑批次/托盘,后续录入批次、绑托盘、导出印刷、删除组与数据包袋码完全一致;不校验品种计量单位类型 |
| 录入批次混品种 | 报错「录入批次的袋码必须属于同一品种」(与批次已有袋码一并校验) |
| 托盘绑定批次 | 托盘下未绑批次的袋码(已生成/已导出印刷)自动随托盘录入同一批次,袋码冗余托盘码同步更新为正式码 |
| 批次新增/补录/编辑绑定托盘 | palletIds 非空时批次状态直接置「生产中」,同事务复用托盘绑定批次逻辑(正式码+袋码级联+品种一致校验),失败整体回滚;新增/补录未勾选则维持草稿;编辑取消勾选不回退状态、已绑定托盘不可解绑 |
| 绑托盘容量 | 无上限,自动托盘可继续手动绑入 |
| 删除数据包 | 组内托盘已绑批次或有正式码则不可删,否则级联删自动托盘 |
| 追溯品种 | 优先袋码品种;历史袋码回退批次品种(公共 H5 同步支持) |
| 批次号 | PC + yyyyMMdd + 产线编码 + 流水号(不再含品种编码) |
generate 旧参数 count 已废弃,只传 palletCount 或 bagCount(按品种类型二选一)。itemId 相关字段已从接口移除,勿再引用(批次追溯视图 get-by-code 的品种字段保留,可能为空=新批次)。capacity 供历史数据展示,新托盘为空。palletIds 在 create/update/fill-info 均生效;下拉每次打开弹窗重新拉取 unbound-list,若提交时所选托盘已被他人绑定,后端整体报错回滚(本次批次操作不生效),提示用户刷新重试。/page)后端已改为**创建时间倒序**(同秒内按编号倒序),前端无需再传排序参数;导出 Excel 同口径。MdmItemSelect,可清空),传 itemId 等值过滤;导出 Excel 携带同一查询条件同口径生效。历史空白袋码品种为空,按品种筛选不会命中。