From 7a7c50a1ecf82fe070cf4dd86b73ba7386b33da6 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 24 四月 2025 17:28:28 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/utils/RouteUtils.java | 449 ++++--------------------------------------------------- 1 files changed, 34 insertions(+), 415 deletions(-) diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java index e9d52e4..899c8d1 100644 --- a/src/main/java/com/zy/asrs/utils/RouteUtils.java +++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java @@ -1,6 +1,10 @@ package com.zy.asrs.utils; +import com.zy.asrs.entity.BasDevpPosition; +import com.zy.asrs.entity.TaskWrk; +import com.zy.asrs.entity.WrkMast; import com.zy.core.enums.RouteCollectCountType; +import com.zy.core.model.RgvSlave; import java.util.ArrayList; import java.util.List; @@ -11,441 +15,56 @@ * Created by Monkey D. Luffy on 2023/7/18 */ public class RouteUtils { + //鎺掑簭 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 0:宸� 灏� 1:鍙� 澶� + public static List<Integer>[] gradeRange(List<Integer> staNoList,List<BasDevpPosition> basDevpPositions) { + List<Integer>[] avoidRangeArray = new ArrayList[2]; - public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{ - add(171);add(116);add(117); - }}; - public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{ - add(113);add(123);add(114);add(1142); - }}; - public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{ - add(107);add(118);add(108);add(119); - }}; - public static final List<Integer> MERGE_STA_NO_FOUR = new ArrayList<Integer>() {{ - add(110);add(120);add(111);add(121); - }}; - public static final List<Integer> MERGE_STA_NO_FIVE = new ArrayList<Integer>() {{ - add(104);add(122);add(105); - }}; - public static final List<Integer> MERGE_STA_NO_SIX = new ArrayList<Integer>() {{ - add(108);add(119);add(110);add(120); - }}; + return avoidRangeArray; + } - public static final List<Integer> MERGE_STA_NO_SEVEN = new ArrayList<Integer>() {{ - }}; - public static final List<Integer> MERGE_STA_NO_EIGHT = new ArrayList<Integer>() {{ - }}; + //鑾峰彇鍦ㄨ寖鍥寸殑绔欑偣 + public static List<Integer> belongToRange(List<Integer> staNoList,Long position,List<BasDevpPosition> basDevpPositions){ + List<Integer> siteList = new ArrayList<>(); - public static final List<Integer> MERGE_STA_NO_NINE = new ArrayList<Integer>() {{ + return siteList; + } - }}; - - // 姝e簭 - public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE1 = new ArrayList<Integer>() {{ - add(101);add(102);add(104);add(122);add(105);add(107);add(118);add(108); - }}; - // 鍙嶅簭 - public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE2 = new ArrayList<Integer>() {{ - add(117);add(116);add(171);add(1142);add(114);add(123);add(113);add(121);add(111);add(120);add(110); - }}; - - public static Integer getEndRoute(Integer endRoute,Integer rgvNo){ - if (rgvNo == 1){ - if (TRACK_POSITION_POSITIVE_SEQUENCE1.contains(endRoute)){ - return endRoute; - } else { - return 108; - } - } else if (rgvNo == 2){ - if (TRACK_POSITION_REVERSE_SEQUENCE2.contains(endRoute)){ - return endRoute; - } else { - return 110; + //鎻愬彇绔欑偣闆嗗悎 + public static List<Integer> BasDevpPositionExtractSites(List<BasDevpPosition> basDevpPositions){ + List<Integer> siteList = new ArrayList<>(); + for (BasDevpPosition basDevpPosition : basDevpPositions){ + if (!siteList.contains(basDevpPosition.getDevNo())){ + siteList.add(basDevpPosition.getDevNo()); } } - return endRoute; + return siteList; } -// 姝e簭 - public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{ - add(101);add(102);add(104);add(122);add(105);add(107);add(118);add(108);add(119);add(110);add(120);add(111);add(121);add(113);add(123);add(114);add(1142);add(171);add(116);add(117); - }}; -// 鍙嶅簭 - public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{ - add(117);add(116);add(171);add(1142);add(114);add(123);add(113);add(121);add(111);add(120);add(110);add(119);add(108);add(118);add(107);add(105);add(122);add(104);add(102);add(101); - }}; + //鎻愬彇绔欑偣闆嗗悎 + public static List<Integer> SortNearby(List<Integer> staNoList,Long rgvNowPos,List<BasDevpPosition> basDevpPositions){ + List<Integer> siteList = new ArrayList<>(); - public static String zerofill(String msg, Integer count){ - if (msg.length() == count){ - return msg; - } else if (msg.length() > count){ - return msg.substring(0, 16); - } else { - StringBuilder msgBuilder = new StringBuilder(msg); - for (int i = 0; i<count-msg.length(); i++){ - msgBuilder.insert(0,"0"); - } - return msgBuilder.toString(); + return siteList; + } + + + + //妫�娴嬫槸鍚﹀湪鑼冨洿 + public static boolean CheckIfItIsWithinTheRange(List<Integer> staNoList,Integer staNo,List<BasDevpPosition> basDevpPositions){ + List<Integer> siteList = new ArrayList<>(); + if (staNoList.isEmpty()){ + return true; } - } -// /* -// * 鑾峰彇骞叉秹鏈�杩滅珯鐐� -// * */ -// public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){ -// List<Integer> staFall = new ArrayList<>(); -// if (MERGE_STA_NO_SIX.contains(staNo)){ -// staFall = MERGE_STA_NO_SIX; -// }else if (MERGE_STA_NO_One.contains(staNo)){ -// staFall = MERGE_STA_NO_One; -// }else if (MERGE_STA_NO_TWO.contains(staNo)){ -// staFall = MERGE_STA_NO_TWO; -// }else if (MERGE_STA_NO_THREE.contains(staNo)){ -// staFall = MERGE_STA_NO_THREE; -// }else if (MERGE_STA_NO_FOUR.contains(staNo)){ -// staFall = MERGE_STA_NO_FOUR; -// }else if (MERGE_STA_NO_FIVE.contains(staNo)){ -// staFall = MERGE_STA_NO_FIVE; -// }else { -// return staNo; -// } -// -// int indexNo = 0; -// if (rgvNo==1){ -// indexNo=staFall.size()-1; -// } -// return staFall.get(indexNo); -// } - /* - * 鑾峰彇骞叉秹鏈�杩滅珯鐐� - * */ - public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){ - if (rgvNo==1){ - switch (staNo){ - case 101: - case 102: return 102; - case 104: - case 122: return 118; - case 105: return 119; - case 107: - case 118: return 108; - case 108: - case 119: return 111; - case 110: - case 120: return 113; - case 111: - case 121: return 113; - case 113: return 114; - case 123: - case 114: return 1142; - default: - return 116; - } - }else { - switch (staNo){ - case 117: - case 116: - case 171: - return 1142; - case 1142: - case 114: return 113; - case 123: - case 113: return 111; - case 121: return 110; - case 111: return 110; - case 120: - case 110: return 108; - case 119: - case 108: return 107; - case 118: - case 107: return 105; - case 105: - case 122: - case 104: return 104; - default: - return 102; - } - } - } - /* - * 鑾峰彇骞叉秹鏈�杩滅珯鐐� - * */ - public static Integer RouteIndexFarMasL(int rgvNo,Integer staNo){ - if (rgvNo==1){ - switch (staNo){ - case 101: - case 102: - case 104: - case 122: - case 105: - case 107: - return 118; - case 118: - return staNo; - default: - return 108; - } - }else { - switch (staNo){ - case 117: - case 116: - case 171: - case 1142: - case 114: - case 123: - case 113: - case 121: - return 121; - case 111: - return staNo; - default: - return 110; - } - } - } - - // 鑾峰彇褰撳墠灏忚溅鏈璧扮殑璺嚎闆嗗悎 - public static List<Integer> getRoute(Integer groupStart,Integer groupEnd){ - boolean sign = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupStart) < TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupEnd); - List<Integer> result = new ArrayList<>(); - List<Integer> groupRoute = new ArrayList<>(); - if (sign){ - groupRoute = TRACK_POSITION_POSITIVE_SEQUENCE; - }else { - groupRoute = TRACK_POSITION_REVERSE_SEQUENCE; - } - if (groupRoute.contains(groupStart) && groupRoute.contains(groupEnd)) { - sign = false; - for (Integer route : groupRoute) { - if (route.equals(groupStart)){ - sign=true; - } - if (route.equals(groupEnd)){ - result.add(route); - break; - } - if (sign){ - result.add(route); - } - } - }else { - return null; - } - return result; - } - - /* - * 鑾峰彇鏈�杩滅珯鐐� - * */ - 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); - if (id==0){ - if (ia>ib){ - if (ia>ic){ - return a; - }else { - return c; - } - }else { - if (ib>ic){ - return b; - }else { - return c; - } - } - }else { - if (ia<ib){ - if (ia<ic){ - return a; - }else { - return c; - } - }else { - if (ib<ic){ - return b; - }else { - return c; - } - } - } - } - - /* - * 鑾峰彇鏈�杩滅珯鐐� - * a:褰撳墠浣嶇疆 - * b:寮�濮嬩綅缃� - * c:缁撴潫浣嶇疆 - * d:閿佸紑濮嬩綅缃� - * */ - public static Integer RouteIndexFarMasNew(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); - if (id==0){ - if (ia>ib){ - if (ia>ic){ - return a; - }else { - return c; - } - }else { - if (ib>ic){ - return b; - }else { - return c; - } - } - }else { - if (ia<ib){ - if (ia<ic){ - return a; - }else { - return c; - } - }else { - if (ib<ic){ - return b; - }else { - return c; - } - } - } - } - - public static Integer[] RouteIndexFarArr(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); - return new Integer[]{ia,ib,ic,id}; - } - - /* - * a 灏忚溅褰撳墠浣嶇疆 - * b 灏忚溅浠诲姟寮�濮嬩綅缃� - * c 灏忚溅浠诲姟缁撴潫浣嶇疆 - * d 灏忚溅鍒濆浣嶇疆 - * 鑾峰彇鏈�澶ц矾寰勫樊鍊� - * */ - public static List<Integer> RouteMapCurrentFar(Integer a,Integer b,Integer c,Integer d){ - Integer farStn = RouteIndexFarMas(a, b, c, d); - return getRouteIntersection(TRACK_POSITION_POSITIVE_SEQUENCE,getRoute(farStn, d), RouteCollectCountType.DIFFERENCESET); - } - - public static List<Integer> RouteMapCurrentFar(Integer farStn,Integer d){ - return getRouteIntersection(TRACK_POSITION_POSITIVE_SEQUENCE,getRoute(farStn, d), RouteCollectCountType.DIFFERENCESET); - } - - /* - * 鍙︿竴鍙板皬杞︽渶杩滀綅缃� - * */ - public static Integer RouteMapOtherFarStnNo(List<Integer> routeDIFF,Integer d){ - int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d); - if (id==0){ - return routeDIFF.get(0); - }else { - int size = routeDIFF.size(); - return routeDIFF.get(size-1); - } - } - - //鏄惁鏈変氦闆� - public static boolean getRouteBoolean(List<Integer> groupCurrent,List<Integer> groupOther){ - for (Integer positionCurrent : groupCurrent){ - for (Integer positionOther : groupOther){ - if (positionCurrent.equals(positionOther)){ - return true; - } - } - } return false; } - //闆嗗悎杩愮畻 - public static List<Integer> getRouteIntersection(List<Integer> groupCurrent, List<Integer> groupOther, RouteCollectCountType routeCollectCountType){ - switch (routeCollectCountType){ - case INTERSECTION: - //浜ら泦 - return groupCurrent.stream().filter(item -> groupOther.contains(item)).collect(toList()); - case DIFFERENCESET: - //宸泦 - return groupCurrent.stream().filter(item -> !groupOther.contains(item)).collect(toList()); - case UNION: - //骞堕泦 - groupCurrent.addAll(groupOther); - return groupCurrent; - case DEDUPLICATIONUNION: - //鍘婚噸骞堕泦 - groupCurrent.addAll(groupOther); - return groupCurrent.stream().distinct().collect(toList()); - default: - return null; - } - } - - /* - * a 灏忚溅褰撳墠浣嶇疆 - * b 灏忚溅浠诲姟寮�濮嬩綅缃� - * c 灏忚溅浠诲姟缁撴潫浣嶇疆 - * sign 鍙︿竴涓皬杞︾┖闂叉爣璁� - * */ - public static boolean RouteAutoBoolean(Integer a,Integer b,Integer c,Integer aa,Integer bb,Integer cc,boolean idleOther){ - List<Integer> routeCurrent = getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION);//骞堕泦 - List<Integer> routeOther = getRouteIntersection(getRoute(aa, cc), getRoute(bb, cc), RouteCollectCountType.DEDUPLICATIONUNION);// - return !getRouteBoolean(routeCurrent, routeOther); //鏄惁鏈変氦闆� - } - - public static List<Integer> RouteAutoBoolean(Integer a,Integer b,Integer c){ - return getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION); - } - - - - public static void main(String[] arge){ - List<Integer> routeCurrent = getRoute(104, 119); //鑾峰彇褰撳墠灏忚溅璺緞 - List<Integer> routeOther = getRoute(117, 118); //鑾峰彇鍏跺畠灏忚溅璺緞 - 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); - - System.out.println(RouteAutoBoolean(101,104,119,114,116,120,true)); - - List<Integer> routeDIFF = RouteMapCurrentFar(114, 104, 119, 117); - System.out.println("褰撳墠璺緞鏈�澶ч泦鍚堬細\t"+ routeDIFF); - - Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,117); - System.out.println("鍙︿竴鍙板皬杞︽渶杩滅珯鐐癸細\t"+routeFarOther); - - - Integer[] integers = RouteIndexFarArr(114, 104, 119, 101); - for (Integer integer:integers){ - System.out.println(integer); - } - } } -- Gitblit v1.9.1