自动化立体仓库 - WMS系统
#
zjj
2023-12-26 e81c1dcf8d2cd9a0095039670a1f34e28078fd97
src/main/java/com/zy/asrs/utils/Utils.java
@@ -6,12 +6,59 @@
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");
@@ -144,6 +191,50 @@
    }
    /**
     * 通过库位号获取 列
     */
    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) {