自动化立体仓库 - WMS系统
#
ytfl
3 天以前 387fca449212b4cc7dc09922183a8970011963f0
#
1个文件已修改
144 ■■■■ 已修改文件
src/main/java/com/zy/common/service/CommonService.java 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java
@@ -137,34 +137,23 @@
                Config applyInTaskTotalCountConfig = configService.selectConfigByCode("applyInTaskTotalCount");
                int applyInTaskTotalCount = Integer.parseInt(applyInTaskTotalCountConfig.getValue());
                int crnNo = 6;
                int crnNo = 7;
                boolean flag = true;
                List<String> data = new ArrayList<>();
                while (crnNo > 0) {
                    List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                            .eq("loc_sts", "O")
                            .eq("crn_no", crnNo)
                            .eq("whs_type", rowLastnoType.getType().longValue())
                            .eq("loc_type1", locTypeDto.getLocType1())
                            .eq("loc_type2", locTypeDto.getLocType2())
                    );
                while (crnNo > 1) {
                    crnNo--;
                    List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", crnNo).eq("whs_type", rowLastnoType.getType().longValue()).eq("loc_type1", locTypeDto.getLocType1()).eq("loc_type2", locTypeDto.getLocType2()));
                    if (locMasts.size() <= 15) {
                        log.error(crnNo + "号堆垛机没有空库位!!! 尺寸规格: {}", JSON.toJSONString(locTypeDto));
                        data.add(crnNo + "号没有空库位;");
                    } else {
                        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                                .eq("crn_no", crnNo)
                                .in("io_type", 1, 10, 53, 57)
                        );
                        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57));
                        if (wrkMasts.size() > crnSearchDetectTaskCount) {
                            log.error(crnNo + "号堆垛机已达到入库控制上限!!! 任务数量: {}, 控制数量:{}", wrkMasts.size(), crnSearchDetectTaskCount);
                            data.add(crnNo + "号入库控制上限;");
                            continue;
                        }
                        List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                                .eq("crn_no", crnNo)
                                .in("io_type", 1, 10, 53, 57, 101, 103, 107, 110)
                        );
                        List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57, 101, 103, 107, 110));
                        if (wrkMastsList.size() > applyInTaskTotalCount) {
                            log.error(crnNo + "号堆垛机已达到申请入库时总任务数量上限(入库、出库)!!! 任务数量: {}, 控制数量:{}", wrkMastsList.size(), applyInTaskTotalCount);
                            data.add(crnNo + "号申请入库时总任务数量上限;");
@@ -173,7 +162,7 @@
                        flag = false;
                        break;
                    }
                    crnNo--;
                }
                if (!flag) {
                    return getLocNoRun(whsType, staDescId, sourceStaNo, findLocNoAttributeVo, 0, locTypeDto, 0);
@@ -266,19 +255,13 @@
            curRow = locNecessaryParameters[1];
            crnNo = locNecessaryParameters[2];
            if (basCrnpService.checkSiteError(crnNo, true)) {
                List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                        .eq("crn_no", crnNo)
                        .in("io_type", 1, 10, 53, 57)
                );
                List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57));
                if (wrkMasts.size() > crnSearchDetectTaskCount) {
                    log.error(crnNo + "号堆垛机已达到入库控制上限!!! 任务数量: {}, 控制数量:{}", wrkMasts.size(), crnSearchDetectTaskCount);
                    continue;
                }
                List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                        .eq("crn_no", crnNo)
                        .in("io_type", 1, 10, 53, 57, 101, 103, 107, 110)
                );
                List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57, 101, 103, 107, 110));
                if (wrkMastsList.size() > applyInTaskTotalCount) {
                    log.error(crnNo + "号堆垛机已达到申请入库时总任务数量上限(入库、出库)!!! 任务数量: {}, 控制数量:{}", wrkMastsList.size(), applyInTaskTotalCount);
                    continue;
@@ -286,8 +269,7 @@
                rowCount = locNecessaryParameters[0];
                nearRow = locNecessaryParameters[3];
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                        .eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).eq("io_type", 1));
                if (locMasts.size() - crnCountO <= 15) {
                    log.error(crnNo + "号堆垛机没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
@@ -308,19 +290,13 @@
                    boolean flag = true;
                    //尝试找1号弯轨堆垛机库位
                    crnNo = 1;
                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                            .eq("crn_no", crnNo)
                            .in("io_type", 1, 10, 53, 57)
                    );
                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57));
                    if (wrkMasts.size() > crnSearchDetectTaskCount) {
                        log.error(crnNo + "号堆垛机已达到入库控制上限!!! 任务数量: {}, 控制数量:{}", wrkMasts.size(), crnSearchDetectTaskCount);
                        flag = false;
                    }
                    List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                            .eq("crn_no", crnNo)
                            .in("io_type", 1, 10, 53, 57, 101, 103, 107, 110)
                    );
                    List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57, 101, 103, 107, 110));
                    if (wrkMastsList.size() > applyInTaskTotalCount) {
                        log.error(crnNo + "号堆垛机已达到申请入库时总任务数量上限(入库、出库)!!! 任务数量: {}, 控制数量:{}", wrkMastsList.size(), applyInTaskTotalCount);
                        flag = false;
@@ -334,13 +310,7 @@
                            add(1);
                        }};
                        for (Integer near : nearRowList) {
                            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                    .eq("row1", near)
                                    .eq("loc_sts", "O")
                                    .eq("whs_type", rowLastnoType.getType().longValue())
                                    .eq("loc_type1", locTypeDto.getLocType1())
                                    .eq("loc_type2", locTypeDto.getLocType2())
                            );
                            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", near).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).eq("loc_type1", locTypeDto.getLocType1()).eq("loc_type2", locTypeDto.getLocType2()));
                            int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).eq("io_type", 1));
                            if (locMasts.size() - crnCountO <= 15) {
                                log.error(crnNo + "号堆垛机没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
@@ -360,19 +330,13 @@
                crnNo = 1;
                if (basCrnpService.checkSiteError(crnNo, true)) {
                    boolean flag = true;
                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                            .eq("crn_no", crnNo)
                            .in("io_type", 1, 10, 53, 57)
                    );
                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57));
                    if (wrkMasts.size() > crnSearchDetectTaskCount) {
                        log.error(crnNo + "号堆垛机已达到入库控制上限!!! 任务数量: {}, 控制数量:{}", wrkMasts.size(), crnSearchDetectTaskCount);
                        flag = false;
                    }
                    List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                            .eq("crn_no", crnNo)
                            .in("io_type", 1, 10, 53, 57, 101, 103, 107, 110)
                    );
                    List<WrkMast> wrkMastsList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).in("io_type", 1, 10, 53, 57, 101, 103, 107, 110));
                    if (wrkMastsList.size() > applyInTaskTotalCount) {
                        log.error(crnNo + "号堆垛机已达到申请入库时总任务数量上限(入库、出库)!!! 任务数量: {}, 控制数量:{}", wrkMastsList.size(), applyInTaskTotalCount);
                        flag = false;
@@ -386,13 +350,7 @@
                            add(1);
                        }};
                        for (Integer near : nearRowList) {
                            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                    .eq("row1", near)
                                    .eq("loc_sts", "O")
                                    .eq("whs_type", rowLastnoType.getType().longValue())
                                    .eq("loc_type1", locTypeDto.getLocType1())
                                    .eq("loc_type2", locTypeDto.getLocType2())
                            );
                            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", near).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).eq("loc_type1", locTypeDto.getLocType1()).eq("loc_type2", locTypeDto.getLocType2()));
                            int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).eq("io_type", 1));
                            if (locMasts.size() - crnCountO <= 15) {
                                log.error(crnNo + "号堆垛机没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
@@ -434,8 +392,7 @@
        if (signRule1) {
            if (nearRow != curRow) {
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                        .eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                for (LocMast locMast1 : locMasts) {
                    if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                        continue;
@@ -448,13 +405,7 @@
                        }
                        //获取目标库位所在巷道最浅非空库位
                        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>()
                                .eq("whs_type", rowLastnoType.getType().longValue())
                                .eq("crn_no", locMast1.getCrnNo())
                                .eq("bay1", locMast1.getBay1())
                                .notIn("loc_sts", "O")
                                .orderBy("row1", false)
                        );
                        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("whs_type", rowLastnoType.getType().longValue()).eq("crn_no", locMast1.getCrnNo()).eq("bay1", locMast1.getBay1()).notIn("loc_sts", "O").orderBy("row1", false));
                        if (locMastList.isEmpty()) {
                            locMast = locMast1;
                            break;
@@ -468,10 +419,7 @@
                        LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMastF.getLocNo()));
                        if (!Cools.isEmpty(locDetl) && findLocNoAttributeVo.beSimilar(locDetl)) {
                            String shallowLoc = Utils.getShallowLoc(slaveProperties, locMastF.getLocNo());
                            LocMast shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                                    .eq("loc_no", shallowLoc)
                                    .eq("loc_sts", "O")
                            );
                            LocMast shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "O"));
                            if (shallowLocMast != null) {
                                locMast = shallowLocMast;
                                break;
@@ -531,8 +479,7 @@
        // 靠近摆放规则 --- 空托 //互通版
        if (staDescId == 10 && Utils.BooleanWhsTypeStaIoType(rowLastno)) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow).eq("whs_type", rowLastnoType.getType().longValue()));
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow).eq("whs_type", rowLastnoType.getType().longValue()));
            if (!locMasts.isEmpty()) {
                for (LocMast loc : locMasts) {
                    if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
@@ -571,18 +518,14 @@
        // 1.按规则查找库位
        if (Cools.isEmpty(locMast) && crnNo != 0) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("row1", nearRow)
                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).ne("inv_wh", 1)
                    .orderBy("lev1", true).orderBy("bay1", true));
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).ne("inv_wh", 1).orderBy("lev1", true).orderBy("bay1", true));
            for (LocMast locMast1 : locMasts) {
                if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                    continue;
                }
                if (Utils.BooleanWhsTypeStaIoType(rowLastno)) {
                    String shallowLoc = Utils.getShallowLoc(slaveProperties, locMast1.getLocNo());
                    LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                            .eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                    LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                    if (!Cools.isEmpty(locMast2)) {
                        locMast = locMast2;
                        break;
@@ -602,20 +545,17 @@
                    }
                    if (Utils.BooleanWhsTypeStaIoType(rowLastno)) {
                        String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo());
                        LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                .eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                        LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                        if (!Cools.isEmpty(locMast2)) {
                            locMast = locMast2;
                            break;
                        } else {
                            locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                    .eq("loc_no", shallowLoc).eq("loc_sts", "F").eq("whs_type", rowLastnoType.getType().longValue()));
                            locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "F").eq("whs_type", rowLastnoType.getType().longValue()));
                            if (!Cools.isEmpty(locMast2)) {
                                locMast = locMast1;
                                break;
                            } else {
                                locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                        .eq("loc_no", shallowLoc).eq("loc_sts", "D").eq("whs_type", rowLastnoType.getType().longValue()));
                                locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "D").eq("whs_type", rowLastnoType.getType().longValue()));
                                if (!Cools.isEmpty(locMast2)) {
                                    locMast = locMast1;
                                    break;
@@ -664,8 +604,7 @@
        //针对1号堆垛机打的补丁,防止找到库位时,找到最浅库位
        String deepLoc2 = Utils.getDeepLoc2(slaveProperties, locMast.getLocNo());
        if (!Cools.isEmpty(deepLoc2)) {
            LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", locMast.getCrnNo())
                    .eq("loc_no", deepLoc2).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
            LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", locMast.getCrnNo()).eq("loc_no", deepLoc2).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
            if (!Cools.isEmpty(locMastNew)) {
                locMast = locMastNew;
            }
@@ -673,10 +612,7 @@
        // 获取目标站
        wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", staDescId)
                .eq("stn_no", sourceStaNo)
                .eq("crn_no", locMast.getCrnNo());
        wrapper = new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo).eq("crn_no", locMast.getCrnNo());
        staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
@@ -743,8 +679,7 @@
            curRow = locNecessaryParameters[1];
            crnNo = locNecessaryParameters[2];
            nearRow = locNecessaryParameters[3];
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("crn_no", crnNo).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", crnNo).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
            if (locMasts.size() <= 5) {
                nearRow = 0;
                times++;
@@ -904,8 +839,7 @@
        if (signRule1) {
            if (nearRow != curRow) {
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                        .eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
                for (LocMast locMast1 : locMasts) {
                    //获取巷道
//                    List<String> groupOutsideLocCrn = Utils.getGroupOutLocCrn(curRow,nearRow,locMast1.getLocNo(), curRow>nearRow);
@@ -1046,10 +980,7 @@
        if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) {
            // 获取目标站
            wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", staDescId)
                    .eq("stn_no", sourceStaNo)
                    .eq("crn_no", crnNo);
            wrapper = new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo).eq("crn_no", crnNo);
            staDesc = staDescService.selectOne(wrapper);
            if (Cools.isEmpty(staDesc)) {
                log.error("入库路径不存在:type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
@@ -1074,10 +1005,7 @@
        // 1.按规则查找库位
        if (Cools.isEmpty(locMast) && crnNo != 0) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("row1", nearRow)
                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
                    .orderBy("lev1", true).orderBy("bay1", true));//最浅库位
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).orderBy("lev1", true).orderBy("bay1", true));//最浅库位
            //System.out.println(nearRow);
            //System.out.println(curRow);
            for (LocMast locMast1 : locMasts) {
@@ -1191,10 +1119,7 @@
        if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) {
            // 获取目标站
            wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", staDescId)
                    .eq("stn_no", sourceStaNo)
                    .eq("crn_no", crnNo);
            wrapper = new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo).eq("crn_no", crnNo);
            staDesc = staDescService.selectOne(wrapper);
            if (Cools.isEmpty(staDesc)) {
                log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
@@ -1221,10 +1146,7 @@
        // 1.按规则查找库位
        if (Cools.isEmpty(locMast) && crnNo != 0) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("row1", nearRow)
                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
                    .orderBy("lev1", true).orderBy("bay1", true));//最浅库位
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).orderBy("lev1", true).orderBy("bay1", true));//最浅库位
            for (LocMast locMast1 : locMasts) {
                if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                    continue;