自动化立体仓库 - WMS系统
#
Junjie
2025-06-09 4d1e8953abd9bb35fe6783ccfb4fc6250d13617e
#
1个文件已修改
69 ■■■■■ 已修改文件
src/main/java/com/zy/common/service/CommonService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java
@@ -227,7 +227,35 @@
            }
        }
        if (nearRow == 0) {
            throw new CoolException("无可用堆垛机");
            if (locTypeDto.getLocType2() == 2) {
                //尝试找1号弯轨堆垛机库位
                crnNo = 1;
                if (basCrnpService.checkSiteError(crnNo, true)) {
                    List<Integer> nearRowList = new ArrayList<Integer>(){{add(3);add(4);add(1);add(6);}};
                    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())
                        );
                        int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100));
                        if (locMasts.size() - crnCountO <= 2) {
                            log.error(crnNo + "号堆垛机没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
                        }else {
                            nearRow = near;
                            break;
                        }
                    }
                }
                if (nearRow == 0) {
                    throw new CoolException("无可用堆垛机");
                }
            }else {
                throw new CoolException("无可用堆垛机");
            }
        }
        boolean signRule1 = false;
@@ -258,6 +286,45 @@
                        continue;
                    }
                    if (crnNo == 1) {
                        if (locMast1.getRow1() == 1 || locMast1.getRow1() == 6) {
                            locMast = locMast1;//单深库位直接使用
                            break;
                        }
                        //获取目标库位所在巷道最浅非空库位
                        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", true)
                        );
                        if (locMastList.isEmpty()) {
                            locMast = locMast1;
                            break;
                        }
                        LocMast locMastF = locMastList.get(0);
                        if (!slaveProperties.getDoubleLocs().contains(locMastF.getRow1())) {
                            continue;
                        }
                        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")
                            );
                            if(shallowLocMast != null) {
                                locMast = shallowLocMast;
                                break;
                            }
                        }
                        continue;
                    }
                    //获取目标库位所在巷道最浅非空库位
                    LocMast locMastF = locMastService.selectLocByLocStsPakInF(curRow, nearRow, locMast1, rowLastnoType.getType().longValue());
                    if (!Cools.isEmpty(locMastF) && locMastF.getLocSts().equals("F")) {