#
Junjie
2024-06-04 467cf514220791ac70a6aa152038cfb698f660d0
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java
@@ -6,6 +6,7 @@
import com.zy.asrs.common.domain.dto.StartupDto;
import com.zy.asrs.common.domain.entity.StaDesc;
import com.zy.asrs.common.sys.service.StaDescService;
import com.zy.asrs.common.utils.Utils;
import com.zy.asrs.common.utils.VersionUtils;
import com.zy.asrs.common.wms.entity.*;
import com.zy.asrs.framework.common.Cools;
@@ -15,6 +16,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
@@ -41,6 +43,8 @@
    private LocDetlService locDetlService;
    @Autowired
    private LocRuleService locRuleService;
    @Autowired
    private LocDirectionService locDirectionService;
    /**
     * 生成工作号
@@ -228,6 +232,13 @@
                throw new CoolException("入库路径不存在");
            }
            //找相同空托盘
            LambdaQueryWrapper<LocMast> wrapper0 = new LambdaQueryWrapper<LocMast>()
                    .eq(LocMast::getLocSts, "D")
                    .eq(LocMast::getLocType1, locTypeDto.getLocType1())
                    .eq(LocMast::getCrnNo, staDesc.getDeviceNo())
                    .eq(LocMast::getHostId, hostId);
            LambdaQueryWrapper<LocMast> wrapper1 = new LambdaQueryWrapper<LocMast>()
                    .eq(LocMast::getLocSts, "O")
                    .eq(LocMast::getLocType1, locTypeDto.getLocType1())
@@ -245,13 +256,26 @@
                wrapper1.le(LocMast::getLev1, locRangeDto.getTargetLev());
            }
            List<LocMast> locMasts = locMastService.list(wrapper1);
            if (!locMasts.isEmpty()) {
                for (LocMast loc : locMasts) {
            List<LocMast> locMasts0 = locMastService.list(wrapper0);
            if (!locMasts0.isEmpty()) {
                for (LocMast loc : locMasts0) {
                    LocMast locMast0 = locMastService.findNearloc(loc.getLocNo(), hostId, locRangeDto);
                    if (null != locMast0) {
                        locMast = locMast0;
                        break;
                    }
                }
            }
            if (locMast == null) {
                List<LocMast> locMasts = locMastService.list(wrapper1);
                if (!locMasts.isEmpty()) {
                    for (LocMast loc : locMasts) {
                        LocMast locMast0 = locMastService.findNearloc(loc.getLocNo(), hostId, locRangeDto);
                        if (null != locMast0) {
                            locMast = locMast0;
                            break;
                        }
                    }
                }
            }
@@ -276,9 +300,20 @@
            throw new CoolException("入库路径不存在");
        }
        RowLastno rowLastno = rowLastnoService.getOne(new LambdaQueryWrapper<RowLastno>().eq(RowLastno::getWhsType, 1).eq(RowLastno::getHostId, hostId));
        if (Cools.isEmpty(rowLastno)) {
            throw new CoolException("1数据异常,请联系管理员");
        }
        int curRow = rowLastno.getCurrentRow();
        int sRow = rowLastno.getStartRow();
        int eRow = rowLastno.getTargetRow();
        LambdaQueryWrapper<LocMast> wrapper1 = new LambdaQueryWrapper<LocMast>()
                .eq(LocMast::getLocSts, "O")
                .eq(LocMast::getHostId, hostId);
                .eq(LocMast::getHostId, hostId)
                .in(LocMast::getRow1, curRow)
                .orderByAsc(LocMast::getLev1);
        //库位搜索范围
        LocRangeDto locRangeDto = locTypeDto.getLocRangeDto();
        if (locRangeDto != null) {
@@ -291,11 +326,38 @@
        }
        List<LocMast> locMasts = locMastService.list(wrapper1);//搜索货物
        for (LocMast mast : locMasts) {
            if (VersionUtils.checkLocType(mast, locTypeDto)) {
                locMast = mast;
            LocMast innerLoc = null;
            for (String loc : Utils.getGroupLoc(mast.getLocNo(), hostId)) {
                LocMast one = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, loc).eq(LocMast::getHostId, hostId));
                if (!one.getLocSts().equals("O")) {
                    innerLoc = null;
                    continue;
                }
                if (innerLoc == null) {
                    List<Integer> innerDeepRow = locDirectionService.getInnerDeepRow(hostId);
                    if (innerDeepRow.contains(one.getRow1())) {
                        innerLoc = one;
                    }
                }
            }
            if(innerLoc == null) {
                continue;
            }
            if (VersionUtils.checkLocType(innerLoc, locTypeDto)) {
                locMast = innerLoc;
                break;
            }
        }
        curRow++;
        if (curRow > eRow) {
            curRow = sRow;
        }
        rowLastno.setCurrentRow(curRow);
        rowLastnoService.updateById(rowLastno);
        return locMast;
    }
@@ -325,6 +387,7 @@
        startupDto.setSourceStaNo(sourceStaNo);
        startupDto.setStaNo(staNo.getDevNo());
        startupDto.setLocNo(locMast.getLocNo());
        startupDto.setCrnNo(locMast.getCrnNo());
        return startupDto;
    }
}