自动化立体仓库 - WMS系统
whycq
2024-06-28 52805a2308f901610e3c2e26ad2212138bca8070
src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
@@ -56,6 +56,12 @@
        return SUCCESS;
    }
    public ReturnT<String> start4(AgvWrkMast agvWrkMast) {
        // locType 1. 自动, 2. 手动
        doAutoMove3(agvWrkMast);
        return SUCCESS;
    }
    //根据库位的loctype值发送任务--弃用
    private ReturnT<String> doAutoMove(AgvLocMast agvLocMast) {
        Date now = new Date();
        //查询工作档
@@ -64,7 +70,7 @@
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索库位,选择合适的库位
        AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3());
        AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3(),false,true);
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
@@ -87,6 +93,7 @@
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        mast.setLogErrMemo("doAutoMove");
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
@@ -182,26 +189,58 @@
    private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        //检索库位,选择合适的库位
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo());
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true);
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("暂无库位");
        }
        AgvWrkMast workingMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locMast.getLocNo()));
        if (!Cools.isEmpty(workingMast)) {
            throw new CoolException("当前库位正在进行入库,进行下一次轮询");
        }
        agvWrkMast.setWrkSts(201L);
        agvWrkMast.setLocNo(locMast.getLocNo());
        agvWrkMastService.updateById(agvWrkMast);
        //更新目标库位状态
        updateAgvLocMast(locMast,"S");
        AgvLocMast locMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locMast.getLocNo()));
        log.info("自动调拨任务 ==> 源库位:{},目标库位:{},库位状态{}",agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo(),locMast1.getLocSts());
        return SUCCESS;
    }
    private ReturnT<String> doAutoMove3(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        //检索库位,选择合适的库位
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,false);
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("暂无库位");
        }
        agvWrkMast.setWrkSts(201L);
        agvWrkMast.setLocNo(locMast.getLocNo());
        agvWrkMast.setLogErrMemo("start2-doAutoMove2");
        agvWrkMastService.updateById(agvWrkMast);
        //更新目标库位状态
        updateAgvLocMast(locMast,"S");
        return SUCCESS;
    }
    private ReturnT<String> doHandMove2(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        AgvBasDevp devpNo = agvCommonService.getDevpNo(3, 1, "Y", "Y");
        String lev1 = agvWrkMast.getSourceLocNo().substring(agvWrkMast.getSourceLocNo().length() - 4).substring(0, 2);
        AgvBasDevp devpNo = new AgvBasDevp();
        if ("01".equals(lev1)) {
            devpNo = agvCommonService.getDevpNo(3, 1, "Y", "Y");
        } else {
            devpNo = agvCommonService.getDevpNo(3, 4, "Y", "Y");
        }
        if (Cools.isEmpty(devpNo)) {
            throw new CoolException("暂无空闲接驳位");
        }
        agvWrkMast.setWrkSts(201L);
        agvWrkMast.setLocNo(devpNo.getDevNo());
        agvWrkMast.setLogErrMemo("start3-doHandMove2");
        agvWrkMastService.updateById(agvWrkMast);
        updateAgvBasDevp(devpNo,"S",null,agvWrkMast.getBarcode());
        return SUCCESS;
@@ -261,6 +300,7 @@
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        mast.setLogErrMemo("autoEmptyBack");
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
@@ -274,7 +314,7 @@
        Date now = new Date();
        AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo());
        //检索空闲接驳位,选择合适的接驳位
        AgvLocMast locMast = agvCommonService.getLocNo(3, 1);
        AgvLocMast locMast = agvCommonService.getLocNo(3, 1,true,true);
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("1楼暂无空库位");
        }
@@ -283,6 +323,7 @@
        agvWrkMast.setLocNo(locMast.getLocNo());
        agvWrkMast.setModiUser(9527L);
        agvWrkMast.setModiTime(now);
        agvWrkMast.setLogErrMemo("autoEmptyBack3");
        if (!agvWrkMastService.updateById(agvWrkMast)) {
            throw new CoolException("保存工作档失败");
        }
@@ -299,7 +340,7 @@
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索库位,选择合适的库位
        AgvLocMast LocMast = agvCommonService.getLocNo(3,1);
        AgvLocMast LocMast = agvCommonService.getLocNo(3,1,true,true);
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
@@ -322,6 +363,7 @@
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        mast.setLogErrMemo("autoEmptyBack2");
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
@@ -361,7 +403,7 @@
            ioType = 109;
        } else {
            //检索库位,选择合适的库位
            locMast = agvCommonService.getLocNo(3,1);
            locMast = agvCommonService.getLocNo(3,1,true,true);
            locNo = locMast.getLocNo();
            wrkSts = 201L;
            ioType = 109;
@@ -389,6 +431,7 @@
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        mast.setLogErrMemo("autoEmptyBack4");
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
@@ -427,6 +470,7 @@
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        mast.setLogErrMemo("autoEmptyBack5");
        // 判断 接驳点是否自动
        if ("Y".equals(agvBasDevp.getAutoing())) {
            //工作状态
@@ -434,7 +478,7 @@
            //入出库类型
            mast.setIoType(109);
            //检索库位,选择合适的库位
            AgvLocMast locMast = agvCommonService.getLocNo(3,1);
            AgvLocMast locMast = agvCommonService.getLocNo(3,1,true,true);
            mast.setLocNo(locMast.getLocNo());
            updateAgvLocMast(locMast,"S");
        } else {
@@ -483,6 +527,7 @@
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        mast.setLogErrMemo("autoEmptyBack6");
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }