package com.zy.asrs.utils; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.param.OrderToLine; 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 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 items,OrderToLine orderToLine){ Long bindingTag = System.currentTimeMillis();//混搭标记 List 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 货源 bindingTag ); matLists.add(mat); } bindingTag++; } orderToLine.setMatList(matLists); return orderToLine; } }