#
vincentlu
2025-12-31 5b7abad9f80bb0b4c9d0bb2d85e0368a92888b30
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -245,20 +245,62 @@
                return;
            }
            List<Long> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList());
            for (Task task : taskList) {
                Agv agv = allocateService.execute(task);
                if (null == agv) {
//                    log.warn("Task[{}] has an issue, because it failed to check out agv which is idle...", task.getSeqNum());
                    continue;
                }
                task.setAgvId(agv.getId());
                task.setTaskSts(TaskStsType.WAITING.val());
                task.setIoTime(now);
                task.setUpdateTime(now);
                if (!taskService.updateById(task)) {
                    throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update");
                }
//            List<Long> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList());
            for (Task t : taskList) {
                String resultAgvNo = allocateService.execute(t
                        // inbound
                        , (task, agvNo, sta) -> {
                            Long agvId = agvService.getAgvId(agvNo);
                            List<Travel> travelList = travelService.list(new LambdaQueryWrapper<Travel>()
                                    .eq(Travel::getAgvId, agvId)
                                    .eq(Travel::getState, TravelStateType.RUNNING.toString())
                                    .orderByDesc(Travel::getCreateTime));
                            if (Cools.isEmpty(travelList)) {
                                throw new BusinessException("[Agv: " + agvNo + "]allocate inbound failed to find travel");
                            }
                            Travel travel = travelList.get(0);
                            List<Segment> currSegments = segmentService.list(new LambdaQueryWrapper<Segment>()
                                    .eq(Segment::getAgvId, agvId)
                                    .eq(Segment::getTravelId, travel.getId())
                            );
                            // load segment
                            Segment currSeg = segmentService.getRollerWaiting(agvId, sta.getCode(), TaskPosDto.PosType.ORI_STA);
                            // place segment
                            task.setAgvId(agvId);
                            task.setTaskSts(TaskStsType.ASSIGN.val());
                            task.setIoTime(now);
                            task.setUpdateTime(now);
                            if (!taskService.updateById(task)) {
                                throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update");
                            }
                        }
                        // normal
                        , (task, agvNo, sta) -> {
                            Long agvId = agvService.getAgvId(agvNo);
                            task.setAgvId(agvId);
                            task.setTaskSts(TaskStsType.WAITING.val());
                            task.setIoTime(now);
                            task.setUpdateTime(now);
                            if (!taskService.updateById(task)) {
                                throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update");
                            }
                        });
//                if (Cools.isEmpty(agvNo)) {
////                    log.warn("Task[{}] has an issue, because it failed to check out agv which is idle...", task.getSeqNum());
//                    continue;
//                }
//                task.setAgvId(agvService.getAgvId(agvNo));
//                task.setTaskSts(TaskStsType.WAITING.val());
//                task.setIoTime(now);
//                task.setUpdateTime(now);
//                if (!taskService.updateById(task)) {
//                    throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update");
//                }
            }
        } catch (Exception e) {
            log.error("mainService.infuseAgvForTask", e);