From 85bb0d60ce25ec902aba8c298931bda33a77e7b8 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期三, 23 十月 2024 11:59:35 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java | 370 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 350 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java b/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
index e502e64..a6ef2f4 100644
--- a/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
+++ b/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
@@ -1,9 +1,10 @@
package com.zy.asrs.utils;
+import com.zy.asrs.entity.BasDevpPosition;
+import com.zy.asrs.entity.WrkMast;
import com.zy.core.enums.RouteCollectCountType;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
public class SortTheExecutionOfTheCarUtil {
//鎺掑簭
@@ -27,33 +28,362 @@
}
return ints;
}
- //鎺掑簭
- public static int ReorderSteId2(int[][] steList,int steNoStart){
- int[][] ints = new int[steList.length][2];
- int Difference = 0;
- for (int[] steNo : steList){
- if (steNo[0] == steNoStart){
- Difference = steNo[1] - 1;
+
+ //鑾峰彇鏈�杩戝苟鍦ㄥ綋鍓嶄綅缃墠杈圭殑浣嶇疆
+ public static Integer LatelyAndLessThan(List<BasDevpPosition> devpPosition, long nowPosition){
+ Integer result = 0;
+ long Difference = 1737000L;
+ for (BasDevpPosition positions : devpPosition){
+ Long position = positions.getPlcPosition();
+ if (position<=nowPosition){
+ if ((nowPosition-position) < Difference){
+ Difference = nowPosition-position;
+ result = positions.getDevNo();
+ }
+ } else {
+ if ((nowPosition-(position - 1737000L)) < Difference){
+ Difference = nowPosition-(position - 1737000L);
+ result = positions.getDevNo();
+ }
+ }
+ }
+ return result;
+ }
+// //鑾峰彇鏈�杩戝苟鍦ㄥ綋鍓嶄綅缃墠杈圭殑浣嶇疆
+// public static Long LatelyAndLessThan(long[] devpPosition,long nowPosition){
+// long result = 0L;
+// long Difference = 1737000L;
+// for (long position : devpPosition){
+// if (position<=nowPosition){
+// if ((nowPosition-position) < Difference){
+// Difference = nowPosition-position;
+// result = position;
+// }
+// } else {
+// if ((nowPosition-(position - 1737000L)) < Difference){
+// Difference = nowPosition-(position - 1737000L);
+// result = position;
+// }
+// }
+// }
+// return result;
+// }
+
+ //鑾峰彇鏈�杩戝苟鍦ㄥ綋鍓嶄綅缃悗杈圭殑浣嶇疆
+ public static Integer LatelyAndGreaterThan(List<List<Long>> sitePosition, long nowPosition){
+ int result = 0;
+ long Difference = 1737000L;
+ for (List<Long> rgvPositions: sitePosition){
+ Long position = rgvPositions.get(1);
+ if (position>nowPosition){
+ if ((position - nowPosition) < Difference){
+ Difference = position - nowPosition;
+ result = rgvPositions.get(0).intValue();
+ }
+ } else {
+ if ((1737000L - (nowPosition - position)) < Difference){
+ Difference = 1737000L - (nowPosition - position);
+ result = rgvPositions.get(0).intValue();
+ }
+ }
+ }
+ return result;
+ }
+
+ //id鍒濆鍖�
+ public static List<BasDevpPosition> devpNoInit(List<BasDevpPosition> devpPosition){
+ long i = 0;
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ i++;
+ basDevpPosition.setId(i);
+ }
+ return devpPosition;
+ }
+
+
+ //绔欑偣鎺掑簭
+ public static BasDevpPosition[] devpNoSort(List<BasDevpPosition> devpPosition1,Integer devpNo){
+ List<BasDevpPosition> devpPosition = devpNoInit(devpPosition1);
+ BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.size()];
+ long Difference = 0L;
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ if (basDevpPosition.getDevNo().equals(devpNo)){
+ Difference = basDevpPosition.getId() - 1L;
break;
}
}
- for (int[] steNo : steList){
- int i = steNo[1];
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ long i = basDevpPosition.getId();
if (i > Difference){
- steNo[1] = i - Difference;
+ basDevpPosition.setId(i - Difference);
} else {
- steNo[1] = steList.length + i-Difference;
+ basDevpPosition.setId(devpPosition.size() + i - Difference);
}
- ints[steNo[0]-1] = steNo;
+ basDevpPositions[basDevpPosition.getId().intValue()-1] = basDevpPosition;
}
- return 0;
+ return basDevpPositions;
}
- public static void main(String[] args) {
- int[][] ints = new int[][]{{1,1},{3,3},{2,2},{4,4},{5,5},{6,6},{7,7},{8,8},{9,9},{10,10}};
- int[][] reorderSteId = ReorderSteId(ints, 2);
- for (int[] ste : reorderSteId){
- System.out.println(Arrays.toString(ste));
+ //閫嗗簭鎺掑垪
+ public static BasDevpPosition[] devpNoSortUN(BasDevpPosition[] devpPosition){
+ BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.length];
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ basDevpPositions[devpPosition.length - basDevpPosition.getId().intValue()] = basDevpPosition;
+ }
+ return basDevpPositions;
+ }
+
+ //閫嗗簭鎺掑垪
+ public static boolean devpNoSortbj(BasDevpPosition[] devpPosition,Integer souDevpNo,Integer endDevpNo){
+ int sou = 0;
+ int end = 0;
+ for (int i = 0;i<devpPosition.length;i++){
+ if (devpPosition[i].getDevNo().equals(souDevpNo)){
+ sou = i;
+ }
+ if (devpPosition[i].getDevNo().equals(endDevpNo)){
+ end = i;
+ }
+ }
+
+ return sou>end;
+ }
+
+ //鎻愬彇绔欑偣闆嗗悎
+ public static List<Integer> WrkMastExtractSites(List<WrkMast> wrkMastList){
+ List<Integer> siteList = new ArrayList<>();
+ for (WrkMast wrkMast : wrkMastList){
+ if (!siteList.contains(wrkMast.getSourceStaNo())){
+ siteList.add(wrkMast.getSourceStaNo());
+ }
+ }
+ 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;
+ }
+
+ //鎻愬彇绔欑偣闆嗗悎X2
+ public static List<Integer> ExtractSitesComplex(List<Integer> siteList){
+ siteList.addAll(siteList);
+ return siteList;
+ }
+
+ //闆嗗悎杞暟缁�
+ public static int[] SetToArrayConversion(List<Integer> siteList){
+ int[] nums = new int[siteList.size()];
+ for (int i = 0;i<siteList.size();i++){
+ nums[i] = siteList.get(i);
+ }
+ return nums;
+ }
+
+ //鑾峰彇浠诲姟瀵嗛泦鍖�
+ public static List<Integer> ObtainDenseAreasSite(List<Integer> siteList,List<Integer> devpList){
+
+ List<Integer> siteLists = ExtractSitesComplex(devpList);
+ int[] nums = SetToArrayConversion(siteLists);
+
+ List<Integer> champion = new ArrayList<>();
+ for (int rangeArea = 1; rangeArea<=devpList.size();rangeArea++){
+ List<List<Integer>> subsets = getConsecutiveSubsets(nums, rangeArea);
+ if (subsets != null){
+ int temporaryMaxCount = 0;
+ List<Integer> championTemporary = new ArrayList<>();
+ int championCount = 0;
+
+ for (List<Integer> one : subsets){
+ int intersectionSize = getIntersectionSize(siteList, one);
+ if (intersectionSize == temporaryMaxCount){
+ championCount++;
+ championTemporary = one;
+ } else if (intersectionSize > temporaryMaxCount){
+ championCount = 1 ;
+ temporaryMaxCount = intersectionSize;
+ championTemporary = one;
+ }
+ }
+ if (championCount == 1){
+ champion = championTemporary;
+ break;
+ }
+ continue;
+ }
+ break;
+ }
+
+ return champion;
+ }
+
+ public static Integer ObtainDenseAreasFirstPlace(List<Integer> siteList,List<Integer> devpList){
+ List<Integer> integers = ObtainDenseAreasSite(siteList, devpList);
+ if (integers==null){
+ return null;
+ }
+ return integers.get(0);
+ }
+
+// public static void main(String[] args) {
+//// int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+// List<Integer> siteList = new ArrayList<Integer>() {{
+// add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9);add(10);
+// }};
+// List<Integer> siteLists = ExtractSitesComplex(siteList);
+// int[] nums = SetToArrayConversion(siteLists);
+// int subsetSize = 5; // 鍙互閫氳繃鐢ㄦ埛杈撳叆鎴栬�呭叾浠栨柟寮忔帶鍒�
+// List<List<Integer>> subsets = getConsecutiveSubsets(nums, subsetSize);
+// if (subsets != null){
+// for (List<Integer> subset : subsets) {
+// System.out.println(subset);
+// }
+// } else {
+// System.out.println("瀛愰泦澶у皬蹇呴』澶т簬0涓斿皬浜庣瓑浜庢暟缁勯暱搴�");
+// }
+// }
+
+ public static List<List<Integer>> getConsecutiveSubsets(int[] nums, int size) {
+ List<List<Integer>> result = new ArrayList<>();
+
+ // 纭繚瀛愰泦鐨勫ぇ灏忓悎娉�
+ if (size > nums.length || size <= 0) {
+// throw new IllegalArgumentException("瀛愰泦澶у皬蹇呴』澶т簬0涓斿皬浜庣瓑浜庢暟缁勯暱搴�");
+ return null;
+ }
+
+ // 閫氳繃婊戝姩绐楀彛娉曠敓鎴愮浉閭荤殑瀛愰泦
+ for (int i = 0; i <= nums.length - size; i++) {
+ List<Integer> subset = new ArrayList<>();
+ for (int j = 0; j < size; j++) {
+ subset.add(nums[i + j]);
+ }
+ if (!result.contains(subset)){
+ result.add(subset);
+ }
+ }
+
+ return result;
+ }
+
+ public static int getIntersectionSize(List<Integer> listA, List<Integer> listB) {
+ // 浣跨敤闆嗗悎鏉ュ瓨鍌ㄤ氦闆嗗厓绱狅紝閬垮厤閲嶅
+ Set<Integer> intersection = new HashSet<>(listA);
+
+ // 淇濈暀闆嗗悎A鍜岄泦鍚圔涓殑鍏卞悓鍏冪礌
+ intersection.retainAll(listB);
+
+ // 杩斿洖浜ら泦鐨勫ぇ灏�
+ return intersection.size();
+ }
+
+// public static void main(String[] args) {
+// int[][] ints = new int[][]{{1,1},{3,3},{2,2},{4,4},{5,5},{6,6},{7,7},{8,8},{9,9},{10,10}};
+//
+// int[][] reorderSteId = ReorderSteId(ints, 2);
+// for (int[] ste : reorderSteId){
+// System.out.println(Arrays.toString(ste));
+// }
+//
+// long[] longs = new long[]{1L,1000L,200000L,1100000L,1600000L};
+// long l = LatelyAndLessThan(longs, 1100000L);
+// System.out.println("l:"+l);
+// }
+
+
+// public static void main(String[] args) {
+// int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+// List<List<Integer>> subsets = getSubsets(nums);
+//
+// for (List<Integer> subset : subsets) {
+// System.out.println(subset);
+// }
+// }
+//
+// public static List<List<Integer>> getSubsets(int[] nums) {
+// List<List<Integer>> result = new ArrayList<>();
+// generateSubsets(0, nums, new ArrayList<>(), result);
+// return result;
+// }
+//
+// private static void generateSubsets(int index, int[] nums, List<Integer> current, List<List<Integer>> result) {
+// if (index == nums.length) {
+// result.add(new ArrayList<>(current));
+// return;
+// }
+//
+// // 涓嶅寘鍚綋鍓嶅厓绱犵殑瀛愰泦
+// generateSubsets(index + 1, nums, current, result);
+//
+// // 鍖呭惈褰撳墠鍏冪礌鐨勫瓙闆�
+// current.add(nums[index]);
+// generateSubsets(index + 1, nums, current, result);
+//
+// // 鍥炴函
+// current.remove(current.size() - 1);
+// }
+
+ /* 濂戒笢瑗匡紝鍋氳褰�
+ public static void main(String[] args) {
+ int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ int subsetSize = 3; // 鍙互閫氳繃鐢ㄦ埛杈撳叆鎴栬�呭叾浠栨柟寮忔帶鍒�
+ List<List<Integer>> subsets = getConsecutiveSubsets(nums, subsetSize);
+
+ for (List<Integer> subset : subsets) {
+ System.out.println(subset);
}
}
+
+ public static List<List<Integer>> getConsecutiveSubsets(int[] nums, int size) {
+ List<List<Integer>> result = new ArrayList<>();
+
+ // 纭繚瀛愰泦鐨勫ぇ灏忓悎娉�
+ if (size > nums.length || size <= 0) {
+ throw new IllegalArgumentException("瀛愰泦澶у皬蹇呴』澶т簬0涓斿皬浜庣瓑浜庢暟缁勯暱搴�");
+ }
+
+ // 閫氳繃婊戝姩绐楀彛娉曠敓鎴愮浉閭荤殑瀛愰泦
+ for (int i = 0; i <= nums.length - size; i++) {
+ List<Integer> subset = new ArrayList<>();
+ for (int j = 0; j < size; j++) {
+ subset.add(nums[i + j]);
+ }
+ result.add(subset);
+ }
+
+ return result;
+ }
+ * */
+
+
+// public static void main(String[] args) {
+// // 绀轰緥鍒楄〃A鍜屽垪琛˙
+// List<Integer> listA = new ArrayList<>();
+// List<Integer> listB = new ArrayList<>();
+//
+// // 鍒濆鍖栧垪琛ˋ
+// listA.add(1);
+// listA.add(2);
+// listA.add(3);
+// listA.add(4);
+// listA.add(5);
+//
+// // 鍒濆鍖栧垪琛˙
+// listB.add(3);
+// listB.add(4);
+// listB.add(5);
+// listB.add(6);
+// listB.add(7);
+//
+// // 璁$畻浜ら泦鏁伴噺
+// int intersectionSize = getIntersectionSize(listA, listB);
+// System.out.println("浜ら泦鐨勬暟閲忔槸: " + intersectionSize);
+// }
+
+
}
--
Gitblit v1.9.1