自动化立体仓库 - WMS系统
zwl
2025-07-19 3084c9009f80d86c0a69f7cb4e644a14a2280e4b
src/main/java/com/zy/common/service/CommonService.java
@@ -109,14 +109,20 @@
//        } else if (sourceStaNo > 399){
//            whsType = 4;
//        }
        if (sourceStaNo ==101||sourceStaNo==103){
            whsType = 1;
        } else if (sourceStaNo ==105||sourceStaNo==107){
        // 目标堆垛机号
        int crnNo = 0;
        if (sourceStaNo ==102) {
            whsType = 3;
            crnNo = 3;
        }else if (sourceStaNo ==104) {
            whsType = 2;
        } else{
            crnNo = 2;
        }else if(sourceStaNo ==106) {
            whsType = 1;
            crnNo = 1;
        }else
            throw new CoolException("站点数据异常,请联系管理员");
        }
        RowLastno rowLastno = rowLastnoService.selectById(whsType);
        if (Cools.isEmpty(rowLastno)) {
@@ -129,8 +135,7 @@
        int eRow = rowLastno.geteRow();
        int crn_qty = rowLastno.getCrnQty();
        int rowCount = eRow - sRow + 1;
        // 目标堆垛机号
        int crnNo = 0;
        // 目标库位
        LocMast locMast = null;
@@ -183,6 +188,9 @@
        // 如果没有相近物料,则按规则轮询货架
        if (null == locMast) {
            if(crnNo>1) {
                curRow = curRow -2;
            }
            Shelves shelves = new Shelves(rowCount, crn_qty);
            int divides = (int) Arith.divides(1, curRow - 1, 4);
            curRow = (int) Arith.remainder(curRow, 4);
@@ -194,13 +202,13 @@
                if (curRow < 0) {
                    throw new CoolException("检索库位失败,请联系管理员");
                }
                Integer crnNo1 = shelves.get(curRow);
                crnNo1 = crnNo1 + divides*1;
                if (basCrnpService.checkSiteError(crnNo1, true)) {
                    crnNo = crnNo1;
                if (basCrnpService.checkSiteError(crnNo, true)) {
                    curRow = curRow + divides*4;
                    break;
                }
            }
            if(crnNo>1) {
                curRow = curRow +2;
            }
        }
@@ -245,18 +253,20 @@
                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;
                if(curRow >2){
                    // 目标库位 ===>> 浅库位, 则校验其深库位是否为 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;
                    // 目标库位 ===>> 深库位, 则校验其浅库位是否为 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;
                        }
                    }
                }
            }