自动化立体仓库 - WMS系统
#
whycq
2024-05-24 4dfc306f910a8b1ae1a2869bc8ffd38b2faf8f2e
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -70,7 +70,7 @@
        }
        param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2)));
//        //检查是否已存在相同的托盘条码,存在则抛出异常
//        //检查是否已存在相同的货架条码,存在则抛出异常
//        if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) {
//            throw new CoolException(param.getBarcode() + "料想码已存在AGV入库通知档中");
//        }
@@ -78,6 +78,11 @@
        //检查库存是否有相同料箱,存在则抛出异常
        if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){
            throw new CoolException(param.getBarcode() + "料箱码已存在AGV库存明细中");
        }
        //检查库存是否有相同料箱,存在则抛出异常
        if(!Cools.isEmpty(agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode",param.getBarcode())))){
            throw new CoolException(param.getBarcode() + "料箱码已存在AGV库存主档中");
        }
        //查看工作档是否有相同料箱,存在则抛出异常
@@ -125,7 +130,7 @@
                wrkDetl.setOrderNo(pick.getOrderNo());
                wrkDetl.setIoTime(now);
                wrkDetl.setAnfme(pick.getCount()); // 数量
                wrkDetl.setSuppCode(pick.getSuppCode()); // 托盘条码
                wrkDetl.setSuppCode(pick.getSuppCode()); // 货架条码
                wrkDetl.setAppeUser(userId);
                wrkDetl.setAppeTime(now);
                wrkDetl.setModiUser(userId);
@@ -176,7 +181,7 @@
    private void NoOrderComb(CombParam param, Long userId){
        List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,null);
        //用于统一一个托盘下的入库通知档的生成时间
        //用于统一一个货架下的入库通知档的生成时间
        Date now = new Date();
        detlDtos.forEach(detlDto -> {
            syncWaitPakin(detlDto,"",param.getBarcode(),userId,now);
@@ -200,7 +205,7 @@
        }
        // 用于生成入库通知档所需参数
        List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,order);
        //用于统一一个托盘下的入库通知档的生成时间
        //用于统一一个货架下的入库通知档的生成时间
        Date now = new Date();
        for (DetlDto detlDto : detlDtos) {
            //同步生成入库通知档
@@ -223,7 +228,7 @@
            }
            DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),param.getLocType());
            //同一托盘下相同物料信息和批号转为一个入库通知档
            //同一货架下相同物料信息和批号转为一个入库通知档
            if (DetlDto.has(detlDtos, detlDto)) {
                DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),detlDto.getContainerCode());
                assert one != null;
@@ -266,8 +271,8 @@
        waitPakin.sync(mat);
        waitPakin.setOrderNo(orderNo);   // 单据编号
        waitPakin.setBatch(detlDto.getBatch());     // 序列码
        //waitPakin.setZpallet(zpallet);   // 托盘码
        waitPakin.setSuppCode(zpallet);   // 托盘码
        //waitPakin.setZpallet(zpallet);   // 货架码
        waitPakin.setSuppCode(zpallet);   // 货架码
        waitPakin.setIoStatus("N");     // 入出状态
        waitPakin.setAnfme(detlDto.getAnfme());  // 数量
        waitPakin.setStatus("Y");    // 状态
@@ -413,9 +418,9 @@
        mast.setSourceLocNo(agvLocMast.getLocNo());
        //目标站点
        mast.setLocNo(locMast.getLocNo());
        //容器编码
        //货架编码
        mast.setBarcode(agvLocMast.getBarcode());
        //容器类型
        //货架类型
        mast.setWhsType(30);
        mast.setAppeUser(userId);
@@ -531,6 +536,12 @@
        Date now = new Date();
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
        Integer oldWrkNo = agvWrkMast.getWrkNo();
        if (!agvWrkMast.getBarcode().equals(param.getBarcode())) {
            throw new CoolException("回退任务的货架码与当前货架码不一致!");
        }
        if (agvWrkMast.getWrkSts() != 205) {
            throw new CoolException("出库任务未完成!");
        }
        // 新建回退工作档
        AgvWrkMast wrkMast = createWrkMast(58, 201L, agvWrkMast.getLocNo(), agvWrkMast.getSourceLocNo(), agvWrkMast.getBarcode(), now, userId, agvWrkMast.getWhsType(), 0);
        // 更新接驳位,更新库位状态
@@ -588,9 +599,9 @@
        wrkMast.setSourceLocNo(sourceLocNo);
        //目标站点
        wrkMast.setLocNo(locNo);
        //容器编码
        //货架编码
        wrkMast.setBarcode(barcode);
        //容器类型
        //货架类型
        wrkMast.setWhsType(containerType);
        // 目标楼层
        wrkMast.setCrnNo(floor);