自动化立体仓库 - WMS系统
*
lsh
2 天以前 bbf11a79fce0131aa95905c09b00f25e7696d20b
src/main/java/com/zy/asrs/utils/ToSortLineUtils.java
@@ -1,7 +1,7 @@
package com.zy.asrs.utils;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.param.OrderToLine;
import com.zy.asrs.utils.param.ItemUtilParam;
import java.util.ArrayList;
import java.util.List;
@@ -36,34 +36,29 @@
        return sku+sign_F+po+sign_F+upc;
    }
    public static OrderToLine GetOrderToLineGro(List<GroupedLockerOptimizerUtils.Item> items,OrderToLine orderToLine){
        List<OrderToLine.MatList> matLists = new ArrayList<>();
        // 使用分组优先算法
        GroupedLockerOptimizerUtils.PackingSolution solution = GroupedLockerOptimizerUtils.packItemsWithGrouping(items);
        for (GroupedLockerOptimizerUtils.Locker locker:solution.lockers) {
            for (String mantnr : locker.contents.keySet()){
                System.out.println(mantnr+"<===>"+locker.contents.get(mantnr));
                String[] split = mantnr.split(Pattern.quote(sign_F));
                OrderToLine.MatList mat = new OrderToLine.MatList(
                        split[0],  // matnr -> sku
                        split[1],  //  supp -> po -> s1
                        locker.contents.get(mantnr).doubleValue(),   //整料
                        split[2],   //barcode -> upc -> s2
                        1,
                        null,   //origin -> supplier 货源
                        locker.bindingTags
                );
                matLists.add(mat);
            }
    public static OrderToLine GetOrderToLine(List<ItemUtilParam.Item> items, OrderToLine orderToLine,String sign){
        switch (sign){
            case "Opt":
                List<OptimizedLockerPackingUtils.Item> itemsOpt = new ArrayList<>();
                for (ItemUtilParam.Item item:items){
                    itemsOpt.add(new OptimizedLockerPackingUtils.Item(item.getName(),item.getMaxCapacity(),item.getStock()));
                }
                return GetOrderToLineOpt(itemsOpt,orderToLine);
            case "Opt3":
                List<OptimizedLockerPacking3Utils.Item> itemsOpt3 = new ArrayList<>();
                for (ItemUtilParam.Item item:items){
                    itemsOpt3.add(new OptimizedLockerPacking3Utils.Item(item.getName(),item.getMaxCapacity(),item.getStock()));
                }
                return GetOrderToLineOpt3(itemsOpt3,orderToLine);
            default:
                return null;
        }
        orderToLine.setMatList(matLists);
        return orderToLine;
    }
    public static OrderToLine GetOrderToLineOpt(List<OptimizedLockerPackingUtils.Item> items,OrderToLine orderToLine){
        List<OrderToLine.MatList> matLists = new ArrayList<>();
        // 使用分组优先算法
        OptimizedLockerPackingUtils.PackingSolution packingSolution = OptimizedLockerPackingUtils.optimizedPacking(items);
//        System.out.println("\n" + packingSolution);
        for (OptimizedLockerPackingUtils.Locker locker:packingSolution.lockers) {
            for (String mantnr : locker.contents.keySet()){
                System.out.println(mantnr+"<===>"+locker.contents.get(mantnr));
@@ -83,4 +78,30 @@
        orderToLine.setMatList(matLists);
        return orderToLine;
    }
    public static OrderToLine GetOrderToLineOpt3(List<OptimizedLockerPacking3Utils.Item> items,OrderToLine orderToLine){
        List<OrderToLine.MatList> matLists = new ArrayList<>();
        // 使用分组优先算法
        OptimizedLockerPacking3Utils.PackingSolution packingSolution = OptimizedLockerPacking3Utils.optimizedPacking(items);
//        System.out.println("\n" + packingSolution);
        for (OptimizedLockerPacking3Utils.Locker locker:packingSolution.lockers) {
            for (String mantnr : locker.contents.keySet()){
//                System.out.println(mantnr+"<===>"+locker.contents.get(mantnr));
                String[] split = mantnr.split(Pattern.quote(sign_F));
                OrderToLine.MatList mat = new OrderToLine.MatList(
                        split[0],  // matnr -> sku
                        split[1],  //  supp -> po -> s1
                        locker.contents.get(mantnr).doubleValue(),   //整料
                        split[2],   //barcode -> upc -> s2
                        1,
                        null,   //origin -> supplier 货源
                        locker.bindingTags
                );
                matLists.add(mat);
            }
        }
        orderToLine.setMatList(matLists);
        return orderToLine;
    }
}