From edaa75b838962cd908ac3ec477f6a34ed5991a8b Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 25 Feb 2026 22:49:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(ops):=20=E4=BF=AE=E5=A4=8D=E5=8F=96?= =?UTF-8?q?=E6=B6=88=20QUEUED=20=E5=B7=A5=E5=8D=95=E6=97=B6=E9=98=9F?= =?UTF-8?q?=E5=88=97=E7=8A=B6=E6=80=81=E8=BD=AC=E6=8D=A2=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=B8=8D=E5=85=81=E8=AE=B8=20WAITING=E2=86=92REMOVED=20?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 队列状态流转校验缺少 WAITING→REMOVED 的转换规则,导致取消 QUEUED 工单时 队列条目未被正确清理,autoDispatchNext 查到残留的 WAITING 记录后尝试派发 已取消的工单(CANCELLED→DISPATCHED),触发 IllegalStateException 并污染 外层事务,最终抛出 UnexpectedRollbackException。 Co-Authored-By: Claude Opus 4.6 --- .../module/ops/service/queue/OrderQueueServiceEnhanced.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/queue/OrderQueueServiceEnhanced.java b/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/queue/OrderQueueServiceEnhanced.java index d3bd080..bf2dca6 100644 --- a/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/queue/OrderQueueServiceEnhanced.java +++ b/viewsh-module-ops/viewsh-module-ops-biz/src/main/java/com/viewsh/module/ops/service/queue/OrderQueueServiceEnhanced.java @@ -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);