From fd1bfa1163d438ec6cabfdd6e01e632d31189c80 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 12 五月 2023 12:34:10 +0800 Subject: [PATCH] 库位规则、混载库位 --- src/main/java/com/zy/asrs/utils/Utils.java | 219 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 192 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index d862716..250745d 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -148,6 +148,26 @@ } /** + * 閫氳繃搴撲綅鍙疯幏鍙� 鍒� + */ + public static int getBay(String locNo) { + if (!Cools.isEmpty(locNo)) { + return Integer.parseInt(locNo.substring(2, 5)); + } + throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + } + + /** + * 閫氳繃搴撲綅鍙疯幏鍙� 灞� + */ + public static int getLev(String locNo) { + if (!Cools.isEmpty(locNo)) { + return Integer.parseInt(locNo.substring(5, 7)); + } + throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + } + + /** * 褰撴绱㈠埌鍙屾繁搴撲綅鐨勬祬搴撲綅鏃讹紝濡傛灉娣卞簱浣嶆棤璐э紝鍒欐斁鍏ュ搴旂殑娣卞簱浣� */ public static void toDeepIfEmptyByShallow(String shallowLoc) { @@ -165,7 +185,9 @@ } - + public static String getLocNo(Number row, Number bay, Number lev) { + return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2); + } public static List<String> getGroupLoc(String locNo){ int row = getRow(locNo); @@ -183,32 +205,32 @@ } return result; } + if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)) { + List<String> result = new ArrayList<>(); + for (Integer row0 : CommonService.FIRST_GROUP_ROW_LIST_SHORT) { + result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); + } + return result; + } + if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) { + List<String> result = new ArrayList<>(); + for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) { + result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); + } + return result; + } throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); } public static Integer getOutLayerRow(String locNo, Boolean pakin){ int row = getRow(locNo); - // 鍏ュ簱 - if (pakin) { - if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { - return 17; - } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { - return 18; - } else { - return -1; -// throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); - } - // 鍑哄簱 + if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { + return 4; + } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { + return 5; } else { - if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { - return 2; - } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { - return 30; - } else { - return -1; -// throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); - } + return -1; } } @@ -216,8 +238,12 @@ public static List<Integer> getGroupLoc(Integer row){ if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { return CommonService.FIRST_GROUP_ROW_LIST; + } else if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)) { + return CommonService.FIRST_GROUP_ROW_LIST_SHORT; } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { return CommonService.SECOND_GROUP_ROW_LIST; + } else if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) { + return CommonService.THIRD_GROUP_ROW_LIST; } else { throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); } @@ -228,14 +254,28 @@ int row = getRow(locNo); List<String> result = new ArrayList<>(); if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { - for (Integer integer : CommonService.FIRST_GROUP_ROW_LIST) { - if (integer < row) { + List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST.size()]); + Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); } else { break; } } - } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { + } else if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)){ + List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST_SHORT.size()]); + Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST_SHORT); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)){ List<Integer> clone = Arrays.asList(new Integer[CommonService.SECOND_GROUP_ROW_LIST.size()]); Collections.copy(clone, CommonService.SECOND_GROUP_ROW_LIST); Collections.reverse(clone); @@ -246,14 +286,63 @@ break; } } - } else { -// throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + } else if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)){ + for (Integer integer : CommonService.THIRD_GROUP_ROW_LIST) { + if (integer < row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } + return result; + } + + // 澶栦晶鏂瑰悜鐨勮揣浣� 浼樺厛鍏ュ簱鏂瑰悜/浼樺厛鍑哄簱鏂瑰悜 + public static List<String> getGroupOuterLocIoPri(String locNo){ + int row = getRow(locNo); + List<String> result = new ArrayList<>(); + if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { + for (Integer integer : CommonService.FIRST_GROUP_ROW_LIST) { + if (integer < row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)){ + for (Integer integer : CommonService.FIRST_GROUP_ROW_LIST_SHORT) { + if (integer < row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)){ + for (Integer integer : CommonService.SECOND_GROUP_ROW_LIST) { + if (integer < row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)){ + List<Integer> clone = Arrays.asList(new Integer[CommonService.THIRD_GROUP_ROW_LIST.size()]); + Collections.copy(clone, CommonService.THIRD_GROUP_ROW_LIST); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } } return result; } public static void main(String[] args) { - System.out.println(JSON.toJSONString(getGroupInsideLoc("2300101"))); + System.out.println(JSON.toJSONString(getGroupOuterLoc("0200101"))); } // 鍐呬晶鏂瑰悜鐨勮揣浣� 浼樺厛鍏ュ簱鏂瑰悜/浼樺厛鍑哄簱鏂瑰悜 ===>> 鍙嶄箣 @@ -271,8 +360,30 @@ break; } } + } else if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)) { + List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST_SHORT.size()]); + Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST_SHORT); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { - for (Integer integer : CommonService.SECOND_GROUP_ROW_LIST) { + List<Integer> clone = Arrays.asList(new Integer[CommonService.SECOND_GROUP_ROW_LIST.size()]); + Collections.copy(clone, CommonService.SECOND_GROUP_ROW_LIST); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) { + for (Integer integer : CommonService.THIRD_GROUP_ROW_LIST) { if (integer < row) { result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); } else { @@ -288,4 +399,58 @@ return result; } + // 澶栦晶鏂瑰悜鐨勮揣浣� 浼樺厛鍏ュ簱鏂瑰悜/浼樺厛鍑哄簱鏂瑰悜 ===>> 鍙嶄箣 + public static List<String> getGroupOutsideLoc(String locNo){ + int row = getRow(locNo); + List<String> result = new ArrayList<>(); + if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) { + for (Integer integer : CommonService.THIRD_GROUP_ROW_LIST) { + if (integer < row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { + List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST.size()]); + Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)) { + List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST_SHORT.size()]); + Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST_SHORT); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { + List<Integer> clone = Arrays.asList(new Integer[CommonService.SECOND_GROUP_ROW_LIST.size()]); + Collections.copy(clone, CommonService.SECOND_GROUP_ROW_LIST); + Collections.reverse(clone); + for (Integer integer : clone) { + if (integer > row) { + result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2)); + } else { + break; + } + } + } else { +// throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + } + if (!Cools.isEmpty(result)) { + Collections.reverse(result); + } + return result; + } + } -- Gitblit v1.9.1