|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.text.DecimalFormat; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Arrays; | 
|---|
|  |  |  | import java.util.Collections; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by vincent on 2020/8/27 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public class Utils { | 
|---|
|  |  |  | public static final List<Integer> FIRST_GROUP_ROW_LIST = new ArrayList<Integer>() {{ | 
|---|
|  |  |  | add(1);add(2); | 
|---|
|  |  |  | }}; | 
|---|
|  |  |  | public static final List<Integer> SECOND_GROUP_ROW_LIST = new ArrayList<Integer>() {{ | 
|---|
|  |  |  | add(3);add(4); | 
|---|
|  |  |  | }}; | 
|---|
|  |  |  | public static final List<Integer> FIRST_GROUP_ROW_LIST2 = new ArrayList<Integer>() {{ | 
|---|
|  |  |  | add(5);add(6); | 
|---|
|  |  |  | }}; | 
|---|
|  |  |  | public static final List<Integer> SECOND_GROUP_ROW_LIST2 = new ArrayList<Integer>() {{ | 
|---|
|  |  |  | add(7);add(8); | 
|---|
|  |  |  | }}; | 
|---|
|  |  |  | public static List<String> getGroupLocNo(String locNo, Boolean pakIn) { | 
|---|
|  |  |  | int row = getRow(locNo); | 
|---|
|  |  |  | List<String> result = new ArrayList<>(); | 
|---|
|  |  |  | if (FIRST_GROUP_ROW_LIST.contains(row)) { | 
|---|
|  |  |  | for (Integer groupRow : FIRST_GROUP_ROW_LIST) { | 
|---|
|  |  |  | result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (SECOND_GROUP_ROW_LIST.contains(row)) { | 
|---|
|  |  |  | List<Integer> clone = Arrays.asList(new Integer[SECOND_GROUP_ROW_LIST.size()]); | 
|---|
|  |  |  | Collections.copy(clone, SECOND_GROUP_ROW_LIST); | 
|---|
|  |  |  | Collections.reverse(clone); | 
|---|
|  |  |  | for (Integer integer : clone) { | 
|---|
|  |  |  | result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if (FIRST_GROUP_ROW_LIST2.contains(row)) { | 
|---|
|  |  |  | for (Integer groupRow : FIRST_GROUP_ROW_LIST2) { | 
|---|
|  |  |  | result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (SECOND_GROUP_ROW_LIST2.contains(row)) { | 
|---|
|  |  |  | List<Integer> clone = Arrays.asList(new Integer[SECOND_GROUP_ROW_LIST2.size()]); | 
|---|
|  |  |  | Collections.copy(clone, SECOND_GROUP_ROW_LIST2); | 
|---|
|  |  |  | Collections.reverse(clone); | 
|---|
|  |  |  | for (Integer integer : clone) { | 
|---|
|  |  |  | result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!pakIn) { | 
|---|
|  |  |  | //出库,反转数据 | 
|---|
|  |  |  | Collections.reverse(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final DecimalFormat fmt = new DecimalFormat("##0.00"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 通过库位号获取 列 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static int getBay(String locNo) { | 
|---|
|  |  |  | if (!Cools.isEmpty(locNo)) { | 
|---|
|  |  |  | return Integer.parseInt(locNo.substring(2, 5)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | throw new RuntimeException("库位解析异常"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 通过库位号获取 层 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static int getLev(String locNo) { | 
|---|
|  |  |  | if (!Cools.isEmpty(locNo)) { | 
|---|
|  |  |  | return Integer.parseInt(locNo.substring(5, 7)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | throw new RuntimeException("库位解析异常"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 通过排列层获取库位号 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static String getLocByRBL(int row, int bay, int lev) { | 
|---|
|  |  |  | StringBuffer sb = new StringBuffer(); | 
|---|
|  |  |  | if (row < 10) { | 
|---|
|  |  |  | sb.append("0"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append(row); | 
|---|
|  |  |  | if (bay < 10) { | 
|---|
|  |  |  | sb.append("00"); | 
|---|
|  |  |  | } else if (bay < 100) { | 
|---|
|  |  |  | sb.append("0"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append(bay); | 
|---|
|  |  |  | if (lev < 10) { | 
|---|
|  |  |  | sb.append("0"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append(lev); | 
|---|
|  |  |  | return sb.toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 当检索到双深库位的浅库位时,如果深库位无货,则放入对应的深库位 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static void toDeepIfEmptyByShallow(String shallowLoc) { | 
|---|