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