自动化立体仓库 - WMS系统
zwl
2025-07-19 3084c9009f80d86c0a69f7cb4e644a14a2280e4b
src/main/java/com/zy/common/service/CommonService.java
@@ -100,19 +100,33 @@
//        whsType = getWhsType(sourceStaNo, times);
        StartupDto startupDto = new StartupDto();
        if (sourceStaNo < 200){
            whsType = 1;
        } else if (sourceStaNo > 199 && sourceStaNo < 300){
            whsType = 2;
        } else if (sourceStaNo > 299 && sourceStaNo < 400){
//        if (sourceStaNo < 200){
//            whsType = 1;
//        } else if (sourceStaNo > 199 && sourceStaNo < 300){
//            whsType = 2;
//        } else if (sourceStaNo > 299 && sourceStaNo < 400){
//            whsType = 3;
//        } else if (sourceStaNo > 399){
//            whsType = 4;
//        }
        // 目标堆垛机号
        int crnNo = 0;
        if (sourceStaNo ==102) {
            whsType = 3;
        } else if (sourceStaNo > 399){
            whsType = 4;
        }
            crnNo = 3;
        }else if (sourceStaNo ==104) {
            whsType = 2;
            crnNo = 2;
        }else if(sourceStaNo ==106) {
            whsType = 1;
            crnNo = 1;
        }else
            throw new CoolException("站点数据异常,请联系管理员");
        RowLastno rowLastno = rowLastnoService.selectById(whsType);
        if (Cools.isEmpty(rowLastno)) {
            throw new CoolException("数据异常,请联系管理员");
            throw new CoolException("1数据异常,请联系管理员");
        }
        // ===============>>>> 开始执行
@@ -121,8 +135,7 @@
        int eRow = rowLastno.geteRow();
        int crn_qty = rowLastno.getCrnQty();
        int rowCount = eRow - sRow + 1;
        // 目标堆垛机号
        int crnNo = 0;
        // 目标库位
        LocMast locMast = null;
@@ -160,6 +173,9 @@
                    // 检测目标库位是否为空库位
                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                    if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
                        if (shallowLoc.getLocType1()<locTypeDto.getLocType1()){
                            continue;
                        }
                        if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
                            locMast = shallowLoc;
                            crnNo = locMast.getCrnNo();
@@ -172,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);
@@ -183,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;
            }
        }
@@ -234,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;
                        }
                    }
                }
            }