From 02d21f6176ac8d54f7ba121bf42821a405be40f2 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期四, 23 十月 2025 16:45:21 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/RouteUtils.java | 230 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 168 insertions(+), 62 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index 00c5333..a472b6e 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,1108,1109
+ );
+ //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;
}
@@ -105,15 +166,29 @@
}
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;
+ }
/*
* 鑾峰彇鏈�杩滅珯鐐�
* */
public static Integer RouteIndexFarMas(Integer a,Integer b,Integer c,Integer d){
- int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a);
- int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b);
- int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c);
- int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d);
+ int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a); //褰撳墠浣嶇疆
+ int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b); //鍦板浘寮�濮嬩綅缃�
+ int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c); //鍦板浘缁撴潫浣嶇疆
+ int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d); //閿佺粨鏉熶綅缃�
if (id==0){
if (ia>ib){
if (ia>ic){
@@ -232,55 +307,86 @@
return getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION);
}
+ public static Short CrnStaEnd(Integer endSta,Integer souSta) {
+ switch (endSta) {
+ case 100:
+ case 102:
+ case 111:
+ if (souSta == 118 || souSta == 127){
+ return (short)119;
+ }
+ return 149;
+ default:
+ return endSta.shortValue();
+ }
+ }
+
+ public static Short SouStaEnd(Integer endSta,Integer souSta){
+ if (souSta == 1103) {
+ return (short)1105;
+ }
+ if(souSta == 1047){
+ return (short)1042;
+ }
+ return souSta.shortValue();
+ }
+
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