From 9f535f9c6ff8640d0cbbc915235a59d2ee39c702 Mon Sep 17 00:00:00 2001 From: L <L@123> Date: 星期四, 17 七月 2025 18:02:21 +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