zwl
2025-07-05 9b6a50bf1288d2f7f06a67bec0c902d1256e44fe
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java
@@ -46,6 +46,8 @@
    @Autowired
    private LocDirectionService locDirectionService;
    private Long WHS_TYPE = 0L;//默认立库
    /**
     * 生成工作号
     *
@@ -91,6 +93,11 @@
     */
    @Transactional
    public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo, List<String> matnrs, String batch, Long hostId, LocTypeDto locTypeDto, int times) {
        if (sourceStaNo==999){//平库内置判断站点(临时解决方案)
            WHS_TYPE = 1L;//平库
        } else {
            WHS_TYPE = 0L;//立库
        }
        // 目标库位
        LocMast locMast = null;
@@ -150,10 +157,10 @@
                continue;
            }
            List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd(), hostId);
            List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd(), hostId,WHS_TYPE);
            for (LocMast locMast0 : locMasts) {
                //预留空库位
                if (locMastService.checkEmptyCount(locMast0, 10, hostId)) {
                if (locMastService.checkEmptyCount(locMast0, 5, hostId)) {
                    return locMast0;
                }
            }
@@ -237,12 +244,14 @@
                    .eq(LocMast::getLocSts, "D")
                    .eq(LocMast::getLocType1, locTypeDto.getLocType1())
                    .eq(LocMast::getCrnNo, staDesc.getDeviceNo())
                    .eq(LocMast::getWhsType, WHS_TYPE)
                    .eq(LocMast::getHostId, hostId);
            LambdaQueryWrapper<LocMast> wrapper1 = new LambdaQueryWrapper<LocMast>()
                    .eq(LocMast::getLocSts, "O")
                    .eq(LocMast::getLocType1, locTypeDto.getLocType1())
                    .eq(LocMast::getCrnNo, staDesc.getDeviceNo())
                    .eq(LocMast::getWhsType, WHS_TYPE)
                    .eq(LocMast::getHostId, hostId);
            //库位搜索范围
@@ -312,9 +321,13 @@
        LambdaQueryWrapper<LocMast> wrapper1 = new LambdaQueryWrapper<LocMast>()
                .eq(LocMast::getLocSts, "O")
                .eq(LocMast::getHostId, hostId)
                .in(LocMast::getRow1, curRow)
                .orderByDesc(LocMast::getLev1)
                .orderByDesc(LocMast::getBay1);
                .eq(LocMast::getLocType1, locTypeDto.getLocType1())
                .le(LocMast::getRow1, eRow)
                .ge(LocMast::getRow1, sRow)
//                .in(LocMast::getRow1, curRow)
                .orderByAsc(LocMast::getLev1)
                .orderByAsc(LocMast::getBay1);
        //库位搜索范围
        LocRangeDto locRangeDto = locTypeDto.getLocRangeDto();
@@ -330,18 +343,43 @@
        for (LocMast mast : locMasts) {
            LocMast innerLoc = null;
            for (String loc : Utils.getGroupLoc(mast.getLocNo(), hostId)) {
                //1 2
                LocMast one = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, loc).eq(LocMast::getHostId, hostId));
                if (!one.getLocSts().equals("O")) {
                    innerLoc = null;
//                    innerLoc = null;
                    continue;
                }
                if (innerLoc == null) {
                    List<Integer> innerDeepRow = locDirectionService.getInnerDeepRow(hostId);
                    if (innerDeepRow.contains(one.getRow1())) {
                        innerLoc = one;
                if(Utils.getRow(one.getLocNo())==2){
                    LocMast locMast1=locMastService.getOne(new LambdaQueryWrapper<LocMast>()
                            .eq(LocMast::getRow1, 1)
                            .eq(LocMast::getBay1,one.getBay1())
                            .eq(LocMast::getLev1,one.getLev1())
                            .eq(LocMast::getHostId, hostId));
                    if(!locMast1.getLocSts().equals("F")){
                        continue;
                    }else if (locMast1.getLocSts().equals("O")){
                        one=locMast1;
                    }
                }else if(Utils.getRow(one.getLocNo())==3){
                    LocMast locMast1=locMastService.getOne(new LambdaQueryWrapper<LocMast>()
                            .eq(LocMast::getRow1, 4)
                            .eq(LocMast::getBay1,one.getBay1())
                            .eq(LocMast::getLev1,one.getLev1())
                            .eq(LocMast::getHostId, hostId));
                    if(!locMast1.getLocSts().equals("F")){
                        continue;
                    }else if (locMast1.getLocSts().equals("O")){
                        one=locMast1;
                    }
                }
                innerLoc = one;
//                if (innerLoc == null) {
//                    List<Integer> innerDeepRow = locDirectionService.getInnerDeepRow(hostId);
////                    if (innerDeepRow.contains(one.getRow1())) {
//                    innerLoc = one;
////                    }
//                }
            }
            if(innerLoc == null) {