From decd02709b7ef82502b6f574823720b41df4132b Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 24 三月 2026 16:49:42 +0800
Subject: [PATCH] refactor: add station reroute shared types

---
 src/main/java/com/zy/core/utils/StationOperateProcessUtils.java                    |   39 +++++++++++++++++++++++++++++++++++++++
 src/test/java/com/zy/core/utils/StationOperateProcessUtilsReroutePipelineTest.java |    9 +++++++++
 2 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
index 40e4e19..706c497 100644
--- a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
@@ -1940,6 +1940,45 @@
         return pathLenFactor;
     }
 
+    enum RerouteSceneType {
+        RUN_BLOCK_REROUTE,
+        IDLE_RECOVER,
+        OUT_ORDER,
+        WATCH_CIRCLE
+    }
+
+    static final class RerouteDecision {
+        private final boolean skip;
+        private final String skipReason;
+        private final Integer targetStationId;
+
+        private RerouteDecision(boolean skip, String skipReason, Integer targetStationId) {
+            this.skip = skip;
+            this.skipReason = skipReason;
+            this.targetStationId = targetStationId;
+        }
+
+        static RerouteDecision skip(String reason) {
+            return new RerouteDecision(true, reason, null);
+        }
+
+        static RerouteDecision proceed(Integer targetStationId) {
+            return new RerouteDecision(false, null, targetStationId);
+        }
+
+        boolean skip() {
+            return skip;
+        }
+
+        String skipReason() {
+            return skipReason;
+        }
+
+        Integer targetStationId() {
+            return targetStationId;
+        }
+    }
+
     private static class OutOrderDispatchDecision {
         private final Integer targetStationId;
         private final boolean circle;
diff --git a/src/test/java/com/zy/core/utils/StationOperateProcessUtilsReroutePipelineTest.java b/src/test/java/com/zy/core/utils/StationOperateProcessUtilsReroutePipelineTest.java
index 9dbedfd..82c6113 100644
--- a/src/test/java/com/zy/core/utils/StationOperateProcessUtilsReroutePipelineTest.java
+++ b/src/test/java/com/zy/core/utils/StationOperateProcessUtilsReroutePipelineTest.java
@@ -9,4 +9,13 @@
         StationOperateProcessUtils.RerouteSceneType scene =
                 StationOperateProcessUtils.RerouteSceneType.RUN_BLOCK_REROUTE;
     }
+
+    @Test
+    void resolveExecutionTarget_skipsWhenTargetEqualsCurrentStation() {
+        StationOperateProcessUtils.RerouteDecision decision =
+                StationOperateProcessUtils.RerouteDecision.skip("same-station");
+
+        assert decision.skip();
+        assert "same-station".equals(decision.skipReason());
+    }
 }

--
Gitblit v1.9.1