自动化立体仓库 - WMS系统
whycq
2024-06-04 ed0a79ffec5d25dae6b0b24393c331ab36d7d50b
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -9,6 +9,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.CodeDetectionUtil;
import com.zy.common.model.DetlDto;
import com.zy.common.service.AgvCommonService;
import lombok.Synchronized;
@@ -68,6 +69,9 @@
        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
            throw new CoolException(BaseRes.PARAM);
        }
        if (!CodeDetectionUtil.barcodeDetection(param.getBarcode())){
            throw new CoolException(param.getBarcode() + "货架码有误,请正确扫码!!!");
        }
        param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2)));
//        //检查是否已存在相同的货架条码,存在则抛出异常
@@ -116,10 +120,16 @@
        Date now = new Date();
        List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", pickParams.getLocNo()));
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
        if (Cools.isEmpty(agvWrkMast)){
            return "失败,未查到工作主档,工作号:"+pickParams.getWrkNo();
        }
        for (PickParam.Pick pick : pickParams.getPicks()) {
            if (pick.getCount().equals(0D)) continue;
            Double count = 0.0D;
            AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()).eq("supp_code",pick.getSuppCode()));
            if (Cools.isEmpty(agvWrkDetl)) {
                AgvWrkDetl wrkDetl = new AgvWrkDetl();
                Mat mat = matService.selectByMatnr(pick.getMatnr());
@@ -129,7 +139,7 @@
                wrkDetl.sync(mat);
                wrkDetl.setWrkNo(pickParams.getWrkNo());
                wrkDetl.setOrderNo(pick.getOrderNo());
                wrkDetl.setIoTime(now);
                wrkDetl.setIoTime(agvWrkMast.getIoTime());
                wrkDetl.setAnfme(pick.getCount()); // 数量
                wrkDetl.setSuppCode(pick.getSuppCode()); // 货架条码
                wrkDetl.setAppeUser(userId);
@@ -167,7 +177,6 @@
            }
        }
        if (agvLocDetls.size() == sameNumber) {
            AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
            agvWrkMast.setIoType(101);
            agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
        }
@@ -394,15 +403,15 @@
            }
        } else {
            if (agvLocMast.getFloor() != floor) {
                if (floor==1 && agvLocMast.getFloor()!=1){
                    ioType = 121;
                }else {
//                if (floor==1 && agvLocMast.getFloor()!=1){
//                    ioType = 121;
//                }else {
                    if (agvLocMast.getFloor() == 1) {
                        throw new CoolException("当前库位请选择调拨单调拨!");
                    } else {
                        ioType = 12;
                    }
                }
//                }
            } else {
                ioType = 11;
            }
@@ -496,6 +505,9 @@
        Integer oldWrkNo = agvWrkMast.getWrkNo();
        if (Cools.isEmpty(agvWrkMast)) {
            throw new CoolException("工作档中没有此站点任务");
        }
        if (!agvWrkMast.getWrkSts().equals(207L)) {
            throw new CoolException("工作状态不符合离场条件");
        }
        //生成AGV工作历史档 + 生成AGV工作明细历史档
@@ -628,6 +640,12 @@
    @Override
    @Transactional
    public String doBack(AgvMobileStartPakin param, Long userId) {
        if (Cools.isEmpty(param.getBarcode()) || !CodeDetectionUtil.barcodeDetection(param.getBarcode())){
            throw new CoolException(param.getBarcode() + "货架码有误,请正确扫码!!!");
        }
        if (Cools.isEmpty(param.getDevNo()) || !CodeDetectionUtil.carCodeDetection(param.getDevNo())){
            throw new CoolException(param.getDevNo() + "小车地码有误,请正确扫码!!!");
        }
        Date now = new Date();
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
        AgvWrkMast agvWrkMastSource = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));