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 | 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 cba980b..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(116);add(117); +// 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; } @@ -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