自动化立体仓库 - WMS系统
LSH
2023-08-14 1a987c661d60c77b258a3be42c09a3fd2ba3ae06
src/main/java/com/zy/common/service/CommonService.java
@@ -126,7 +126,7 @@
                //103站分配1,2堆垛机
                crnNos.add(1);
//                crnNos.add(2);
                crnNos.add(2);
                //分配1,7,8,14排
                rows.add(1);
@@ -141,7 +141,7 @@
                end = 21;
                //203站分配2,3堆垛机
//                crnNos.add(2);
                crnNos.add(2);
                crnNos.add(3);
                //分配8,14,15,21排
@@ -171,7 +171,7 @@
        }
        //3号可以入库前必须打开控制
        if (!Cools.isEmpty(matNos) && crnNo != 2) {
        if (!Cools.isEmpty(matNos)) {
            for (String matNo : matNos) {
                Mat mat = matService.selectByMatnr(matNo);
                if (matType == null) {
@@ -293,26 +293,29 @@
            List<String> groupLoc = Utils.getGroupLoc(wrkMast.getLocNo());
            //随机可用堆垛机号
            Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
            List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, randomCrnNo);
            for (LocMast locMast0 : locMasts) {
                //检测当前库位内侧其他库位是否为D、F、X、S
                if (Utils.checkInsideLocIsDFXS(locMast0.getLocNo())) {
                    //内侧其他库位不是D、F、X、S。不能选取该库位
                    continue;
                }
            for (Integer crnNo : crnNos) {
                List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, crnNo);
                for (LocMast locMast0 : locMasts) {
                    //检测当前库位内侧其他库位是否为D、F、X、S
                    if (Utils.checkInsideLocIsDFXS(locMast0.getLocNo())) {
                        //内侧其他库位不是D、F、X、S。不能选取该库位
                        continue;
                    }
                // 浅库位符合尺寸检测
                if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                    // 浅库位对应堆垛机必须可用且无异常
                    if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                        // 因库位移转、需预留空库位
                        if (locMastService.checkEmptyCount(locMast0, 10)) {
                            locMast = locMast0;
                            break;
                    // 浅库位符合尺寸检测
                    if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                        // 浅库位对应堆垛机必须可用且无异常
                        if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                            // 因库位移转、需预留空库位
                            if (locMastService.checkEmptyCount(locMast0, 10)) {
                                locMast = locMast0;
                                break;
                            }
                        }
                    }
                }
            }
        }
        //找内侧空库位(非最外侧库位)
@@ -333,7 +336,7 @@
                        // 浅库位对应堆垛机必须可用且无异常
                        if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                            // 因库位移转、需预留空库位
                            if (locMastService.checkEmptyCount(locMast0, 10) && locMast0.getCrnNo()!=2) {
                            if (locMastService.checkEmptyCount(locMast0, 10)) {
                                locMast = locMast0;
                                break;
                            }
@@ -347,22 +350,24 @@
        if (locMast == null) {
            //随机可用堆垛机号
            Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1());
            List<LocMast> locMasts = locMastService.findInEmptyLocMast(locTypeDto.getLocType1(), rows, randomCrnNo);//找一条新的空巷道
            for (LocMast locMast0 : locMasts) {
                //检测当前库位内侧其他库位是否为D、F、X
                if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
                    //内侧其他库位不是D、F、X。不能选取该库位
                    continue;
                }
            for (Integer crnNo : crnNos) {
                List<LocMast> locMasts = locMastService.findInEmptyLocMast(locTypeDto.getLocType1(), rows, crnNo);//找一条新的空巷道
                for (LocMast locMast0 : locMasts) {
                    //检测当前库位内侧其他库位是否为D、F、X
                    if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
                        //内侧其他库位不是D、F、X。不能选取该库位
                        continue;
                    }
                // 浅库位符合尺寸检测
                if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                    // 浅库位对应堆垛机必须可用且无异常
                    if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                        // 因库位移转、需预留空库位
                        if (locMastService.checkEmptyCount(locMast0, 10) && locMast0.getCrnNo()!=2) {
                            locMast = locMast0;
                            break;
                    // 浅库位符合尺寸检测
                    if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                        // 浅库位对应堆垛机必须可用且无异常
                        if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                            // 因库位移转、需预留空库位
                            if (locMastService.checkEmptyCount(locMast0, 10)) {
                                locMast = locMast0;
                                break;
                            }
                        }
                    }
                }
@@ -444,10 +449,17 @@
            if (VersionUtils.locMoveCheckLocType(locMast0, locTypeDto)) {
                // 浅库位对应堆垛机必须可用且无异常
                if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                    // 因库位移转、需预留空库位
                    if (locMastService.checkEmptyCount(locMast0, 10)) {
                    Integer outermostRow = Utils.getOutermostRow(locMast0.getLocNo(), true);
                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", outermostRow).eq("bay1", locMast0.getBay1()).eq("lev1", locMast0.getLev1()));
                    if (!locMast1.getLocSts().equals("O") && !locMast0.getRow1().equals(outermostRow)){
                        // 因库位移转、需预留空库位
                        if (locMastService.checkEmptyCount0(locMast0, 5)) {
                            locMast = locMast0;
                        }
                    }else {
                        locMast = locMast0;
                    }
                }
            }
        }