自动化立体仓库 - WMS系统
*
L
5 天以前 e4a7d5239f176c5cf5ba95b52c88366908d2ecfa
src/main/java/com/zy/asrs/utils/OutboundAllocationUtil.java
@@ -1,42 +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});
//        }
//
//// 按selectCount降序排序(最大的排第一位)
//        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];
@@ -207,17 +253,17 @@
            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;
//                }
                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<>();
@@ -314,7 +360,7 @@
            int sign = 0;
            int staA=118;
            int staB=119;
            int staB=118;
            for (List<StockOutParam.LocDetl> locDetlList:lists){
                sign++;
                if (locDetlList.size()==0){