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

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 的明细,并返回展开统计
重复扫描 同一销售出库单重复扫描同一码时不重复生成明细,返回已有明细
数量超限 扫描数量不得超过库存可用数量,也不得超过销售行剩余数量
库存变更 扫码只生成明细;拣货时占用,完成出库时扣减库存
库存状态 新建库存为暂存库;入库后有数量为合格库;数量扣减至零为已出库

注意事项

  • 扫码接口只能用于待拣货状态的销售出库单。
  • 托盘内袋码展开的具体明细数量应以接口返回的 bagCountinboundBagCount 为准。
  • 重复扫码响应的部分物料和库存字段可能为空,前端应优先使用 detailId 查询已有明细。
  • 后端接口变更不修改 mom-pro2-before 前端项目。