自动化立体仓库 - WMS系统
#
whycq
2024-05-22 81672518fc9a2e86c5c34dba341aaa535c2f069d
src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
@@ -45,6 +45,17 @@
        return SUCCESS;
    }
    public ReturnT<String> start2(AgvWrkMast agvWrkMast) {
        // locType 1. 自动, 2. 手动
        doAutoMove2(agvWrkMast);
        return SUCCESS;
    }
    public ReturnT<String> start3(AgvWrkMast agvWrkMast) {
        // locType 1. 自动, 2. 手动
        doHandMove2(agvWrkMast);
        return SUCCESS;
    }
    private ReturnT<String> doAutoMove(AgvLocMast agvLocMast) {
        Date now = new Date();
        //查询工作档
@@ -119,7 +130,7 @@
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
        mast.setWrkSts(201L);
        mast.setWrkSts(21L);
        //入出库类型
        mast.setIoType(111);
        mast.setIoTime(now);
@@ -134,7 +145,7 @@
        //容器类型
        mast.setWhsType(30);
        // 目标楼层
        mast.setPreHave(agvLocMast.getLocType3().toString());
        mast.setPauseMk(agvLocMast.getLocType3().toString());
        mast.setAppeUser(9527L);
        mast.setAppeTime(now);
@@ -164,10 +175,37 @@
        });
        //更新目标库位状态
        updateAgvLocMast(agvLocMast,"R");
        updateAgvBasDevp(devpNo,"S");
        updateAgvBasDevp(devpNo,"S",null,agvLocMast.getBarcode());
        return SUCCESS;
    }
    private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        //检索库位,选择合适的库位
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo());
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("暂无库位");
        }
        agvWrkMast.setWrkSts(201L);
        agvWrkMast.setLocNo(locMast.getLocNo());
        agvWrkMastService.updateById(agvWrkMast);
        //更新目标库位状态
        updateAgvLocMast(locMast,"S");
        return SUCCESS;
    }
    private ReturnT<String> doHandMove2(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        AgvBasDevp devpNo = agvCommonService.getDevpNo(3, 1);
        if (Cools.isEmpty(devpNo)) {
            throw new CoolException("暂无空闲接驳位");
        }
        agvWrkMast.setWrkSts(201L);
        agvWrkMast.setLocNo(devpNo.getDevNo());
        agvWrkMastService.updateById(agvWrkMast);
        updateAgvBasDevp(devpNo,"S",null,agvWrkMast.getBarcode());
        return SUCCESS;
    }
    /*
    更新目标库位信息
     */
@@ -184,6 +222,13 @@
            agvBasDevpService.updateById(agvBasDevp);
        }
    }
    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode){
        if(!Cools.isEmpty(agvBasDevp)){
            agvBasDevp.setLocSts(locSts);
            agvBasDevp.setBarcode(containerCode);
            agvBasDevpService.updateById(agvBasDevp);
        }
    }
    public ReturnT<String> autoEmptyBack(AgvLocMast agvLocMast) {
        Date now = new Date();
@@ -192,6 +237,61 @@
        if(!Cools.isEmpty(agvWrkMast)){
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索空闲接驳位,选择合适的接驳位
        AgvBasDevp devpNo = agvCommonService.getDevpNo(3, agvLocMast.getFloor());
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
        mast.setWrkSts(21L);
        //入出库类型
        mast.setIoType(109);
        mast.setIoTime(now);
        //优先级
        mast.setIoPri(300.0);
        //源站点
        mast.setSourceLocNo(agvLocMast.getLocNo());
        //目标站点
        mast.setLocNo(devpNo.getDevNo());
        //容器编码
        mast.setBarcode(agvLocMast.getBarcode());
        //容器类型
        mast.setWhsType(30);
        mast.setAppeUser(9527L);
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
        //更新目标库位状态
        updateAgvLocMast(agvLocMast,"R");
        updateAgvBasDevp(devpNo,"S",agvLocMast.getLocType2(),agvLocMast.getBarcode());
        return SUCCESS;
    }
    public ReturnT<String> autoEmptyBack3(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        //检索空闲接驳位,选择合适的接驳位
        AgvLocMast locMast = agvCommonService.getLocNo(3, 1);
        //目标站点
        agvWrkMast.setLocNo(locMast.getLocNo());
        agvWrkMast.setModiUser(9527L);
        agvWrkMast.setModiTime(now);
        if (!agvWrkMastService.updateById(agvWrkMast)) {
            throw new CoolException("保存工作档失败");
        }
        //更新目标库位状态
        updateAgvLocMast(locMast,"S");
        return SUCCESS;
    }
    public ReturnT<String> autoEmptyBack2(AgvLocMast agvLocMast) {
        Date now = new Date();
        //查询工作档
        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode());
        if(!Cools.isEmpty(agvWrkMast)){
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索库位,选择合适的库位
        AgvLocMast LocMast = agvCommonService.getLocNo(3,1);
        //生成工作档