From aede5c5c19740a9903dfe2873caaacc10eebda66 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期一, 28 四月 2025 12:37:07 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/utils/RouteUtils.java | 143 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 133 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java index 36ac1a3..905be8d 100644 --- a/src/main/java/com/zy/asrs/utils/RouteUtils.java +++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java @@ -7,6 +7,7 @@ import com.zy.core.model.RgvSlave; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import static java.util.stream.Collectors.toList; @@ -16,32 +17,154 @@ */ public class RouteUtils { //鎺掑簭 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 0:宸� 灏� 1:鍙� 澶� - public static List<Integer>[] avoidRange(List<Integer> staNoList,List<BasDevpPosition> basDevpPositions) { + public static List<Integer>[] gradeRange(List<Integer> staNoList, List<BasDevpPosition> basDevpPositionList, boolean itSmall) { List<Integer>[] avoidRangeArray = new ArrayList[2]; + Integer[] rangeList = new Integer[staNoList.size()]; + List<Integer> rangeList1 = new ArrayList<>(); + List<Integer> rangeList2 = new ArrayList<>(); + int i = 0; + for (BasDevpPosition basDevpPosition : basDevpPositionList) { + for (Integer staNo : staNoList) { + if (basDevpPosition.getDevNo().equals(staNo)) { + rangeList[i] = staNo; + i = i + 1; + break; + } + } + } + boolean sign = true; + for (int j = 0; j < rangeList.length; j++) { + if (itSmall) { + if (sign) { + rangeList1.add(rangeList[j]); + } else { + rangeList2.add(rangeList[j]); + } + if (sign && j >= rangeList.length / 2) { + sign = false; + } + } else { + if (sign && j >= rangeList.length / 2) { + sign = false; + } + if (sign) { + rangeList1.add(rangeList[j]); + } else { + rangeList2.add(rangeList[j]); + } + } + } - - - + avoidRangeArray[0] = rangeList1; + avoidRangeArray[1] = rangeList2; return avoidRangeArray; } - //鎻愬彇绔欑偣闆嗗悎 - public static List<Integer> BasDevpPositionExtractSites(List<BasDevpPosition> basDevpPositions){ + + //鑾峰彇鍦ㄨ寖鍥寸殑绔欑偣 + public static List<Integer> belongToRange(List<Integer> staNoList, Long[] avoid, List<BasDevpPosition> basDevpPositions) { List<Integer> siteList = new ArrayList<>(); - for (BasDevpPosition basDevpPosition : basDevpPositions){ - if (!siteList.contains(basDevpPosition.getDevNo())){ + + for (BasDevpPosition basDevpPosition : basDevpPositions) { + if (new TrackRangeUtils().avoidRange(basDevpPosition.getPlcPosition(), avoid)) { + for (Integer staNo : staNoList) { + if (basDevpPosition.getDevNo().equals(staNo)) { + siteList.add(staNo); + break; + } + } + } + } + + return siteList; + } + + //鎻愬彇绔欑偣闆嗗悎 + 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 siteList; } - //鎻愬彇绔欑偣闆嗗悎 - public static List<Integer> SortNearby(List<Integer> staNoList,Long rgvNowPos,List<BasDevpPosition> basDevpPositions){ + //鎻愬彇绔欑偣闆嗗悎//灏辫繎鎺掑簭 + public static List<Integer> SortNearby(List<Integer> staNoList, Long rgvNowPos, List<BasDevpPosition> basDevpPositionList) { List<Integer> siteList = new ArrayList<>(); + + List<BasDevpPosition> basDevpPositions = devpNoSort(basDevpPositionList, rgvNowPos); + for (BasDevpPosition basDevpPosition : basDevpPositions) { + for (Integer staNo : staNoList) { + if (basDevpPosition.getDevNo().equals(staNo)) { + siteList.add(staNo); + break; + } + } + } + return siteList; } + + //绔欑偣杩囨护 + public static List<BasDevpPosition> devpNoSort(List<BasDevpPosition> devpPositionList, Long rgvNowPos) { + + List<BasDevpPosition> basDevpPositions = new ArrayList<>(); + List<BasDevpPosition> basDevpPositionSort = new ArrayList<>(); + ArrayList<Long> arrayList = new ArrayList<>(); + for (BasDevpPosition basDevpPosition : devpPositionList) { + long position = Math.abs(basDevpPosition.getPlcPosition() - rgvNowPos); + BasDevpPosition devpPosition = new BasDevpPosition(basDevpPosition, position); + basDevpPositions.add(devpPosition); + arrayList.add(position); + } + Collections.sort(arrayList); // 鍗囧簭鎺掑簭 + for (Long position : arrayList) { + for (BasDevpPosition basDevpPosition : basDevpPositions) { + if (basDevpPosition.getPlcPosition().equals(position)) { + basDevpPositionSort.add(basDevpPosition); + break; + } + } + } + return basDevpPositionSort; + } + + //妫�娴嬫槸鍚﹀湪鑼冨洿 + public static boolean CheckIfItIsWithinTheRange(List<Integer> staNoList, Long staNoNowPos, List<BasDevpPosition> basDevpPositionList, boolean itSmall) { + List<Integer> siteList = new ArrayList<>(); + + + Integer[] rangeList = new Integer[staNoList.size()]; + int i = 0; + for (BasDevpPosition basDevpPosition : basDevpPositionList) { + for (Integer staNo : staNoList) { + if (basDevpPosition.getDevNo().equals(staNo)) { + rangeList[i] = staNo; + i = i + 1; + break; + } + } + } + + if (itSmall) { + return staNoNowPos <= rangeList[rangeList.length - 1]; + } + return staNoNowPos >= rangeList[0]; + } + + public static long absoluteDifference(Long a, Long b) { + if (a == null || b == null) { + a = 0L; + b = 0L; +// throw new IllegalArgumentException(""); + System.out.println("a or b is null"); + } + return Math.abs(a - b); + } + } -- Gitblit v1.9.1