From aeaf3e43e425ef0de84c1819f318f20e90471f90 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期四, 02 十月 2025 11:49:37 +0800
Subject: [PATCH] #和得服务器

---
 src/main/java/com/zy/asrs/utils/RouteUtils.java |  212 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 148 insertions(+), 64 deletions(-)

diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index e769506..aa3e001 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -2,8 +2,7 @@
 
 import com.zy.core.enums.RouteCollectCountType;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 import static java.util.stream.Collectors.toList;
 
@@ -14,29 +13,66 @@
 
     //闂2  鍛ㄤ繆鏉�
     public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{
-        add(113);add(119);
+//        add(113);add(119);
     }};
 
     public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{
-//        add(116);add(117);
+//        add(100);add(101);
     }};
 
     public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{
-//        add(116);add(117);
+//        add(106);add(107);
     }};
 
     public static final List<Integer> MERGE_STA_NO_FOUR = new ArrayList<Integer>() {{
 //        add(116);add(117);
     }};
 
-//    姝e簭
-    public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{
-        add(161);add(157);add(153);add(149);add(124);add(119);add(113);add(999);add(112);add(107);add(106);add(101);add(100);
-    }};
-//    鍙嶅簭
-    public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{
-        add(100);add(101);add(106);add(107);add(112);add(999);add(113);add(119);add(124);add(149);add(153);add(157);add(161);
-    }};
+    // RGV杞ㄩ亾姝e簭锛堜粠涓婂埌涓嬶級
+    public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = Arrays.asList(
+        1004,
+        1007,
+        1010,
+        1014,
+        1018,
+        1021,
+        1024,
+        1028,
+        1031,
+        1035
+    );
+
+    // 鍙嶅簭锛堢洿鎺ュ弽杞敓鎴愶級
+    public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<>(TRACK_POSITION_POSITIVE_SEQUENCE);
+    static {
+        Collections.reverse(TRACK_POSITION_REVERSE_SEQUENCE);
+    }
+    //1妤兼垬绔欑偣
+    public static final List<Integer> TRACK_POSITION_ONE = Arrays.asList(
+            1004, 1007, 1010, 1014, 1018, 1021, 1024, 1028, 1031, 1035,1042,1105,1106,1041,
+            1038,1036
+    );
+    //2妤兼垬绔欑偣
+    public static final List<Integer> TRACK_POSITION_TWO = Arrays.asList(
+            2003,2006,2009,2012,2015,2018,2021,2024,2027,2030,2037,2031
+    );
+
+    // 杞ㄩ亾鏄犲皠锛堟妸鏄犲皠绔欑偣鏇挎崲鎴愪富绔欑偣锛�
+    public static final Map<Integer, Integer> SITE_MAPPING = new HashMap<>();
+    static {
+        SITE_MAPPING.put(1042, 1004);
+        SITE_MAPPING.put(1105, 1007);
+        SITE_MAPPING.put(1106, 1010);
+        SITE_MAPPING.put(1041, 1024);
+        SITE_MAPPING.put(1038, 1028);
+        SITE_MAPPING.put(1036, 1035);
+    }
+
+    // 鑾峰彇杞ㄩ亾鍒楄〃涓疄闄呯珯鐐�
+    private static Integer mapSite(Integer site) {
+        return SITE_MAPPING.getOrDefault(site, site);
+    }
+
 
     public static String zerofill(String msg, Integer count){
         if (msg.length() == count){
@@ -51,6 +87,7 @@
             return msgBuilder.toString();
         }
     }
+
     /*
      * 鑾峰彇骞叉秹鏈�杩滅珯鐐�
      * */
@@ -73,6 +110,30 @@
             indexNo=staFall.size()-1;
         }
         return staFall.get(indexNo);
+    }
+
+    // 鑾峰彇褰撳墠灏忚溅鏈璧扮殑璺嚎闆嗗悎
+    public static List<Integer> getRouteDis(Integer groupStart, Integer groupEnd) {
+        groupStart = mapSite(groupStart);
+        groupEnd = mapSite(groupEnd);
+
+        int startIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupStart);
+        int endIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupEnd);
+
+        if (startIdx == -1 || endIdx == -1) return null;
+
+        boolean forward = startIdx < endIdx;
+        List<Integer> route = forward ? TRACK_POSITION_POSITIVE_SEQUENCE : TRACK_POSITION_REVERSE_SEQUENCE;
+
+        List<Integer> result = new ArrayList<>();
+        boolean addFlag = false;
+        for (Integer s : route) {
+            s = mapSite(s);
+            if (s.equals(groupStart)) addFlag = true;
+            if (addFlag) result.add(s);
+            if (s.equals(groupEnd)) break;
+        }
+        return result;
     }
 
 
@@ -104,6 +165,20 @@
             return null;
         }
         return result;
+    }
+    public static List<Integer> getRouteOne(){
+
+        List<Integer> groupRoute = new ArrayList<>();
+        groupRoute = TRACK_POSITION_ONE;
+
+        return groupRoute;
+    }
+    public static List<Integer> getRouteTwo(){
+
+        List<Integer> groupRoute = new ArrayList<>();
+        groupRoute = TRACK_POSITION_TWO;
+
+        return groupRoute;
     }
 
     /*
@@ -235,12 +310,11 @@
     public static Short CrnStaEnd(Integer endSta,Integer souSta) {
         switch (endSta) {
             case 100:
-                if (souSta == 118){
-                    return (short)119;
-                }
-                return (short)149;
             case 102:
             case 111:
+                if (souSta == 118 || souSta == 127){
+                    return (short)119;
+                }
                 return 149;
             default:
                 return endSta.shortValue();
@@ -248,8 +322,11 @@
     }
 
     public static  Short SouStaEnd(Integer endSta,Integer souSta){
-       if (souSta == 159) {
-           return (short)161;
+       if (souSta == 1103) {
+           return (short)1105;
+       }
+       if(souSta == 1047){
+           return (short)1042;
        }
        return souSta.shortValue();
     }
@@ -257,52 +334,59 @@
 
 
     public static void main(String[] arge){
-        List<Integer> routeCurrent = getRoute(100, 124);  //鑾峰彇褰撳墠灏忚溅璺緞
-        List<Integer> routeOther = getRoute(149, 161);  //鑾峰彇鍏跺畠灏忚溅璺緞
-        System.out.println("褰撳墠灏忚溅璺緞:\t"+routeCurrent);
-        System.out.println("鍏跺畠灏忚溅璺緞:\t"+routeOther);
+        //{"endRoute":999,"lockEndRoute":124,"lockStartRoute":161,"nowRoute":161,"rgvNo":3,"rgvStatus":0,"startRoute":161}   3hao
+        Integer i = RouteIndexFarMas(112, 161, 124, 161);
+        System.out.println(i);
+        //{"endRoute":119,"lockEndRoute":112,"lockStartRoute":100,"nowRoute":112,"rgvNo":2,"rgvStatus":0,"startRoute":100} 2
+        Integer i1 = RouteIndexFarMas(112, 100, 112, 100);
+        System.out.println(i1);
 
-        boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther);  //鏄惁鏈変氦闆�
-        System.out.println("鏄惁鏈変氦闆�:\t"+routeBoolean);
-
-        List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//浜ら泦
-        System.out.println("璺緞浜ら泦锛歕t"+routeIntersection);
-
-        List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//宸泦
-        System.out.println("璺緞宸泦锛歕t"+routeIntersection1);
-
-        List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//骞堕泦
-        System.out.println("璺緞骞堕泦锛歕t"+routeIntersection2);
-
-        List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//鍘婚噸骞堕泦
-        System.out.println("璺緞鍘婚噸骞堕泦锛歕t"+routeIntersection3);
-
-        /*
-         * a  灏忚溅褰撳墠浣嶇疆
-         * b  灏忚溅浠诲姟寮�濮嬩綅缃�
-         * c  灏忚溅浠诲姟缁撴潫浣嶇疆
-         * sign  鍙︿竴涓皬杞︾┖闂叉爣璁�
-         * */
-        System.out.println("鏄惁鏈変氦闆嗭細\t"+RouteAutoBoolean(100,101,124,149,161,153,true));   //鏄惁鏈変氦闆�  true鏃犱氦闆�  false鏈変氦闆�
-
-        /*
-         * a  灏忚溅褰撳墠浣嶇疆
-         * b  灏忚溅浠诲姟寮�濮嬩綅缃�
-         * c  灏忚溅浠诲姟缁撴潫浣嶇疆
-         * d  灏忚溅鍒濆浣嶇疆
-         * 鑾峰彇鏈�澶ц矾寰勫樊鍊�
-         * */
-        List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149);
-        System.out.println("褰撳墠璺緞鏈�澶ч泦鍚堬細\t"+ routeDIFF);
-
-        Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124);
-        System.out.println("鍙︿竴鍙板皬杞︽渶杩滅珯鐐癸細\t"+routeFarOther);
-
-
-        Integer[] integers = RouteIndexFarArr(100,101,124,149);
-        for (Integer integer:integers){
-            System.out.println(integer);
-        }
+//        List<Integer> routeCurrent = getRoute(100, 124);  //鑾峰彇褰撳墠灏忚溅璺緞
+//        List<Integer> routeOther = getRoute(149, 161);  //鑾峰彇鍏跺畠灏忚溅璺緞
+//        System.out.println("褰撳墠灏忚溅璺緞:\t"+routeCurrent);
+//        System.out.println("鍏跺畠灏忚溅璺緞:\t"+routeOther);
+//
+//        boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther);  //鏄惁鏈変氦闆�
+//        System.out.println("鏄惁鏈変氦闆�:\t"+routeBoolean);
+//
+//        List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//浜ら泦
+//        System.out.println("璺緞浜ら泦锛歕t"+routeIntersection);
+//
+//        List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//宸泦
+//        System.out.println("璺緞宸泦锛歕t"+routeIntersection1);
+//
+//        List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//骞堕泦
+//        System.out.println("璺緞骞堕泦锛歕t"+routeIntersection2);
+//
+//        List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//鍘婚噸骞堕泦
+//        System.out.println("璺緞鍘婚噸骞堕泦锛歕t"+routeIntersection3);
+//
+//        /*
+//         * a  灏忚溅褰撳墠浣嶇疆
+//         * b  灏忚溅浠诲姟寮�濮嬩綅缃�
+//         * c  灏忚溅浠诲姟缁撴潫浣嶇疆
+//         * sign  鍙︿竴涓皬杞︾┖闂叉爣璁�
+//         * */
+//        System.out.println("鏄惁鏈変氦闆嗭細\t"+RouteAutoBoolean(100,101,124,149,161,153,true));   //鏄惁鏈変氦闆�  true鏃犱氦闆�  false鏈変氦闆�
+//
+//        /*
+//         * a  灏忚溅褰撳墠浣嶇疆
+//         * b  灏忚溅浠诲姟寮�濮嬩綅缃�
+//         * c  灏忚溅浠诲姟缁撴潫浣嶇疆
+//         * d  灏忚溅鍒濆浣嶇疆
+//         * 鑾峰彇鏈�澶ц矾寰勫樊鍊�
+//         * */
+//        List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149);
+//        System.out.println("褰撳墠璺緞鏈�澶ч泦鍚堬細\t"+ routeDIFF);
+//
+//        Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124);
+//        System.out.println("鍙︿竴鍙板皬杞︽渶杩滅珯鐐癸細\t"+routeFarOther);
+//
+//
+//        Integer[] integers = RouteIndexFarArr(100,101,124,149);
+//        for (Integer integer:integers){
+//            System.out.println(integer);
+//        }
     }
 
 }

--
Gitblit v1.9.1