public TaskCountDto countTaskStates()

in dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataAnalysisServiceImpl.java [304:357]


    public TaskCountDto countTaskStates(User loginUser, StatisticsStateRequest statisticsStateRequest) {
        Set<Integer> projectIds = resourcePermissionCheckService
                .userOwnedResourceIdsAcquisition(AuthorizationType.PROJECTS, loginUser.getId(), log);
        if (projectIds.isEmpty()) {
            return new TaskCountDto(Collections.emptyList());
        }
        String projectName = statisticsStateRequest.getProjectName();
        String workflowName = statisticsStateRequest.getWorkflowName();
        String taskName = statisticsStateRequest.getTaskName();
        Long projectCode = statisticsStateRequest.getProjectCode();
        Long workflowCode = statisticsStateRequest.getWorkflowCode();
        Long taskCode = statisticsStateRequest.getTaskCode();
        Integer model = Constants.QUERY_ALL_ON_SYSTEM;

        if (!StringUtils.isBlank(projectName) || null != projectCode) {
            model = Constants.QUERY_ALL_ON_PROJECT;
        }
        if (!StringUtils.isBlank(workflowName) || null != workflowCode) {
            model = Constants.QUERY_ALL_ON_WORKFLOW;
        }
        if (!StringUtils.isBlank(taskName) || null != taskCode) {
            model = Constants.QUERY_ALL_ON_TASK;
        }

        try {
            if (null == taskCode || null == workflowCode || null == projectCode) {
                projectCode = projectMapper.queryByName(projectName).getCode();
                workflowCode = workflowDefinitionMapper.queryByDefineName(projectCode, workflowName).getCode();
                // todo The comment can be canceled after repairing the duplicate taskname of the existing workflow
                // taskCode = relationMapper.queryTaskCodeByTaskName(workflowCode, taskName);
            }
        } catch (Exception e) {
            log.warn(e.getMessage());
        }

        Date date = new Date();
        Date startTime = statisticsStateRequest.getStartTime() == null ? DateUtils.addMonths(date, -1)
                : statisticsStateRequest.getStartTime();
        Date endTime = statisticsStateRequest.getEndTime() == null ? date : statisticsStateRequest.getEndTime();

        Optional<List<ExecuteStatusCount>> startTimeStates = Optional.ofNullable(
                taskInstanceMapper.countTaskInstanceStateByProjectIdsV2(startTime, endTime, projectIds));
        List<TaskExecutionStatus> needRecountState = setOptional(startTimeStates);
        if (needRecountState.size() == 0) {
            return new TaskCountDto(startTimeStates.get());
        }
        List<ExecuteStatusCount> recounts = this.taskInstanceMapper
                .countTaskInstanceStateByProjectCodesAndStatesBySubmitTimeV2(startTime, endTime, projectCode,
                        workflowCode, taskCode, model, projectIds,
                        needRecountState);
        startTimeStates.orElseGet(ArrayList::new).addAll(recounts);
        List<ExecuteStatusCount> executeStatusCounts = startTimeStates.orElse(null);
        return new TaskCountDto(executeStatusCounts);
    }