| | |
| | | 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; |
| | |
| | | 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)); |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |