# MES 销售出库扫码拣货 - 前端联调方案 ## 涉及页面 - 销售出库单详情页 - 销售出库拣货页 - 库存台账查询页 ## 业务流程与数据带入 1. 销售出库单进入“待拣货”状态后,前端扫描袋码或托盘码。 2. 扫描内容调用扫码接口,后端识别码类型并关联生产批次、物料及库存记录。 3. 扫码结果中的库存记录、批次、仓库、库区、库位和数量带入销售出库明细。 4. 扫描完成后继续调用原有“执行拣货”接口,统一创建库存占用;扫码接口不直接扣减库存。 5. 出库单完成时由原有“执行出库”接口扣减库存,并更新库存状态。 ## API | 方法 | 路径 | 说明 | |------|------|------| | POST | `/mes/wm/product-sales/scan` | 扫描袋码或托盘码并生成销售出库明细 | | PUT | `/mes/wm/product-sales/stock?id={id}` | 执行拣货并创建库存占用 | | PUT | `/mes/wm/product-sales/finish?id={id}` | 完成出库并扣减库存 | **扫码请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | salesId | Long | 是 | 销售出库单 ID,单据必须处于待拣货状态 | | scanContent | String | 是 | 袋码或托盘码 | | quantity | BigDecimal | 否 | 本次拣货数量,不填时使用销售行数量 | **扫码响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | scanType | String | `BAG` 袋码,`PALLET` 托盘码 | | codeId | Long | 码记录 ID | | itemId、batchId、batchCode | Long/Long/String | 物料和批次信息 | | materialStockId | Long | 关联库存记录 ID | | availableQuantity | BigDecimal | 当前库存数量 | | scanQuantity、outboundQuantity | BigDecimal | 本次扫描数量和出库数量 | | detailId | Long | 生成的销售出库明细 ID | | warehouseId、locationId、areaId | Long | 库存所在仓库、库区、库位 | | alreadyScanned | Boolean | 重复扫描时为 true,并返回已有明细 ID | | palletExpanded | Boolean | 托盘展开标识 | | bagCount、inboundBagCount | Integer | 托盘袋码总数、已累计袋码数 | | message | String | 操作提示 | ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | scanType、scanContent | 扫码结果区 | 显示识别类型和原始码值 | | itemCode、itemName、batchCode | 明细表 | 从扫码结果带入,不允许前端自行改写 | | materialStockId、仓库、库区、库位 | 明细数据 | 保存库存关联,用于拣货和出库校验 | | availableQuantity | 扫码结果区 | 用于提示当前库存数量 | | stockState | 库存台账 | `10` 暂存库、`20` 合格库、`30` 已出库 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 袋码扫描 | 按袋码关联批次和物料,并生成带 `bagCodeId` 的明细 | | 托盘扫描 | 关联托盘及其袋码,生成带 `palletCodeId` 的明细,并返回展开统计 | | 重复扫描 | 同一销售出库单重复扫描同一码时不重复生成明细,返回已有明细 | | 数量超限 | 扫描数量不得超过库存可用数量,也不得超过销售行剩余数量 | | 库存变更 | 扫码只生成明细;拣货时占用,完成出库时扣减库存 | | 库存状态 | 新建库存为暂存库;入库后有数量为合格库;数量扣减至零为已出库 | ## 注意事项 - 扫码接口只能用于待拣货状态的销售出库单。 - 托盘内袋码展开的具体明细数量应以接口返回的 `bagCount` 和 `inboundBagCount` 为准。 - 重复扫码响应的部分物料和库存字段可能为空,前端应优先使用 `detailId` 查询已有明细。 - 后端接口变更不修改 `mom-pro2-before` 前端项目。