#
luxiaotao1123
2024-12-05 4661519afdd8c30ffeafa38ba95358e97c1ba65d
#
3个文件已修改
177 ■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java 155 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1250,77 +1250,8 @@
                        .orderByAsc(Segment::getSerial)
                );
                // task
                for (Segment segment : segmentList) {
                    boolean taskComplete = false;
                    Task task = taskService.getById(segment.getTaskId());   assert null != task;
                    TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());     assert null != typeType;
                    TaskPosDto.PosType posType = TaskPosDto.queryPosType(segment.getPosType());
                    switch (Objects.requireNonNull(posType)) {
                        case ORI_STA:
                        case ORI_LOC:
                            break;
                        case DEST_STA:
                        case DEST_LOC:
                        case TO_CHARGE:
                        case TO_STANDBY:
                            if (segment.getEndNode().equals(task.getDestCode())) {
                                taskComplete = true;
                            }
                            break;
                        case MOVE:
                            if (segment.getEndNode().equals(task.getDestCode())) {
                                if (typeType.equals(TaskTypeType.MOVE)) {
                                    taskComplete = true;
                                }
                            }
                            break;
                        default:
                            break;
                    }
                    if (taskComplete) {
                        locService.taskCallBack(task);
                        task.setTaskSts(TaskStsType.COMPLETE.val());
                        task.setEndTime(now);
                        task.setUpdateTime(now);
                        if (!taskService.updateById(task)) {
                            log.error("Task [{}] 更新失败 !!!", task.getSeqNum());
                        } else {
                            log.info("Task [{}] 作业完毕 ==========>> ", task.getSeqNum());
                        }
                    }
                }
                // action
                List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>()
                        .eq(Action::getGroupId, serialNo)
                        .eq(Action::getActionSts, ActionStsType.ISSUED.val())
                );
                for (Action action : actionList) {
                    action.setActionSts(ActionStsType.FINISH.val());
                    action.setEndTime(now);
                    action.setUpdateTime(now);
                    if (!actionService.updateById(action)) {
                        log.error("Action [{}] 更新失败 !!!", action.getPriority() + " - " + action.getName());
                    }
                }
                // segment
                for (Segment segment : segmentList) {
                    segment.setState(SegmentStateType.FINISH.toString());
                    segment.setUpdateTime(now);
                    if (!segmentService.updateById(segment)) {
                        log.error("Segment [{}] 更新失败 !!!", segment.getGroupId() + " - " + segment.getSerial());
                    }
                }
                // segment call back
                segmentService.processNext(segmentList);
                // settlement
                this.settleSegmentList(segmentList, serialNo);
                log.info("Agv [{}] {}作业完毕 ==========>> ", protocol.getAgvNo(), serialNo);
@@ -1335,4 +1266,86 @@
        }
    }
    @Transactional
    public void settleSegmentList(List<Segment> segmentList, String serialNo) {
        if (Cools.isEmpty(segmentList)) {
            return;
        }
        Date now = new Date();
        // task
        for (Segment segment : segmentList) {
            boolean taskComplete = false;
            Task task = taskService.getById(segment.getTaskId());   assert null != task;
            TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());     assert null != typeType;
            TaskPosDto.PosType posType = TaskPosDto.queryPosType(segment.getPosType());
            switch (Objects.requireNonNull(posType)) {
                case ORI_STA:
                case ORI_LOC:
                    break;
                case DEST_STA:
                case DEST_LOC:
                case TO_CHARGE:
                case TO_STANDBY:
                    if (segment.getEndNode().equals(task.getDestCode())) {
                        taskComplete = true;
                    }
                    break;
                case MOVE:
                    if (segment.getEndNode().equals(task.getDestCode())) {
                        if (typeType.equals(TaskTypeType.MOVE)) {
                            taskComplete = true;
                        }
                    }
                    break;
                default:
                    break;
            }
            if (taskComplete) {
                locService.taskCallBack(task);
                task.setTaskSts(TaskStsType.COMPLETE.val());
                task.setEndTime(now);
                task.setUpdateTime(now);
                if (!taskService.updateById(task)) {
                    log.error("Task [{}] 更新失败 !!!", task.getSeqNum());
                } else {
                    log.info("Task [{}] 作业完毕 ==========>> ", task.getSeqNum());
                }
            }
        }
        // action, follow by groupId
        if (!Cools.isEmpty(serialNo)) {
            List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>()
                    .eq(Action::getGroupId, serialNo)
                    .eq(Action::getActionSts, ActionStsType.ISSUED.val())
            );
            for (Action action : actionList) {
                action.setActionSts(ActionStsType.FINISH.val());
                action.setEndTime(now);
                action.setUpdateTime(now);
                if (!actionService.updateById(action)) {
                    log.error("Action [{}] 更新失败 !!!", action.getPriority() + " - " + action.getName());
                }
            }
        }
        // segment
        for (Segment segment : segmentList) {
            segment.setState(SegmentStateType.FINISH.toString());
            segment.setUpdateTime(now);
            if (!segmentService.updateById(segment)) {
                log.error("Segment [{}] 更新失败 !!!", segment.getGroupId() + " - " + segment.getSerial());
            }
        }
        // segment call back
        segmentService.processNext(segmentList);
    }
}
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -110,9 +110,8 @@
            // deprecate jam
            if (this.isJamBeDeprecatedByAvo(segment.getId())) {
                if (this.skipCurrSegment(segment)) {
                    return;
                }
                mainService.settleSegmentList(Utils.singletonList(segment), null);
                return;
            }
            // execute -----------------------------------------------
@@ -632,17 +631,6 @@
                .eq(Jam::getAvoSeg, avoSeg)
                .eq(Jam::getState, JamStateType.DEPRECATED.toString())
        );
    }
    private boolean skipCurrSegment(Segment currSegment) {
        currSegment.setState(SegmentStateType.FINISH.toString());
        currSegment.setUpdateTime(new Date());
        if (!segmentService.updateById(currSegment)) {
            log.error("Segment [{}] failed to update !!!", currSegment.getTravelId() + " - " + currSegment.getSerial());
            return false;
        }
        segmentService.processNext(Utils.singletonList(currSegment));
        return true;
    }
}
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java
@@ -110,7 +110,11 @@
                if (null == agv) {
                    // if there is a running task whose destination is this funSta, then that means this funSta is occupied
                    if (0 < taskService.count(new LambdaQueryWrapper<Task>()
                            .in(Task::getTaskType, TaskTypeType.TO_STANDBY.val(), TaskTypeType.TO_CHARGE.val())
                            .in(Task::getTaskType
                                    , TaskTypeType.TO_STANDBY.val()
                                    , TaskTypeType.TO_CHARGE.val()
                                    , TaskTypeType.MOVE.val()
                            )
                            .in(Task::getTaskSts, TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val())
                            .eq(Task::getDestCode, code)
                    )) {