自动化立体仓库 - WMS系统
whycq
2024-05-24 d17a7346759fbb432cea1c83de63d29c6a3d330d
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();
        //查询工作档
@@ -67,9 +78,9 @@
        mast.setSourceLocNo(agvLocMast.getLocNo());
        //目标站点
        mast.setLocNo(LocMast.getLocNo());
        //容器编码
        //货架编码
        mast.setBarcode(agvLocMast.getBarcode());
        //容器类型
        //货架类型
        mast.setWhsType(30);
        mast.setAppeUser(9527L);
@@ -119,7 +130,7 @@
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
        mast.setWrkSts(201L);
        mast.setWrkSts(21L);
        //入出库类型
        mast.setIoType(111);
        mast.setIoTime(now);
@@ -129,12 +140,12 @@
        mast.setSourceLocNo(agvLocMast.getLocNo());
        //目标站点
        mast.setLocNo(devpNo.getDevNo());
        //容器编码
        //货架编码
        mast.setBarcode(agvLocMast.getBarcode());
        //容器类型
        //货架类型
        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,8 +222,70 @@
            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();
        //查询工作档
        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode());
        if(!Cools.isEmpty(agvWrkMast)){
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索空闲接驳位,选择合适的接驳位
        AgvBasDevp devpNo = agvCommonService.getDevpNoisAuto(3, agvLocMast.getFloor(),"Y");
        //生成工作档
        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());
@@ -207,9 +307,9 @@
        mast.setSourceLocNo(agvLocMast.getLocNo());
        //目标站点
        mast.setLocNo(LocMast.getLocNo());
        //容器编码
        //货架编码
        mast.setBarcode(agvLocMast.getBarcode());
        //容器类型
        //货架类型
        mast.setWhsType(30);
        mast.setAppeUser(9527L);