Junjie
14 小时以前 decd02709b7ef82502b6f574823720b41df4132b
refactor: add station reroute shared types
2个文件已修改
48 ■■■■■ 已修改文件
src/main/java/com/zy/core/utils/StationOperateProcessUtils.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/zy/core/utils/StationOperateProcessUtilsReroutePipelineTest.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
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());
    }
}