From 38e180b50cfc86764b8d12872b90af72d6a96083 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 28 十月 2025 19:20:03 +0800
Subject: [PATCH] *待判接口开发
---
src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java | 212 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 186 insertions(+), 26 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java b/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java
index b7992c7..a4e877f 100644
--- a/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java
@@ -1,41 +1,88 @@
package com.zy.asrs.utils;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.StockOutParam;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
public class OutboundAllocationUtil {
+// public static void main(String[] args) {
+// List<Integer> STA_WORK_CU = new ArrayList<Integer>() {{
+// add(101);add(102);add(104);add(105);add(107);add(108);
+// add(111);add(1202);add(1104);add(33105);add(1307);add(108);
+// }};
+// List<Integer> integersStaArr = new ArrayList<>();
+// List<int[]> stalistArr = new ArrayList<>();
+// for(Integer staNo : STA_WORK_CU){
+// int selectCount = staNo*2;
+// if (staNo == 111){
+// selectCount = 9999999;
+// }
+// stalistArr.add(new int[]{staNo, selectCount});
+// }
+//
+//// 鎸塻electCount闄嶅簭鎺掑簭锛堟渶澶х殑鎺掔涓�浣嶏級
+// Collections.sort(stalistArr, (a, b) -> b[1] - a[1]); // 闄嶅簭鎺掑垪
+//// 濡傛灉鎮ㄩ渶瑕佽浆涓烘暟缁勶紙鍙�夛級
+// for (int[] staNowArr : stalistArr){
+// integersStaArr.add(staNowArr[0]);
+// }
+// System.out.println(JSON.toJSONString(integersStaArr));
+// }
public static void main(String[] args) {
- int numLanes = 3;
- int numWarehouses = 2;
- List<Integer> goods = new ArrayList<>();
-
- // Generate random goods// 鐢熸垚闅忔満璐х墿鏁伴噺
- Random random = new Random();
- for (int i = 0; i < numLanes; i++) {
- int goodsCount = random.nextInt(10) + 1; // Randomly generate goods count (1-10)// 闅忔満鐢熸垚璐х墿鏁伴噺 (1-10)
- goods.add(goodsCount);
+ int[] staNos =new int[]{118,120,121};
+ List<Integer> integersStaArr = new ArrayList<>();
+ List<Long[]> stalistArr = new ArrayList<>();
+ for(Integer staNo : staNos){
+ Date modiTime = new Date();
+ stalistArr.add(new Long[]{staNo.longValue(), modiTime.getTime()-staNo.longValue()});
}
- int[] warehouses = distributeGoods(numLanes, numWarehouses,goods);
+ System.out.println(JSON.toJSONString(stalistArr));
+ if (!stalistArr.isEmpty() && stalistArr.size()>1){
+// Collections.sort(stalistArr, (a, b) -> a[1] - b[1]); // 闄嶅簭鎺掑垪
- System.out.println("Goods distribution:");//璐х墿鍒嗛厤鎯呭喌
- for (int i = 0; i < numWarehouses; i++) {
- System.out.println("Warehouse " + (i + 1) + ": " + warehouses[i] + " goods");
+ Collections.sort(stalistArr, Comparator.comparingLong(arr -> arr[1]));
+ for (Long[] staNowArr : stalistArr){
+ integersStaArr.add(staNowArr[0].intValue());
+ }
}
+ System.out.println(JSON.toJSONString(integersStaArr));
- int[] warehouses2 = distributeGoods2(numLanes, numWarehouses,goods);
-
- System.out.println("Goods distribution2:");//璐х墿鍒嗛厤鎯呭喌
- for (int i = 0; i < numWarehouses; i++) {
- System.out.println("Warehouse " + (i + 1) + ": " + warehouses2[i] + " goods");
- }
-
- int totalItems = 1000; // 鏇挎崲涓哄疄闄呯殑鍑哄簱绠卞瓙鏁伴噺
- distributeItemsToTrucks(totalItems);
}
+// public static void main(String[] args) {
+// int numLanes = 3;
+// int numWarehouses = 2;
+// List<Integer> goods = new ArrayList<>();
+//
+// // Generate random goods// 鐢熸垚闅忔満璐х墿鏁伴噺
+// Random random = new Random();
+// for (int i = 0; i < numLanes; i++) {
+// int goodsCount = random.nextInt(10) + 1; // Randomly generate goods count (1-10)// 闅忔満鐢熸垚璐х墿鏁伴噺 (1-10)
+// goods.add(goodsCount);
+// }
+// int[] warehouses = distributeGoods(numLanes, numWarehouses,goods);
+//
+//
+// System.out.println("Goods distribution:");//璐х墿鍒嗛厤鎯呭喌
+// for (int i = 0; i < numWarehouses; i++) {
+// System.out.println("Warehouse " + (i + 1) + ": " + warehouses[i] + " goods");
+// }
+//
+// int[] warehouses2 = distributeGoods2(numLanes, numWarehouses,goods);
+//
+// System.out.println("Goods distribution2:");//璐х墿鍒嗛厤鎯呭喌
+// for (int i = 0; i < numWarehouses; i++) {
+// System.out.println("Warehouse " + (i + 1) + ": " + warehouses2[i] + " goods");
+// }
+//
+// int totalItems = 1000; // 鏇挎崲涓哄疄闄呯殑鍑哄簱绠卞瓙鏁伴噺
+// distributeItemsToTrucks(totalItems);
+// }
public static int[] distributeGoods(int numLanes, int numWarehouses,List<Integer> goods) {
int[] warehouses = new int[numWarehouses];
@@ -153,6 +200,9 @@
List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
List<String> brands = new ArrayList<>();
for (StockOutParam.LocDetl locDetl:locDetls){
+ if (Cools.isEmpty(locDetl.getBrand())){
+ locDetl.setBrand("");
+ }
if (!brands.contains(locDetl.getBrand())){
brands.add(locDetl.getBrand());
}
@@ -166,6 +216,9 @@
List<StockOutParam.LocDetl> locDetls5 = new ArrayList<>();
List<StockOutParam.LocDetl> locDetls6 = new ArrayList<>();
for (StockOutParam.LocDetl locDetl:locDetls){
+ if (Cools.isEmpty(locDetl.getBrand())){
+ locDetl.setBrand("");
+ }
if (locDetl.getBrand().equals(brand)){
switch (Utils.getRow(locDetl.getLocNo())){
case 1: case 2: case 3: case 4:
@@ -200,7 +253,114 @@
int sign = 0;
int staA=118;
- int staB=119;
+ int staB=118;
+ for (List<StockOutParam.LocDetl> locDetlList:lists){
+ sign++;
+ if (locDetlList.size()==0){
+ continue;
+ }
+ if (sign>lists.size()/2) {
+ //120銆�121
+ staA=120;
+ staB=121;
+ }
+ List<StockOutParam.LocDetl> locDetlsA = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetlsB = new ArrayList<>();
+ List<String> locNos = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:locDetlList){
+ if (locDetlsA.size()<locDetlList.size()/2){
+ locDetlsA.add(locDetl);
+ if (!locNos.contains(locDetl.getLocNo())){
+ locNos.add(locDetl.getLocNo());
+ }
+ }else {
+ if (locNos.contains(locDetl.getLocNo())){
+ locDetlsA.add(locDetl);
+ }else {
+ locDetlsB.add(locDetl);
+ }
+ }
+ }
+ if (locDetlsA.size()!=0){
+ StockOutParam stockOutParamA = new StockOutParam();
+ stockOutParamA.setOutSite(staA);
+ stockOutParamA.setOrderNo(param.getOrderNo());
+ stockOutParamA.setLocDetls(locDetlsA);
+ stockOutParams.add(stockOutParamA);
+ }
+ if (locDetlsB.size()!=0){
+ StockOutParam stockOutParamB = new StockOutParam();
+ stockOutParamB.setOutSite(staB);
+ stockOutParamB.setOrderNo(param.getOrderNo());
+ stockOutParamB.setLocDetls(locDetlsB);
+ stockOutParams.add(stockOutParamB);
+ }
+ }
+ }
+
+ return stockOutParams;
+ }
+
+ public static List<StockOutParam> OutboundClassificationNew(StockOutParam param){
+ List<StockOutParam> stockOutParams = new ArrayList<>();
+
+ List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
+ List<String> brands = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:locDetls){
+ if (Cools.isEmpty(locDetl.getBrand())){
+ locDetl.setBrand("");
+ }
+ if (!brands.contains(locDetl.getBrand())){
+ brands.add(locDetl.getBrand());
+ }
+ }
+
+ for (String brand : brands){
+ List<StockOutParam.LocDetl> locDetls1 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls2 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls3 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls4 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls5 = new ArrayList<>();
+ List<StockOutParam.LocDetl> locDetls6 = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:locDetls){
+ if (Cools.isEmpty(locDetl.getBrand())){
+ locDetl.setBrand("");
+ }
+ if (locDetl.getBrand().equals(brand)){
+ switch (Utils.getRow(locDetl.getLocNo())){
+ case 1: case 2: case 3: case 4:
+ locDetls1.add(locDetl);
+ break;
+ case 5: case 6: case 7: case 8:
+ locDetls2.add(locDetl);
+ break;
+ case 9: case 10: case 11: case 12:
+ locDetls3.add(locDetl);
+ break;
+ case 13: case 14: case 15: case 16:
+ locDetls4.add(locDetl);
+ break;
+ case 17: case 18: case 19: case 20:
+ locDetls5.add(locDetl);
+ break;
+ case 21: case 22: case 23: case 24:
+ locDetls6.add(locDetl);
+ break;
+ default:
+ }
+ }
+ }
+ ArrayList<List<StockOutParam.LocDetl>> lists = new ArrayList<>();
+ lists.add(locDetls1);
+ lists.add(locDetls2);
+ lists.add(locDetls3);
+ lists.add(locDetls4);
+ lists.add(locDetls5);
+ lists.add(locDetls6);
+
+ int sign = 0;
+ int staA=118;
+ int staB=118;
for (List<StockOutParam.LocDetl> locDetlList:lists){
sign++;
if (locDetlList.size()==0){
--
Gitblit v1.9.1