自动化立体仓库 - WMS系统
1
zhangc
2025-01-17 caa6990da2695a79a8df645b8973f88da3346d93
src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
@@ -189,7 +189,7 @@
    private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        //检索库位,选择合适的库位
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true,null);
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true);
        if (Cools.isEmpty(locMast)) {
            log.info("暂无库位");
            return FAIL;
@@ -217,7 +217,7 @@
    private ReturnT<String> doAutoMove3(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        //检索库位,选择合适的库位
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,false,null);
        AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,false);
        if (Cools.isEmpty(locMast)) {
            log.info("暂无库位");
            return FAIL;
@@ -328,7 +328,7 @@
        Date now = new Date();
        AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo());
        //检索空闲接驳位,选择合适的接驳位
        AgvLocMast locMast = agvCommonService.getLocNo(3, 1,true,true,null);
        AgvLocMast locMast = agvCommonService.getLocNo(3, 1,true,true);
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("1楼暂无空库位");
        }
@@ -420,7 +420,7 @@
            ioType = 109;
        } else {
            //检索库位,选择合适的库位
            locMast = agvCommonService.getLocNo(3,1,true,true,null);
            locMast = agvCommonService.getLocNo(3,1,true,true);
            locNo = locMast.getLocNo();
            wrkSts = 201L;
            ioType = 109;
@@ -465,6 +465,84 @@
        return SUCCESS;
    }
    public ReturnT<String> autoEmptyBackSiqi(AgvLocMast agvLocMast) {
        Date now = new Date();
        //查询工作档
        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode());
        if(!Cools.isEmpty(agvWrkMast)){
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        String floor = "";
        String locNo = "";
        Long wrkSts = 0L;
        Integer ioType = 0;
        AgvLocMast locMast = new AgvLocMast();
        if (agvLocMast.getFloor() == 3) {
            floor = "F3";
        } else if(agvLocMast.getFloor() == 2) {
            floor = "F2";
        }
        List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("io_type", 109).like("source_loc_no", floor).or().eq("io_type", 113));
        if (agvWrkMasts.size() >= 5) {
            //log.error("暂停回流");
            return FAIL;
            //throw new CoolException("暂停回流");
        }
        //检索空闲可入接驳位 没有空闲可入接驳位 直接找库位
        AgvBasDevp devpNo = agvCommonService.getDevpNo(6, agvLocMast.getFloor(),"Y","Y");
        if (!Cools.isEmpty(devpNo)) {
            locNo = devpNo.getDevNo();
            wrkSts = 21L;
            ioType = 109;
        } else {
            //检索库位,选择合适的库位
            locMast = agvCommonService.getLocNo(6,1,true,true);
            locNo = locMast.getLocNo();
            wrkSts = 201L;
            ioType = 109;
        }
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
        mast.setWrkSts(wrkSts);
        //入出库类型
        mast.setIoType(ioType);
        mast.setIoTime(now);
        //优先级
        mast.setIoPri(300.0);
        //源站点
        mast.setSourceLocNo(agvLocMast.getLocNo());
        //目标站点
        mast.setLocNo(locNo);
        //货架编码
        mast.setBarcode(agvLocMast.getBarcode());
        //货架类型
        mast.setWhsType(30);
        mast.setAppeUser(9527L);
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        mast.setLogErrMemo("autoEmptyBack4");
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
        //更新目标库位状态
        updateAgvLocMast(agvLocMast,"R");
        if (wrkSts == 21L) {
            updateAgvBasDevp(devpNo,"S",agvLocMast.getLocType2(),agvLocMast.getBarcode());
        } else {
            updateAgvLocMast(locMast,"S");
        }
        return SUCCESS;
    }
    public ReturnT<String> autoEmptyBack5(AgvBasDevp agvBasDevp) {
        //查询工作档
        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvBasDevp.getBarcode());
@@ -495,7 +573,7 @@
            //入出库类型
            mast.setIoType(109);
            //检索库位,选择合适的库位
            AgvLocMast locMast = agvCommonService.getLocNo(3,1,true,true,null);
            AgvLocMast locMast = agvCommonService.getLocNo(3,1,true,true);
            mast.setLocNo(locMast.getLocNo());
            updateAgvLocMast(locMast,"S");
        } else {
@@ -569,7 +647,7 @@
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索库位,选择合适的库位
        AgvLocMast LocMast = agvCommonService.getLocNo(3,1,false,false,null);
        AgvLocMast LocMast = agvCommonService.getLocNo(3,1,false,false);
        if (LocMast.getLev1() != 2) {
            throw new CoolException("目标楼层不是吸塑二楼");
        }