| package com.zy.asrs.utils; | 
|   | 
| import com.zy.asrs.entity.param.OrderToLine; | 
| import com.zy.asrs.utils.param.ItemUtilParam; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.regex.Pattern; | 
|   | 
| public class ToSortLineUtils { | 
|     private static final String  sign_F = "|F|LABEL_"; | 
|   | 
|     public static void main(String[] args) { | 
|         int itemTypes = 5; | 
|   | 
|         List<GroupedLockerOptimizerUtils.Item> items = new ArrayList<>(); | 
|   | 
|         for (int i = 0; i < itemTypes; i++) { | 
|             String name = i+"a"; | 
|             int maxCapacity = i*10; | 
|             int stock = i*11; | 
|             items.add(new GroupedLockerOptimizerUtils.Item(name, maxCapacity, stock)); | 
|         } | 
|   | 
|         // 使用分组优先算法 | 
|         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)); | 
|             } | 
|         } | 
|         System.out.println("\n" + solution); | 
|     } | 
|   | 
|     public static String MergerParameter(String sku,String po,String upc){ | 
|         return sku+sign_F+po+sign_F+upc; | 
|     } | 
|   | 
|     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; | 
|         } | 
|     } | 
|     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)); | 
|                 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; | 
|     } | 
|   | 
|     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; | 
|     } | 
|   | 
| } |