自动化立体仓库 - WMS系统
dubin
2026-02-07 8bc35cc4f75cfb435577e34763002f69def6a1a2
src/main/java/com/zy/common/service/CommonService.java
@@ -119,7 +119,15 @@
    @Transactional
    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, LocTypeDto locTypeDto) {
        whsType = Utils.GetWhsType(sourceStaNo);
        return getLocNoToOne(whsType, staDescId, sourceStaNo, matnr, batch, grade, 0, locTypeDto, 0);
        StartupDto startupDto = new StartupDto();
        if (staDescId == 1){
            // 满托盘入库
            startupDto =  getLocNoToOne(whsType, staDescId, sourceStaNo, matnr, batch, grade, 0, locTypeDto, 0);
        }else if (staDescId == 10){
            // 空托盘入库
            startupDto =  getLocNoToTwo(whsType, staDescId, sourceStaNo, matnr, batch, grade, 0, locTypeDto, 0);
        }
        return startupDto;
    }
    /**
@@ -378,18 +386,80 @@
        return startupDto;
    }
    /*镇江恒立单伸立库逻辑*/
    /*镇江恒立单伸立库逻辑 满托盘入库*/
    @Transactional
    public StartupDto getLocNoToOne(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) {
        //目标库位
        LocMast locMast = null;
        if (locTypeDto.getLocType2()==5||locTypeDto.getLocType2()==6||locTypeDto.getLocType2()==4){
            //1号巷道 3种货物类型
        if (locTypeDto.getLocType2()==5){
            //1号巷道 单独的托盘
            locMast=locMastService.queryLocToOne(locTypeDto.getLocType2());
        }else if (locTypeDto.getLocType2() == 6){
            //1号巷道 混用托盘
            locMast=locMastService.queryLocToSpecal(locTypeDto.getLocType1());
        }else if (locTypeDto.getLocType2()==7||locTypeDto.getLocType2()==8){
            //2号巷道 2种货物类型
            locMast=locMastService.queryLocToTwo(locTypeDto.getLocType2());
        }else {
            throw new CoolException("不存在该库位类型:"+locTypeDto.getLocType2());
        }
        if (locMast == null){
            throw new CoolException("入库没有空库位");
        }
        //堆垛机号
        Integer crnNo = locMast.getCrnNo();
        //获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", staDescId)
                .eq("stn_no", sourceStaNo)
                .eq("crn_no", crnNo);
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)){
            log.error("入库路径不存在,staDesc={},sourceStaNo={},crnNo={}",1,staDescId,crnNo);
            throw new CoolException("入库路径不存在");
        }
        //检测目标站
        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
        if (!staNo.getAutoing().equals("Y")){
            throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
        }
        //生成工作号
        int workNo = getWorkNo(0);
        //返回dto
        StartupDto startupDto =new StartupDto();
        startupDto.setWorkNo(workNo);
        startupDto.setLocNo(locMast.getLocNo());
        startupDto.setStaNo(staNo.getDevNo());
        startupDto.setCrnNo(crnNo);
        startupDto.setSourceStaNo(sourceStaNo);
        return startupDto;
    }
    /*镇江恒立单伸立库逻辑 空托盘入库*/
    @Transactional
    public StartupDto getLocNoToTwo(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) {
        //目标库位
        LocMast locMast = null;
        if (locTypeDto.getLocType2()==5){
            //1号巷道 单独的托盘
            locMast=locMastService.queryLocToOne(locTypeDto.getLocType2());
        }else if (locTypeDto.getLocType2() == 6){
            //1号巷道 混用托盘
            locMast=locMastService.queryLocToSpecal(locTypeDto.getLocType1());
        }else if (locTypeDto.getLocType2()==7||locTypeDto.getLocType2()==8){
            //2号巷道 2种货物类型
            locMast=locMastService.queryLocToTwo(locTypeDto.getLocType2());
        }else {
            throw new CoolException("不存在该库位类型:"+locTypeDto.getLocType2());
        }