自动化立体仓库 - WMS系统
#
1
1 天以前 1d469834074a19ce291f70a783d9d7725430a6fa
src/main/java/com/zy/common/service/CommonService.java
@@ -1046,18 +1046,17 @@
        // 开始查找库位 ==============================>>
        // 1.按规则查找库位
        if (Cools.isEmpty(locMast) && sourceStaNo != 4006) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
        if (Cools.isEmpty(locMast) && sourceStaNo != 4006) {//si'lou'p四楼盘点选择区域
                 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));//最浅库位
                    .orderBy("lev1", true).orderBy("bay1", true)); // 最浅库位
            for (LocMast locMast1 : locMasts) {
                if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                    continue;
                }
                if (Utils.BooleanWhsTypeStaIoType(rowLastno)) {
                    //获取目标库位所在巷道最深空库位
                    // 获取目标库位所在巷道最深空库位
                    LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow, nearRow, locMast1, rowLastnoType.getType().longValue());
                    if (!Cools.isEmpty(locMast2) && locMast2.getRow1() == curRow) {
                        locMast = locMast2;
@@ -1065,12 +1064,98 @@
                    }
                }
            }
        } else {
            // 根据 findLocNoAttributeVo.getOutArea() 设置列范围
            int startBay = 1;
            int endBay = 19;
            switch (findLocNoAttributeVo.getOutArea()) {
                case 1:
                    startBay = 15;
                    endBay = 19;
                    break;
                case 2:
                    startBay = 8;
                    endBay = 14;
                    break;
                case 3:
                    startBay = 1;
                    endBay = 8;
                    break;
                default:
                    break;
            }
            // 优先从指定列范围查找
            boolean found = false;
            // 按照排号从38到32递减查找,优先查找指定列范围(如1-8、8-14、15-19)
            for (int row = 38; row >= 32; row--) {
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                        .eq("row1", row)
                        .ge("bay1", startBay)
                        .le("bay1", endBay)
                        .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;
                    }
                    if (Utils.BooleanWhsTypeStaIoType(rowLastno)) {
                        // 获取目标库位所在巷道最深空库位
                        LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow, nearRow, locMast1, rowLastnoType.getType().longValue());
                        if (!Cools.isEmpty(locMast2) && locMast2.getRow1() == curRow) {
                            locMast = locMast2;
                            found = true;
                            break;
                        }
                    }
                }
                if (found) {
                    break; // 找到目标库位后跳出循环
                }
            }
            // 如果没有在优先范围内找到合适库位,继续进行全局查找(1-19列)
            if (!found) {
                // 从排号38到32查找所有列(1-19)
                for (int row = 38; row >= 32; row--) {
                    List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                            .eq("row1", row)
                            .ge("bay1", 1)  // 查找1到19列
                            .le("bay1", 19)
                            .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;
                        }
                        if (Utils.BooleanWhsTypeStaIoType(rowLastno)) {
                            // 获取目标库位所在巷道最深空库位
                            LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow, nearRow, locMast1, rowLastnoType.getType().longValue());
                            if (!Cools.isEmpty(locMast2) && locMast2.getRow1() == curRow) {
                                locMast = locMast2;
                                found = true;
                                break;
                            }
                        }
                    }
                    if (found) {
                        break; // 找到目标库位后跳出循环
                    }
                }
            }
        }
//        else{
//            if(findLocNoAttributeVo.getOutArea() == 1){
//
//            }
//        }
        // 递归查询
        if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) {