自动化立体仓库 - WMS系统
#
LSH
2022-11-24 9865c5bb168f1a77d5dec364ae87a4830457cd1b
src/main/java/com/zy/common/service/CommonService.java
@@ -102,17 +102,27 @@
            case 101:
            case 109:
            case 117:
                whsType=1;
                whsType=1;  //1-8货架
                slaveProperties.setDoubleDeep(false);
                slaveProperties.setGroupCount(2);
                break;
            case 201:
                whsType=2;
                slaveProperties.setDoubleDeep(true);
                slaveProperties.setGroupCount(4);
                whsType=2;  //9-12货架
                break;
            case 207:
                whsType=3;
                whsType=3;  //13-14货架
                slaveProperties.setDoubleDeep(false);
                slaveProperties.setGroupCount(2);
                break;
            case 213:
                whsType=4;
                slaveProperties.setDoubleDeep(true);
                slaveProperties.setGroupCount(4);
                whsType=4;  //15-18货架
                break;
            default:
                throw new CoolException("根据入库站获取库位排号分配失败,入库站:" + sourceStaNo);
        }
        StartupDto startupDto = new StartupDto();
@@ -178,30 +188,96 @@
                }
            }
        }
        // 如果没有相近物料,则按规则轮询货架
        if (null == locMast) {
            Shelves shelves = new Shelves(rowCount, crn_qty);
            int divides = (int) Arith.divides(1, curRow - 1, 4);
            curRow = (int) Arith.remainder(curRow, 4);
            if (curRow == 0) {
                curRow = 4;
            }
            for (int i = 0; i < shelves.group; i ++) {
                curRow = shelves.start(curRow);
                if (curRow < 0) {
                    throw new CoolException("检索库位失败,请联系管理员");
                }
                Integer crnNo1 = shelves.get(curRow);
                crnNo1 = crnNo1 + divides*1;
                if (basCrnpService.checkSiteError(crnNo1, true)) {
                    crnNo = crnNo1;
                    curRow = curRow + divides*4;
        if (null == locMast){
            switch (curRow){
                case 1:
                case 3:
                case 5:
                    curRow=curRow+2;
                    crnNo=(curRow+1)/2;
                    break;
                }
                case 7:
                    crnNo=1;
                    curRow=2;
                    break;
                case 13:
                    crnNo=6;
                    curRow=14;
                    break;
                case 2:
                case 4:
                case 6:
                    curRow=curRow+2;
                    crnNo=curRow/2;
                    break;
                case 8:
                    crnNo=1;
                    curRow=1;
                    break;
                case 14:
                    crnNo=6;
                    curRow=13;
                    break;
                case 9:
                    crnNo=5;
                    curRow=12;
                    break;
                case 10:
                    crnNo=5;
                    curRow=11;
                    break;
                case 11:
                    crnNo=5;
                    curRow=9;
                    break;
                case 12:
                    crnNo=5;
                    curRow=10;
                    break;
                case 15:
                    crnNo=7;
                    curRow=18;
                    break;
                case 16:
                    crnNo=7;
                    curRow=17;
                    break;
                case 17:
                    crnNo=7;
                    curRow=15;
                    break;
                case 18:
                    crnNo=7;
                    curRow=16;
                    break;
                default:
                    throw new CoolException("根据入库站获取库位排号分配失败,入库站:" + sourceStaNo);
            }
        }
//        // 如果没有相近物料,则按规则轮询货架
//        if (null == locMast) {
//            Shelves shelves = new Shelves(rowCount, crn_qty);
//            int divides = (int) Arith.divides(1, curRow - 1, 4);
//            curRow = (int) Arith.remainder(curRow, 4);
//            if (curRow == 0) {
//                curRow = 4;
//            }
//            for (int i = 0; i < shelves.group; i ++) {
//                curRow = shelves.start(curRow);
//                if (curRow < 0) {
//                    throw new CoolException("检索库位失败,请联系管理员");
//                }
//                Integer crnNo1 = shelves.get(curRow);
//                crnNo1 = crnNo1 + divides*1;
//                if (basCrnpService.checkSiteError(crnNo1, true)) {
//                    crnNo = crnNo1;
//                    curRow = curRow + divides*4;
//                    break;
//                }
//            }
//        }
        if (crnNo == 0) {
            throw new CoolException("没有可用的堆垛机");
        }