返回 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