自动化立体仓库 - WMS系统
#
luxiaotao1123
2023-02-14 da6f4aa61363a5eb5cdaa7cbfd2847bdd79324ab
#
4个文件已修改
117 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/Shelves.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -128,15 +128,7 @@
    @Override
    public Integer getOutCrnNo(LocMast locMast) {
        int row = Utils.getRow(locMast.getLocNo());
        if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
            return 1;
        }
        if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
            return 3;
        } else {
            return locMast.getCrnNo();
        }
        return 1;
    }
}
src/main/java/com/zy/asrs/utils/Utils.java
@@ -189,26 +189,12 @@
    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("库位解析异常");
            }
        // 出库
        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("库位解析异常");
            }
            return -1;
        }
    }
src/main/java/com/zy/common/model/Shelves.java
@@ -110,7 +110,7 @@
    }
    public static void main(String[] args) throws InterruptedException {
        Shelves shelves = new Shelves(1,1);
        Shelves shelves = new Shelves(2,1);
        System.out.println(shelves.nodes.toString());
        int start = 1;
        while (true) {
src/main/java/com/zy/common/service/CommonService.java
@@ -168,21 +168,20 @@
        // 如果没有相近物料,则按规则轮询货架
        if (null == locMast) {
            if (whsType == 1) {
                if (curRow == 2) {
                    curRow = 30;
                } else if (curRow == 30) {
                    curRow = 2;
                }
            if (curRow == 1) {
                curRow = 11;
            } else {
                curRow = 1;
            }
            if (basCrnpService.checkSiteError(dualCrnNo, true)) {
                crnNo = dualCrnNo;
            if (basCrnpService.checkSiteError(1, true)) {
                crnNo = 1;
            }
        }
        if (crnNo == 0) {
            throw new CoolException("没有可用的堆垛机");
        }
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", staDescId)
@@ -208,63 +207,21 @@
        // 1.当检索库排为浅库位排时,优先寻找当前库排的深库位排
        if (locMast == null) {
            if (whsType == 1) {
                List<Integer> rows = Utils.getGroupLoc(curRow);
            List<Integer> rows = Utils.getGroupLoc(curRow);
//                Iterator<Integer> iterator = rows.iterator();
//                while (iterator.hasNext()) {
//                    Integer next = iterator.next();
//                    if (next.equals(17) || next.equals(18)) {
//                        iterator.remove();
//                    }
//                }
                List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), locTypeDto.getLocType1());
                if (!Cools.isEmpty(locMasts)) {
                    Integer innermostRow = Utils.getOutLayerRow(locMasts.get(0).getLocNo(), false);
                    for (LocMast one : locMasts) {
                        if (one.getRow1().equals(innermostRow)) {
                            locMast = one;
                            break;
                        }
            List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), locTypeDto.getLocType1());
            if (!Cools.isEmpty(locMasts)) {
                Integer innermostRow = Utils.getOutLayerRow(locMasts.get(0).getLocNo(), false);
                for (LocMast one : locMasts) {
                    if (one.getRow1().equals(innermostRow)) {
                        locMast = one;
                        break;
                    }
                }
                // 因库位移转、需预留空库位 todo:luxiaotao
//            if (!locMastService.checkEmptyCount(locMast)) {
//                locMast = null;
//            }
            } else {
                if (Utils.isShallowLoc(slaveProperties, curRow)) {
                    Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
                    locMast = locMastService.queryFreeLocMast0(deepRow, locTypeDto.getLocType1());
                    // 因库位移转、需预留空库位
                    if (locMast !=null && !locMastService.checkEmptyCount(locMast)) {
                        locMast = null;
                    }
                }
                if (Cools.isEmpty(locMast)) {
                    locMast = locMastService.queryFreeLocMast0(curRow, locTypeDto.getLocType1());
                    // 因库位移转、需预留空库位
                    if (!locMastService.checkEmptyCount(locMast)) {
                        locMast = null;
                    }
                    // 目标库位 ===>> 浅库位, 则校验其深库位是否为 F D X
                    if (null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
                        LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo()));
                        if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
                            locMast = null;
                        }
                    }
                    // 目标库位 ===>> 深库位, 则校验其浅库位是否为 O
                    if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
                        LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
                        if (!shallowLoc.getLocSts().equals("O")) {
                            locMast = null;
                        }
                    }
                }
            }
            // 因库位移转、需预留空库位 todo:luxiaotao
            if (!locMastService.checkEmptyCount(locMast)) {
                locMast = null;
            }
        }