自动化立体仓库 - WMS系统
skyouc
3 天以前 19feb4af89f6e5e67c3dc97cbbcf6cfc40350781
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -7,6 +7,7 @@
import com.zy.asrs.enums.LocAreaType;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.enums.TaskIOType;
import com.zy.asrs.enums.TaskStatusType;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.*;
import com.zy.asrs.task.AbstractHandler;
@@ -87,8 +88,6 @@
        locMast.setAreaName(basAreas.getName());
        try {
            if (null == locMast) {
                // exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(),
                // wrkMast.getLocNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg("工作档[workNo=" + wrkMast.getWrkNo() + "]库位号错误[locNo=" + wrkMast.getLocNo() + "]");
            }
@@ -103,10 +102,9 @@
                        }
                        locMast.setLocSts("D");
                        locMast.setIoTime(now);
                        locMast.setBarcode(wrkMast.getBarcode());
                        locMast.setModiTime(now);
                        if (!locMastService.updateById(locMast)) {
                            // exceptionHandle("空板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]",
                            // wrkMast.getWrkNo(), wrkMast.getLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("空板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                    + wrkMast.getLocNo() + "]");
@@ -194,8 +192,8 @@
                                }
                            }
                        } catch (Exception ignore) {
                        }
                    }
                    // 修改库位状态 S ====>> F
                    if (locMast.getLocSts().equals("S")) {
@@ -391,7 +389,7 @@
                        // 更新订单完成数量
                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(),
                                wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(), "1",
                                wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                        try {
                            if (!Cools.isEmpty(orderDetlPakin)) {
@@ -399,7 +397,7 @@
                                        wrkDetl.getMatnr(),
                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                        "1", wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                        wrkDetl.getAnfme())) {
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
@@ -727,10 +725,10 @@
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> AgvStart(Task task) {
        // 4.入库完成
        if (task.getWrkSts() == 4) {
        if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_IN.type)) {
            return agvDoIn(task);
            // 14.出库完成
        } else if (task.getWrkSts() == 14) {
        } else if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_OUT.type)) {
            return agvDoOut(task);
        }
        return SUCCESS;
@@ -828,7 +826,7 @@
                throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!");
            }
            task.setWrkSts(15L);
            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
            if (!taskService.updateById(task)) {
                throw new CoolException("任务状态修改失败!!");
            }
@@ -864,7 +862,7 @@
            if (!basStationService.updateById(devNo)) {
                throw new CoolException("站点信息修改失败!!");
            }
            task.setWrkSts(15L);
            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
            if (!taskService.updateById(task)) {
                throw new CoolException("任务状态修改失败!!");
            }
@@ -877,7 +875,6 @@
    @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(wrkMast.getSourceStaNo())) {
            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
                    .eq("dev_no", wrkMast.getSourceStaNo()));
@@ -886,7 +883,7 @@
                if (!list.contains(station.getLocSts())) {
                    station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                }
                station.setBarcode(null);
                station.setBarcode("");
                basStationService.updateById(station);
            }
        }
@@ -910,7 +907,7 @@
            taskDetls.forEach(pakin -> {
                LocDetl detl = new LocDetl();
                BeanUtils.copyProperties(pakin, detl);
                detl.setBarcode(pakin.getBarcode());
                detl.setBarcode(pakin.getZpallet());
                detl.setAnfme(pakin.getAnfme());
                detl.setBrand(pakin.getBrand());
                detl.setSuppCode(pakin.getSuppCode());
@@ -927,31 +924,39 @@
                    throw new CoolException("库位明细保存失败!!");
                }
                // 更新订单完成数量
                OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(),
                        pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
                        pakin.getStandby2(), pakin.getStandby3(),
                        pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
                if (orderDetlPakin == null) {
                    orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(),
                            pakin.getBatch(),
                            pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(),
                            pakin.getStandby3(),
                            pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
                OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo()));
                if (Objects.isNull(orderPakin)) {
                    throw new CoolException("数据错误,订单信息不存在!!");
                }
                try {
                    if (!Cools.isEmpty(orderDetlPakin)) {
                        if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(),
                                pakin.getMatnr(),
                                orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
                                pakin.getStandby2(), pakin.getStandby3(),
                                pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(),
                                pakin.getAnfme())) {
                            throw new CoolException("AGV全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
                        }
                if (!orderPakin.getDocType().equals(0)) {
                    // 更新订单完成数量
                    OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(),
                            pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
                            pakin.getStandby2(), pakin.getStandby3(),
                            pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
                    if (orderDetlPakin == null) {
                        orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(),
                                pakin.getBatch(),
                                pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(),
                                pakin.getStandby3(),
                                pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
                    }
                } catch (Exception ignore) {
                    try {
                        if (!Cools.isEmpty(orderDetlPakin)) {
                            if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(),
                                    pakin.getMatnr(),
                                    orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
                                    pakin.getStandby2(), pakin.getStandby3(),
                                    pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(),
                                    pakin.getAnfme())) {
                                throw new CoolException("AGV全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
                                        + "],[locNo=" + wrkMast.getLocNo() + "]");
                            }
                        }
                    } catch (Exception ignore) {
                    }
                }
            });
@@ -963,7 +968,7 @@
            if (!locCacheService.updateById(locCache)) {
                throw new CoolException("库位状态修改失败!");
            }
            wrkMast.setWrkSts(5L);
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(new Date());
            if (!taskService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
@@ -980,9 +985,9 @@
            Set<Long> list = apallets.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("单据不存在!!");
            }
//            if (Objects.isNull(pakins) || pakins.isEmpty()) {
////            throw new CoolException("单据不存在!!");
//            }
        }else if(wrkMast.getIoType().equals(53)){
            // 根据工作号,查询工作明细档
            List<TaskDetl> wrkDetls53 = taskDetlService
@@ -1058,7 +1063,7 @@
            }
            // 修改工作主档状态
            wrkMast.setWrkSts(5L);
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(now);
            if (!taskService.updateById(wrkMast)) {
                // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());