From 92c572e50893a93a810bbe6adb6d3cdbfc225073 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 20 五月 2025 14:17:33 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/utils/RouteUtils.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 139 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index 899c8d1..31de94a 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -1,12 +1,16 @@
package com.zy.asrs.utils;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.SpringUtils;
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 com.zy.system.service.UserService;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import static java.util.stream.Collectors.toList;
@@ -16,55 +20,173 @@
*/
public class RouteUtils {
//鎺掑簭 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 0:宸� 灏� 1:鍙� 澶�
- public static List<Integer>[] gradeRange(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> belongToRange(List<Integer> staNoList,Long position,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 (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){
+ public static List<Integer> BasDevpPositionExtractSites(List<BasDevpPosition> basDevpPositions) {
List<Integer> siteList = new ArrayList<>();
- for (BasDevpPosition basDevpPosition : basDevpPositions){
- if (!siteList.contains(basDevpPosition.getDevNo())){
+ 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);
+ basDevpPositions.remove(basDevpPosition);
+ break;
+ }
+ }
+ }
+ return basDevpPositionSort;
+ }
//妫�娴嬫槸鍚﹀湪鑼冨洿
- public static boolean CheckIfItIsWithinTheRange(List<Integer> staNoList,Integer staNo,List<BasDevpPosition> basDevpPositions){
+ public static boolean CheckIfItIsWithinTheRange(List<Integer> staNoList, Long staNoNowPos, List<BasDevpPosition> basDevpPositionList, boolean itSmall) {
List<Integer> siteList = new ArrayList<>();
- if (staNoList.isEmpty()){
- return true;
- }
+ Long maxOrMin = 0L;
- return false;
+
+ 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) {
+ for (BasDevpPosition basDevpPosition : basDevpPositionList) {
+ if (basDevpPosition.getDevNo().equals(rangeList[rangeList.length - 1])) {
+ maxOrMin = basDevpPosition.getPlcPosition();
+ break;
+ }
+ }
+ if (maxOrMin == 0){
+ return false;
+ }
+ return staNoNowPos <= maxOrMin+50;
+ }
+ for (BasDevpPosition basDevpPosition : basDevpPositionList) {
+ if (basDevpPosition.getDevNo().equals(rangeList[0])) {
+ maxOrMin = basDevpPosition.getPlcPosition();
+ break;
+ }
+ }
+ if (maxOrMin == 0){
+ return false;
+ }
+ return staNoNowPos >= maxOrMin-50;
+ }
+
+ 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