自动化立体仓库 - WMS系统
skyouc
昨天 6efbf154b3ed88d376763b9d9807256c7bd5eaeb
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")) {
@@ -280,7 +278,6 @@
                                + wrkMast.getLocNo() + "]");
                    }
                    for (WrkDetl wrkDetl : wrkDetls53) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(),
                                wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                                wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
@@ -325,8 +322,8 @@
                                }
                            }
                        } catch (Exception ignore) {
                        }
                        }
                    }
                    // 修改库位状态 Q ====>> F
                    if (locMast.getLocSts().equals("Q")) {
@@ -388,10 +385,46 @@
                            }
                        }
//                        OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo()));
//                        if (Objects.isNull(orderPakin)) {
//                            throw new CoolException("数据错误,订单信息不存在!!");
//                        }
//
//                        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());
//                            }
//                            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) {
//
//                            }
//                        }
                        // 更新订单完成数量
                        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 +432,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()
@@ -409,7 +442,6 @@
                        } catch (Exception ignore) {
                        }
                    }
                    // 修改库位状态 Q ====>> F
                    if (locMast.getLocSts().equals("Q")) {
@@ -430,7 +462,6 @@
                    if (wrkMast.getIoType() == TaskIOType.MERGE_IN.type) {
                        agvSta = wrkMast.getPauseMk();
                    }
                    // . 删除缓存站点明细
                    if (!Objects.isNull(agvSta)) {
                        // 修改目标站点信息
@@ -444,9 +475,6 @@
                            throw new CoolException("站点状态更新失败!!");
                        }
                    }
                    break;
                // 盘点入库
                case 57:
@@ -637,6 +665,46 @@
                        }
                    }
                    break;
                case 103:
//                    List<WrkDetl> wrkDetls103 = wrkDetlService
//                            .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
//                    if (wrkDetls103.isEmpty()) {
//                        // exceptionHandle("全板出库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                        return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
//                                + wrkMast.getSourceLocNo() + "]");
//                    }
//                    for (WrkDetl wrkDetl : wrkDetls103) {
//                        // 更新订单完成数量
//                        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 (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
//                                        wrkDetl.getMatnr(),
//                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
//                                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
//                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
//                                        wrkDetl.getAnfme())) {
//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                                    return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
//                                            + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
//                                }
//                            }
//                        } catch (Exception ignore) {
//                            log.error(ignore.getMessage());
//                        }
//                    }
                    break;
                // 并板途中捡料
                case 108:
                    // 根据工作号,查询工作明细档
@@ -731,10 +799,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;
@@ -743,7 +811,7 @@
    /**
     * @author Ryan
     * @date 2025/9/25
     * @description: AGV出库任务
     * @description: AGV出库任
     * @version 1.0
     */
    @Transactional(rollbackFor = Exception.class)
@@ -832,9 +900,7 @@
                throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!");
            }
            task.setWrkSts(15L);
            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
            if (!taskService.updateById(task)) {
                throw new CoolException("任务状态修改失败!!");
            }
@@ -870,7 +936,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("任务状态修改失败!!");
            }
@@ -883,7 +949,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()));
@@ -892,8 +957,10 @@
                if (!list.contains(station.getLocSts())) {
                    station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                }
                station.setBarcode(null);
                basStationService.updateById(station);
                station.setBarcode("");
               if (!basStationService.updateById(station)) {
                   basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
               }
            }
        }
@@ -916,7 +983,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());
@@ -933,32 +1000,40 @@
                    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());
                }
                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) {
                }
//                OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo()));
//                if (Objects.isNull(orderPakin)) {
//                    throw new CoolException("数据错误,订单信息不存在!!");
//                }
//
//                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());
//                    }
//                    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) {
//
//                    }
//                }
            });
            locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
@@ -969,7 +1044,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("任务状态修改失败!!");
@@ -986,9 +1061,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
@@ -1064,7 +1139,7 @@
            }
            // 修改工作主档状态
            wrkMast.setWrkSts(5L);
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(now);
            if (!taskService.updateById(wrkMast)) {
                // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());