自动化立体仓库 - WMS系统
#1
dubin
2025-11-04 57e7846403cd3c72cc70e17e205c4e0d8b3aa404
#1
6个文件已修改
109 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/LocMastMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocMastService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocMastMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -12,7 +12,6 @@
@Mapper
@Repository
public interface LocMastMapper extends BaseMapper<LocMast> {
    LocMast queryFreeLocMast(@Param("row") Integer row, @Param("locType1") Short locType1);
    @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
@@ -47,4 +46,8 @@
    LocMast selectLocByLocStsPakInO2(@Param("locNos") List<String> locNos);
    LocMast selectByBarcode(@Param("zpallet")String zpallet);
    LocMast queryLocToOne(Short locType2);
    LocMast queryLocToTwo(Short locType2);
}
src/main/java/com/zy/asrs/service/LocMastService.java
@@ -52,4 +52,8 @@
    LocMast selectLocByLocStsPakInO(Integer curRow,Integer nearRow,List<String> locNos);
    LocMast selectByBarcode(String zpallet);
    LocMast queryLocToOne(Short locType2);
    LocMast queryLocToTwo(Short locType2);
}
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -71,6 +71,16 @@
    }
    @Override
    public LocMast queryLocToOne(Short locType2) {
        return this.baseMapper.queryLocToOne(locType2);
    }
    @Override
    public LocMast queryLocToTwo(Short locType2) {
        return this.baseMapper.queryLocToTwo(locType2);
    }
    @Override
    public Boolean checkWhole(List<LocDetl> locDetls) {
        return null;
    }
src/main/java/com/zy/common/service/CommonService.java
@@ -119,7 +119,7 @@
    @Transactional
    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, LocTypeDto locTypeDto) {
        whsType = Utils.GetWhsType(sourceStaNo);
        return getLocNo(whsType, staDescId, sourceStaNo, matnr, batch, grade, 0, locTypeDto, 0);
        return getLocNoToOne(whsType, staDescId, sourceStaNo, matnr, batch, grade, 0, locTypeDto, 0);
    }
    /**
@@ -152,15 +152,15 @@
        StartupDto startupDto = new StartupDto();
        RowLastno rowLastno = rowLastnoService.selectById(whsType);
        int sRow = rowLastno.getsRow();
        int eRow = rowLastno.geteRow();
        int crnNumber = rowLastno.getCrnQty();
        int sRow = rowLastno.getsRow(); //起始排号
        int eRow = rowLastno.geteRow(); //终止排号
        int crnNumber = rowLastno.getCrnQty(); //堆垛机数量
        if (Cools.isEmpty(rowLastno)) {
            throw new CoolException("数据异常,请联系管理员");
        }
        // ===============>>>> 开始执行
        curRow = rowLastno.getCurrentRow();
        curRow = rowLastno.getCurrentRow(); //当前排号
        if (!Cools.isEmpty(moveCrnNo) && moveCrnNo != 0) {
            crnNumber = moveCrnNo;
@@ -377,4 +377,56 @@
        startupDto.setLocNo(locNo);
        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;
            //1号巷道 3种托盘类型
        if (locTypeDto.getLocType2()==4||locTypeDto.getLocType2()==5||locTypeDto.getLocType2()==6){
            locMast=locMastService.queryLocToOne(locTypeDto.getLocType2());
        }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;
    }
}
src/main/java/com/zy/common/web/WcsController.java
@@ -118,7 +118,7 @@
        }else if (param.getBarcode().startsWith("8")){
            locTypeDto.setLocType2((short) 8);
        }else {
            throw new CoolException("条码规则不存在");
            throw new CoolException("条码规则不存在:"+param.getBarcode());
        }
        StartupDto dto = null;
src/main/resources/mapper/LocMastMapper.xml
@@ -120,4 +120,30 @@
        SELECT top 1 * FROM [dbo].[asr_loc_mast] WHERE barcode = #{zpallet}
    </select>
    <select id="queryLocToOne" resultMap="BaseResultMap">
        select top 1 loc_no as locNo,crn_no as crnNo from asr_loc_mast
        where loc_status = 'O' and row1 in (1,2)
        <if test="locType2 == 4">
            and lev1 = 1
        </if>
        <if test="locType2 == 5">
            and lev1 in(2,3)
        </if>
        <if test="locType2 == 6">
            and lev1 in(4,5)
        </if>
        order by lev1 asc,bay1 asc
    </select>
    <select id="queryLocToTwo" resultMap="BaseResultMap">
        select top 1 loc_no as locNo,crn_no as crnNo from asr_loc_mast
        where loc_status = 'O' and row1 in (3,4)
        <if test="locType2 == 7">
            and lev1 in(1,2)
        </if>
        <if test="locType2 == 8">
            and lev1 in(3,4,5,6)
        </if>
        order by lev1 asc,bay1 asc
    </select>
</mapper>