自动化立体仓库 - WMS系统
zhou zhou
19 小时以前 65b0504a31e97af4f80bd31eaf7b56eea7e80a38
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -59,6 +59,8 @@
    private BasStationServiceImpl basStationService;
    @Autowired
    private CheckOrderDetlService checkOrderDetlService;
    @Autowired
    private WaitPakinLogService waitPakinLogService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -831,58 +833,152 @@
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> agvDoIn(Task wrkMast) {
        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<WaitPakin> apallet = waitPakinService
                .selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
        if (Objects.isNull(apallet)) {
            throw new CoolException("数据错误:组托数据不存在!!");
        }
        apallet.forEach(pakin -> {
            LocDetl detl = new LocDetl();
            BeanUtils.copyProperties(pakin, detl);
            detl.setBarcode(pakin.getBarcode());
            detl.setAnfme(pakin.getAnfme());
            detl.setBrand(pakin.getBrand());
            detl.setAppeTime(new Date());
            detl.setSpecs(pakin.getSpecs());
            detl.setColor(pakin.getColor());
            detl.setLocId(locCache.getId());
            detl.setLocNo(locCache.getLocNo());
            detl.setAreaId(locCache.getAreaId());
            detl.setAreaName(locCache.getAreaName());
            detl.setUnit(pakin.getUnit());
            detl.setBatch(pakin.getBatch());
            if (!locDetlService.insert(detl)) {
                throw new CoolException("库位明细保存失败!!");
        if(wrkMast.getIoType().equals(1)){
            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<WaitPakin> apallet = waitPakinService
                    .selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
            if (Objects.isNull(apallet)) {
                throw new CoolException("数据错误:组托数据不存在!!");
            }
            apallet.forEach(pakin -> {
                LocDetl detl = new LocDetl();
                BeanUtils.copyProperties(pakin, detl);
        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("库位状态修改失败!");
        }
        wrkMast.setWrkSts(5L);
        wrkMast.setModiTime(new Date());
        if (!taskService.updateById(wrkMast)) {
            throw new CoolException("任务状态修改失败!!");
                detl.setBarcode(pakin.getBarcode());
                detl.setAnfme(pakin.getAnfme());
                detl.setBrand(pakin.getBrand());
                detl.setAppeTime(new Date());
                detl.setSpecs(pakin.getSpecs());
                detl.setColor(pakin.getColor());
                detl.setLocId(locCache.getId());
                detl.setLocNo(locCache.getLocNo());
                detl.setAreaId(locCache.getAreaId());
                detl.setAreaName(locCache.getAreaName());
                detl.setUnit(pakin.getUnit());
                detl.setBatch(pakin.getBatch());
                if (!locDetlService.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("库位状态修改失败!");
            }
            wrkMast.setWrkSts(5L);
            wrkMast.setModiTime(new Date());
            if (!taskService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
            }
            for (WaitPakin pakin : apallet){
                WaitPakinLog waitPakinLog = new WaitPakinLog();
                BeanUtils.copyProperties(pakin, waitPakinLog);
                waitPakinLogService.insert(waitPakinLog);
                waitPakinService.deleteById(pakin.getId());
            }
            Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
            List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
            if (Objects.isNull(pakins) || pakins.isEmpty()) {
//            throw new CoolException("单据不存在!!");
            }
        }else if(wrkMast.getIoType().equals(53)){
            // 根据工作号,查询工作明细档
            List<TaskDetl> wrkDetls53 = taskDetlService
                    .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo()));
            if (wrkDetls53.isEmpty()) {
                // exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg("拣料入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                        + wrkMast.getLocNo() + "]");
            }
            for (TaskDetl wrkDetl : wrkDetls53) {
                LocDetl locDetl = locDetlService.selectItem(locCache.getLocNo(), wrkDetl.getMatnr(),
                        wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                        wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
                        wrkDetl.getBoxType3());
                if (null != locDetl) {
                    if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locCache.getLocNo(),
                            wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                            wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(),
                            wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
                        // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]",
                        // wrkMast.getWrkNo(), wrkMast.getLocNo());
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                + wrkMast.getLocNo() + "]");
                    }
                }
                // 更新订单完成数量
                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
                        wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                if (orderDetlPakout == null) {
                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                            wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                }
                try {
                    if (!Cools.isEmpty(orderDetlPakout)) {
                        if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
                                wrkDetl.getMatnr(),
                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                wrkDetl.getAnfme())) {
                            // exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
                            // wrkMast.getWrkNo(), wrkMast.getLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
                        }
                    }
                } catch (Exception ignore) {
                }
            }
            Date now = new Date();
            // 修改库位状态 Q ====>> F
            if (locCache.getLocSts().equals("Q")) {
                locCache.setLocSts("F");
                locCache.setBarcode(wrkMast.getBarcode());
                locCache.setIoTime(now);
                locCache.setModiTime(now);
                if (!locCacheService.updateById(locCache)) {
                    // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]",
                    // wrkMast.getWrkNo(), wrkMast.getLocNo());
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return FAIL.setMsg("拣料入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                            + wrkMast.getLocNo() + "]");
                }
            }
            // 修改工作主档状态
            wrkMast.setWrkSts(5L);
            wrkMast.setModiTime(now);
            if (!taskService.updateById(wrkMast)) {
                // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL
                        .setMsg("更新入库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
            }
        }
        Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
        List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
        if (Objects.isNull(pakins) || pakins.isEmpty()) {
            throw new CoolException("单据不存在!!");
        }
        return SUCCESS;
    }