fix(ops): 修复取消 QUEUED 工单时队列状态转换校验不允许 WAITING→REMOVED 的问题
队列状态流转校验缺少 WAITING→REMOVED 的转换规则,导致取消 QUEUED 工单时 队列条目未被正确清理,autoDispatchNext 查到残留的 WAITING 记录后尝试派发 已取消的工单(CANCELLED→DISPATCHED),触发 IllegalStateException 并污染 外层事务,最终抛出 UnexpectedRollbackException。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user