自动化立体仓库 - WMS系统
#
ytfl
2 天以前 7e8c672d13a4d5c9ef6d8b62f6fc1ce092a6c123
src/main/java/com/zy/common/service/CommonService.java
@@ -235,7 +235,12 @@
                //尝试找1号弯轨堆垛机库位
                crnNo = 1;
                if (basCrnpService.checkSiteError(crnNo, true)) {
                    List<Integer> nearRowList = new ArrayList<Integer>(){{add(4);add(6);add(3);add(1);}};
                    List<Integer> nearRowList = new ArrayList<Integer>() {{
                        add(4);
                        add(6);
                        add(3);
                        add(1);
                    }};
                    for (Integer near : nearRowList) {
                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                .eq("row1", near)
@@ -247,7 +252,7 @@
                        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 {
                        } else {
                            nearRow = near;
                            break;
                        }
@@ -261,7 +266,12 @@
                //尝试找1号弯轨堆垛机库位
                crnNo = 1;
                if (basCrnpService.checkSiteError(crnNo, true)) {
                    List<Integer> nearRowList = new ArrayList<Integer>(){{add(4);add(6);add(3);add(1);}};
                    List<Integer> nearRowList = new ArrayList<Integer>() {{
                        add(4);
                        add(6);
                        add(3);
                        add(1);
                    }};
                    for (Integer near : nearRowList) {
                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                .eq("row1", near)
@@ -273,7 +283,7 @@
                        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 {
                        } else {
                            nearRow = near;
                            break;
                        }
@@ -283,9 +293,10 @@
                if (nearRow == 0) {
                    throw new CoolException("无可用堆垛机");
                }
            }else {
                throw new CoolException("无可用堆垛机");
            }
//            else {
//                throw new CoolException("无可用堆垛机");
//            }
        }
        boolean signRule1 = false;
@@ -347,7 +358,7 @@
                                    .eq("loc_no", shallowLoc)
                                    .eq("loc_sts", "O")
                            );
                            if(shallowLocMast != null) {
                            if (shallowLocMast != null) {
                                locMast = shallowLocMast;
                                break;
                            }
@@ -433,40 +444,22 @@
        StaDesc staDesc = null;
        BasDevp staNo = null;
        if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) {
            // 获取目标站
            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);
//                throw new CoolException("入库路径不存在");
                crnNo = 0;
            } else {
                staNo = basDevpService.selectById(staDesc.getCrnStn());
                if (!staNo.getAutoing().equals("Y")) {
                    log.error("目标站" + staDesc.getCrnStn() + "不可用");
//                throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
                    crnNo = 0;
                }
                startupDto.setStaNo(staNo.getDevNo());
            }
            // 更新库位排号
            if (Cools.isEmpty(locMast)) {
                rowLastno.setCurrentRow(curRow);
                rowLastnoService.updateById(rowLastno);
            }
        }
        // 开始查找库位 ==============================>>
        // 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())
                    .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)) {
@@ -542,7 +535,7 @@
//                locTypeDto.setLocType1((short)i);
//                return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, 0);
//            }
            log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
            log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{},{}", JSON.toJSONString(locTypeDto), times,moveCrnNo);
            throw new CoolException("没有空库位");
        }
@@ -554,14 +547,43 @@
        if (crnNo == 1) {
            configService.updateValue("123CrnSearchList", String.valueOf(0));
        }
        //针对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()));
            if (!Cools.isEmpty(locMastNew)) {
                locMast = locMastNew;
            }
        }
            // 获取目标站
            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);
//                throw new CoolException("入库路径不存在");
                crnNo = 0;
            } else {
                staNo = basDevpService.selectById(staDesc.getCrnStn());
                if (!staNo.getAutoing().equals("Y")) {
                    log.error("目标站" + staDesc.getCrnStn() + "不可用");
//                throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
                    crnNo = 0;
                }
                startupDto.setStaNo(staNo.getDevNo());
        }
        String locNo = locMast.getLocNo();
        // 生成工作号
        int workNo = getWorkNo(0);
        // 返回dto
        startupDto.setWorkNo(workNo);
        startupDto.setCrnNo(crnNo);
        startupDto.setCrnNo(locMast.getCrnNo());
        startupDto.setSourceStaNo(sourceStaNo);
        startupDto.setLocNo(locNo);
        return startupDto;
@@ -943,6 +965,8 @@
                    .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) {
                if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                    continue;