自动化立体仓库 - WMS系统
pang.jiabao
2024-07-05 07c572bea979dbd3ee46ec24083cb1bdcc014e3a
一期找库位方法修改
4个文件已修改
112 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/LocMastMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocMastMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -46,4 +46,12 @@
    LocMast queryEmptyLocNoByStaNo(@Param("crnNo") int crnNo);
    LocMast queryLocByBarCode(@Param("row") int row);
    /**
     * 获取满足条件的空库位
     * @param devpNo 入库站点
     * @param flag 层标识,1表示去1-6层,2去表示7-11层
     * @return 库位
     */
    LocMast queryLocByBarCodeNew(@Param("devpNo") int devpNo, @Param("flag") int flag);
}
src/main/java/com/zy/common/service/CommonService.java
@@ -511,12 +511,17 @@
    public StartupDto emptyIngetLocNo(Integer devpNo) {
        int crnNo = 0;
        // 目标库位
        LocMast locMast = null;
        if (devpNo == 304) {
            crnNo = 3;
            locMast = locMastMapper.queryEmptyLocNoByStaNo(crnNo);
        } else if(devpNo == 204) {
            crnNo = 2;
        } else if(devpNo == 104) {
            crnNo = 1;
        }
        // 目标库位
        LocMast locMast = locMastMapper.queryEmptyLocNoByStaNo(crnNo);
        if (locMast == null) {
            throw new CoolException("没有空库位");
@@ -598,4 +603,64 @@
        startupDto.setLocNo(locMast.getLocNo());
        return startupDto;
    }
    /**
     * 一期寻找库位
     * 1-6层 条码1或者2开头
     * 7-11层 条码8开头
     * @param ioType 1.入库
     * @param devpNo 入库站点
     * @param barcode 条码
     * @return 库位信息
     */
    public StartupDto getLocNoNew(int ioType, Integer devpNo, String barcode) {
        char type = barcode.charAt(0);
        int flag = 0;
        if (type == '1' || type == '2') {
            flag = 1;
        } else if( type == '8') {
            flag = 2;
        }
        if (flag == 0) {
            throw new CoolException("条码有误:" + barcode);
        }
        // 目标库位
        LocMast locMast = locMastMapper.queryLocByBarCodeNew(devpNo,flag);
        if (locMast == null) {
            throw new CoolException("入库没有空库位");
        }
        // 堆垛机号
        Integer crnNo = locMast.getCrnNo();
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", ioType)
                .eq("stn_no", devpNo)
                .eq("crn_no", crnNo);
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            log.error("入库路径不存在, staDescId={}, sourceStaNo={}, crnNo={}", 1, devpNo, crnNo);
            throw new CoolException("入库路径不存在");
        }
        // 检测目标站
        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
        if (!staNo.getAutoing().equals("Y")) {
            throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
        }
        basCrnpService.checkSiteStatus(crnNo, true);
        // 返回dto
        StartupDto startupDto = new StartupDto();
        startupDto.setWorkNo(getWorkNo(0));
        startupDto.setCrnNo(crnNo);
        startupDto.setSourceStaNo(devpNo);
        startupDto.setStaNo(devpNo);
        startupDto.setLocNo(locMast.getLocNo());
        return startupDto;
    }
}
src/main/java/com/zy/common/web/WcsController.java
@@ -127,7 +127,8 @@
        if (devpNo == 304) {
            dto = commonService.getLocNoBy304(str5.get(0));
        } else {
            dto = commonService.getLocNo(1, 1, devpNo, false, matNos, locTypeDto,0);
//            dto = commonService.getLocNo(1, 1, devpNo, false, matNos, locTypeDto,0);
            dto = commonService.getLocNoNew(1, devpNo,barcode);
        }
        int workNo = dto.getWorkNo();
@@ -197,11 +198,11 @@
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
        // 检索库位
        StartupDto dto;
        if (devpNo >= 300) {
//        if (devpNo >= 300) {
            dto = commonService.emptyIngetLocNo(devpNo);
        } else {
            dto = commonService.getLocNo(1, 10, devpNo, true, null, locTypeDto, 0);
        }
//        } else {
//            dto = commonService.getLocNo(1, 10, devpNo, true, null, locTypeDto, 0);
//        }
        int workNo = dto.getWorkNo();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
src/main/resources/mapper/LocMastMapper.xml
@@ -183,7 +183,7 @@
        SELECT TOP 1 loc_no AS locNo,crn_no AS crnNo FROM asr_loc_mast
        where loc_sts = 'O'
        <if test="crnNo == 1">
            and row1 in(1,2)
            and row1 in(1,2,3)
        </if>
        <if test="crnNo == 2">
            and row1 in(5,6)
@@ -197,4 +197,24 @@
        SELECT TOP 1 loc_no AS locNo,crn_no AS crnNo FROM asr_loc_mast
        where loc_sts = 'O' and row1 = #{row} ORDER BY lev1 ASC, bay1 ASC
    </select>
    <select id="queryLocByBarCodeNew" resultType="com.zy.asrs.entity.LocMast">
        SELECT TOP 1 loc_no AS locNo,crn_no AS crnNo FROM asr_loc_mast
        where loc_sts = 'O' and bay1 not in(1,39)
        <if test="devpNo == 104">
            and row1 in(1,2,3)
        </if>
        <if test="devpNo == 204">
            and row1 in(4,5)
        </if>
        <if test="devpNo == 304">
            and row1 in(6,7)
        </if>
        <if test="flag == 1">
            and lev1 in(1,2,3,4,5,6)
        </if>
        <if test="flag == 2">
            and lev1 in(7,8,9,10,11)
        </if>
        ORDER BY lev1 ASC, bay1 ASC
    </select>
</mapper>