自动化立体仓库 - WMS系统
chen.llin
6 天以前 46168fbb7c925b0ec04def176095e967720e684a
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -865,55 +865,66 @@
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> agvDoIn(Task wrkMast) {
        if (wrkMast.getIoType().equals(1)) {
            LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
            if (Objects.isNull(locCache)) {
                throw new CoolException("数据错误,库位不存在!!");
            }
            if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_S.type)) {
                throw new CoolException("当前库位状态为:" + LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc + ",不是出库预约状态");
            }
            List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("task_id", wrkMast.getId()));
            if (Objects.isNull(taskDetls)) {
                throw new CoolException("数据错误:组托数据不存在!!");
            }
            taskDetls.forEach(pakin -> {
                LocCacheDetl detl = new LocCacheDetl();
                BeanUtils.copyProperties(pakin, detl);
                detl.setBarcode(pakin.getBarcode())
                        .setLocId(locCache.getId())
                        .setAnfme(pakin.getAnfme())
                        .setBrand(pakin.getBrand())
                        .setAppeTime(new Date())
                        .setSpecs(pakin.getSpecs())
                        .setColor(pakin.getColor())
                        .setLocNo(locCache.getLocNo())
                        .setAreaId(locCache.getAreaId())
                        .setAreaName(locCache.getAreaName())
                        .setUnit(pakin.getUnit())
                        .setBatch(pakin.getBatch());
                if (!locCacheDetlService.insert(detl)) {
                    throw new CoolException("库位明细保存失败!!");
        Integer ioType = wrkMast.getIoType();
        if (ioType == null) {
            throw new CoolException("数据错误:ioType为空!!");
        }
        // 处理入库任务类型:1(实托入库)、10(空托入库)、53、57
        if (ioType == 1 || ioType == 10 || ioType == 53 || ioType == 57) {
            // ioType == 1 需要处理组托数据
            if (ioType == 1) {
                LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
                if (Objects.isNull(locCache)) {
                    throw new CoolException("数据错误,库位不存在!!");
                }
            });
                if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_S.type)) {
                    throw new CoolException("当前库位状态为:" + LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc + ",不是出库预约状态");
                }
                List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("task_id", wrkMast.getId()));
                if (Objects.isNull(taskDetls)) {
                    throw new CoolException("数据错误:组托数据不存在!!");
                }
                taskDetls.forEach(pakin -> {
                    LocCacheDetl detl = new LocCacheDetl();
                    BeanUtils.copyProperties(pakin, detl);
                    detl.setBarcode(pakin.getBarcode())
                            .setLocId(locCache.getId())
                            .setAnfme(pakin.getAnfme())
                            .setBrand(pakin.getBrand())
                            .setAppeTime(new Date())
                            .setSpecs(pakin.getSpecs())
                            .setColor(pakin.getColor())
                            .setLocNo(locCache.getLocNo())
                            .setAreaId(locCache.getAreaId())
                            .setAreaName(locCache.getAreaName())
                            .setUnit(pakin.getUnit())
                            .setBatch(pakin.getBatch());
                    if (!locCacheDetlService.insert(detl)) {
                        throw new CoolException("库位明细保存失败!!");
                    }
                });
            locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
            locCache.setModiTime(new Date());
            locCache.setBarcode(wrkMast.getBarcode());
            locCache.setModiTime(new Date());
            locCache.setIoTime(new Date());
            if (!locCacheService.updateById(locCache)) {
                throw new CoolException("库位状态修改失败!");
                locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
                locCache.setModiTime(new Date());
                locCache.setBarcode(wrkMast.getBarcode());
                locCache.setModiTime(new Date());
                locCache.setIoTime(new Date());
                if (!locCacheService.updateById(locCache)) {
                    throw new CoolException("库位状态修改失败!");
                }
            }
            // 更新任务状态为5(库存更新完成)
            wrkMast.setWrkSts(5L);
            wrkMast.setModiTime(new Date());
            if (!taskService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
            }
        }else {
            throw new CoolException("数据错误:ioType不存在!!");
        } else {
            // 非入库任务类型,记录日志但不抛出异常,允许其他类型的任务通过
            log.warn("agvDoIn方法收到非入库任务类型,ioType:{},taskId:{},跳过处理", ioType, wrkMast.getId());
        }
        return SUCCESS;
    }