# ERP 销售订单出库状态实时反馈 - 前端联调方案 ## 涉及页面 - ERP 销售订单列表页 - ERP 销售订单详情页 - MES 发货通知单管理页 - MES 销售出库单管理页 ## 业务流程与状态变化 ### 状态枚举说明 | 状态值 | 状态名称 | 说明 | |--------|----------|------| | 0 | 未出库 | 销售订单初始状态,未开始出库流程 | | 1 | 已预留 | 发货通知单审核通过,库存已预留 | | 2 | 部分出库 | 销售出库单已拣货/占用库存 | | 3 | 全部出库 | 销售出库单已完成出库 | ### 状态变化时机 | 步骤 | 操作 | 状态变化 | 触发位置 | |------|------|----------|----------| | 1 | 发货通知单审核通过 | 0 → 1(未出库 → 已预留) | MES 发货通知单提交审核 | | 2 | 销售出库单拣货 | 1 → 2(已预留 → 部分出库) | MES 销售出库单拣货确认 | | 3 | 销售出库单完成 | 2 → 3(部分出库 → 全部出库) | MES 销售出库单完成出库 | ## API 变更 ### 新增 API | 方法 | 路径 | 说明 | |------|------|------| | PUT | /rpc-api/erp/sale-order/updateOrderOutStatusTo | 更新销售订单出库状态为指定值 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | orderId | Long | 是 | 销售订单编号 | | outStatus | Integer | 是 | 出库状态(0-3) | **响应:** ```json { "code": 0, "data": true, "msg": "操作成功" } ``` ### 响应字段变更 **ErpSaleOrderRespDTO 新增字段:** | 字段 | 类型 | 说明 | |------|------|------| | outStatus | Integer | 出库状态(0-3) | | outCount | BigDecimal | 已出库数量 | **ErpSaleOrderItemRespDTO 新增字段:** | 字段 | 类型 | 说明 | |------|------|------| | outCount | BigDecimal | 已出库数量 | ## 字段展示规则 ### 销售订单列表 | 字段 | 展示位置 | 说明 | |------|----------|------| | 出库状态 | 列表 | 使用 Tag 标签展示,不同状态不同颜色 | | 已出库数量 | 列表 | 格式:`已出库数量/总数量` | ### 销售订单详情 | 字段 | 展示位置 | 说明 | |------|----------|------| | 出库状态 | 基本信息区 | 使用 Tag 标签展示 | | 已出库数量 | 基本信息区 | 数值展示 | | 订单明细-已出库数量 | 明细表格 | 每行显示该项的已出库数量 | ### 出库状态颜色建议 | 状态 | 颜色 | Tag 类型 | |------|------|----------| | 未出库 | 灰色 | info | | 已预留 | 蓝色 | primary | | 部分出库 | 橙色 | warning | | 全部出库 | 绿色 | success | ## 业务规则说明 | 场景 | 规则 | |------|------| | 发货通知单审核 | 审核通过时自动更新关联销售订单状态为"已预留" | | 销售出库单拣货 | 拣货确认时自动更新关联销售订单状态为"部分出库" | | 销售出库单完成 | 出库完成时自动更新关联销售订单状态为"全部出库",并累计出库数量 | | 取消发货通知单 | 如果取消,需要将销售订单状态回退 | | 取消销售出库单 | 如果取消,需要将销售订单状态回退 | ## 注意事项 1. **状态实时性**:MES 模块操作后立即回写 ERP 销售订单状态,前端刷新即可看到最新状态 2. **多单据关联**:一个销售订单可能对应多个发货通知单和销售出库单,状态会按流程推进 3. **状态回退**:目前仅实现状态推进,暂不支持状态回退(如取消后状态恢复) 4. **出库数量累计**:只有销售出库单完成时才会累计出库数量,拣货阶段仅更新状态 5. **并发控制**:状态更新有事务保证,避免并发更新导致状态不一致