#
vincentlu
2025-12-31 5b7abad9f80bb0b4c9d0bb2d85e0368a92888b30
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -245,19 +245,44 @@
                return;
            }
            List<Long> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList());
//            List<Long> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList());
            for (Task t : taskList) {
                String resultAgvNo = allocateService.execute(t
                        // inbound
                        , (task, agvNo) -> {
                        , (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) -> {
                            if (Cools.isEmpty(agvNo)) {
                                return;
                            }
                            task.setAgvId(agvService.getAgvId(agvNo));
                        , (task, agvNo, sta) -> {
                            Long agvId = agvService.getAgvId(agvNo);
                            task.setAgvId(agvId);
                            task.setTaskSts(TaskStsType.WAITING.val());
                            task.setIoTime(now);
                            task.setUpdateTime(now);