返回 Bug 清单
BUG-0161project-43中需关注backend-logic

maybeAdvanceOrderAfterSorting 状态机逻辑缺陷

发现:2026-09-30验证:2026-10-27置信度:85%

症状

当订单所有明细行分拣完成后(`pending == 0`),`maybeAdvanceOrderAfterSorting` 将订单状态设为 `SORTING` 而非 `SHIPPED`,导致订单永远停留在分拣状态,无法进入发货流程。

根因

```java public void maybeAdvanceOrderAfterSorting(Long orderId, Long boothId) { OrderEntity order = requireOrder(orderId, boothId); if (order.getStatus() != OrderStatus.CONFIRMED && order.getStatus() != OrderStatus.SORTING) return; long pending = orderItemMapper.selectCount( new LambdaQueryWrapper<OrderItemEntity>() .eq(OrderItemEntity::getOrderId, orderId) .eq(OrderItemEntity::getSortingStatus, 0)); if (pending == 0) { order.setStatus(OrderStatus.SORTING); // ← BUG: 应设为 SHIPPED } else if (order.getStatus() == OrderStatus.CONFIRMED) { order.setStatus(OrderStatus.SORTING); // 合理:第一件完成分拣 → 进入分拣状态 } } ```

错误签名

```java
public void maybeAdvanceOrderAfterSorting(Long orderId, Long boothId) {
    OrderEntity order = requireOrder(orderId, boothId);
    if (order.getStatus() != OrderStatus.CONFIRMED && order.getS

技术信息

来源项目

project-43

涉及文件

lightning-service/src/main/java/com/xianzhi/lightning/service/impl/OrderCommandServiceImpl.java` (line 151-168)

标签

backend-logic, project-43