fix(ops): 修复取消 QUEUED 工单时队列状态转换校验不允许 WAITING→REMOVED 的问题
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

队列状态流转校验缺少 WAITING→REMOVED 的转换规则,导致取消 QUEUED 工单时
队列条目未被正确清理,autoDispatchNext 查到残留的 WAITING 记录后尝试派发
已取消的工单(CANCELLED→DISPATCHED),触发 IllegalStateException 并污染
外层事务,最终抛出 UnexpectedRollbackException。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-02-25 22:49:05 +08:00
parent 0a13ba30f6
commit edaa75b838

View File

@@ -673,7 +673,7 @@ public class OrderQueueServiceEnhanced implements OrderQueueService {
return switch (oldStatus.toUpperCase()) {
case "PENDING" -> "WAITING".equals(newStatus) || "CANCELLED".equals(newStatus);
case "WAITING" -> "PROCESSING".equals(newStatus) || "DISPATCHED".equals(newStatus)
|| "CANCELLED".equals(newStatus);
|| "CANCELLED".equals(newStatus) || "REMOVED".equals(newStatus);
case "PROCESSING", "DISPATCHED" -> "PAUSED".equals(newStatus)
|| "REMOVED".equals(newStatus) || "COMPLETED".equals(newStatus);
case "PAUSED" -> "PROCESSING".equals(newStatus) || "DISPATCHED".equals(newStatus);