Search in sources :

Example 6 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class JobJobService method displayLevelNode.

/**
 * 递归分支节点
 *
 * @param directType 前端传过来的条件:方向
 * @param rootJobKey 头结点key
 * @param taskShadeMap 任务集合
 * @param jobMap 实例集合
 * @param jobJobMaps 实例之间的关系
 * @return 节点列表
 */
private List<JobNodeVO> displayLevelNode(Integer directType, String rootJobKey, Map<Long, ScheduleTaskShade> taskShadeMap, Map<String, ScheduleJob> jobMap, Map<String, List<String>> jobJobMaps) {
    List<String> jobKeys = jobJobMaps.get(rootJobKey);
    List<JobNodeVO> jobNodeVOList = Lists.newArrayList();
    if (CollectionUtils.isEmpty(jobKeys)) {
        return Lists.newArrayList();
    }
    for (String jobKey : jobKeys) {
        JobNodeVO vo = new JobNodeVO();
        ScheduleJob scheduleJob = jobMap.get(jobKey);
        if (scheduleJob != null) {
            vo.setJobId(scheduleJob.getJobId());
            vo.setStatus(scheduleJob.getStatus());
            vo.setTaskId(scheduleJob.getTaskId());
            vo.setTaskType(scheduleJob.getTaskType());
            vo.setCycTime(DateUtil.addTimeSplit(scheduleJob.getCycTime()));
            ScheduleTaskShade taskShade = taskShadeMap.get(scheduleJob.getTaskId());
            if (taskShade != null) {
                vo.setTaskName(taskShade.getName());
                vo.setTaskGmtCreate(taskShade.getGmtCreate());
            }
            if (DisplayDirect.CHILD.getType().equals(directType)) {
                vo.setChildNode(displayLevelNode(directType, scheduleJob.getJobKey(), taskShadeMap, jobMap, jobJobMaps));
            } else {
                vo.setParentNode(displayLevelNode(directType, scheduleJob.getJobKey(), taskShadeMap, jobMap, jobJobMaps));
            }
            jobNodeVOList.add(vo);
        }
    }
    return jobNodeVOList;
}
Also used : ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob) JobNodeVO(com.dtstack.taier.develop.vo.schedule.JobNodeVO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 7 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class JobJobService method buildRootNode.

/**
 * 封装头节点
 *
 * @param directType 前端传过来的条件:方向
 * @param scheduleJob 周期实例对象
 * @param taskShadeMap 任务集合
 * @param jobMap 实例集合
 * @param jobJobMaps 实例之间的关系
 * @return 头节点
 */
private JobNodeVO buildRootNode(Integer directType, ScheduleJob scheduleJob, Map<Long, ScheduleTaskShade> taskShadeMap, Map<String, ScheduleJob> jobMap, Map<String, List<String>> jobJobMaps) {
    JobNodeVO rootNode = new JobNodeVO();
    rootNode.setJobId(scheduleJob.getJobId());
    rootNode.setStatus(scheduleJob.getStatus());
    rootNode.setTaskId(scheduleJob.getTaskId());
    rootNode.setTaskType(scheduleJob.getTaskType());
    rootNode.setCycTime(DateUtil.addTimeSplit(scheduleJob.getCycTime()));
    String userName = userService.getUserName(scheduleJob.getCreateUserId());
    rootNode.setOperatorId(scheduleJob.getCreateUserId());
    rootNode.setOperatorName(userName);
    ScheduleTaskShade taskShade = taskShadeMap.get(scheduleJob.getTaskId());
    if (taskShade != null) {
        rootNode.setTaskName(taskShade.getName());
        rootNode.setTaskGmtCreate(taskShade.getGmtCreate());
    }
    if (DisplayDirect.CHILD.getType().equals(directType)) {
        rootNode.setChildNode(displayLevelNode(directType, scheduleJob.getJobKey(), taskShadeMap, jobMap, jobJobMaps));
    } else {
        rootNode.setParentNode(displayLevelNode(directType, scheduleJob.getJobKey(), taskShadeMap, jobMap, jobJobMaps));
    }
    return rootNode;
}
Also used : JobNodeVO(com.dtstack.taier.develop.vo.schedule.JobNodeVO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 8 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class JobJobService method displayOffSpring.

public ReturnJobDisplayVO displayOffSpring(QueryJobDisplayDTO dto) {
    // 设置层级 0<level< max.level
    dto.setLevel(JobUtils.checkLevel(dto.getLevel(), context.getMaxLevel()));
    // 查询实例是否存在,如不不存在,直接抛异常,下面的逻辑不需要在走了
    ScheduleJob scheduleJob = jobService.lambdaQuery().eq(ScheduleJob::getJobId, dto.getJobId()).eq(ScheduleJob::getIsDeleted, Deleted.NORMAL.getStatus()).one();
    if (scheduleJob == null) {
        throw new RdosDefineException("job does not exist");
    }
    // 先从db里面查询数据,然后在递归封装成节点
    List<String> jobKeys = Lists.newArrayList(scheduleJob.getJobKey());
    Map<String, List<String>> jobJobMaps = findJobJobByJobKeys(dto, jobKeys);
    // 查询所有实例
    List<ScheduleJob> scheduleJobList = findJobByJobJob(jobJobMaps);
    scheduleJobList.add(scheduleJob);
    Map<String, ScheduleJob> jobMap = scheduleJobList.stream().collect(Collectors.groupingBy(ScheduleJob::getJobKey, Collectors.collectingAndThen(Collectors.toCollection(ArrayList<ScheduleJob>::new), a -> a.get(0))));
    // 查询所有任务
    Map<Long, ScheduleTaskShade> taskShadeMap = findTaskJob(scheduleJobList);
    ReturnJobDisplayVO vo = new ReturnJobDisplayVO();
    vo.setDirectType(dto.getDirectType());
    vo.setRootNode(buildRootNode(dto.getDirectType(), scheduleJob, taskShadeMap, jobMap, jobJobMaps));
    return vo;
}
Also used : ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob) RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) ArrayList(java.util.ArrayList) List(java.util.List) ReturnJobDisplayVO(com.dtstack.taier.develop.vo.schedule.ReturnJobDisplayVO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 9 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class JobService method fillDataJobList.

/**
 * 补数据实例列表
 *
 * @param dto 查询列表条件
 * @return 列表
 */
public PageResult<ReturnFillDataJobListVO> fillDataJobList(QueryFillDataJobListDTO dto) {
    Integer totalCount = 0;
    ReturnFillDataJobListVO dataJobDetailVO = new ReturnFillDataJobListVO();
    // 查询补数据是否存在,不存在直接返回结果
    ScheduleFillDataJob fillDataJob = fillDataJobService.getById(dto.getFillId());
    if (!checkFillDataJobList(fillDataJob, dataJobDetailVO)) {
        return new PageResult<>(dto.getCurrentPage(), dto.getPageSize(), totalCount, dataJobDetailVO);
    }
    dataJobDetailVO.setId(fillDataJob.getId());
    dataJobDetailVO.setFillDataName(fillDataJob.getJobName());
    // 关联任务
    List<Long> taskIds = null;
    if (StringUtils.isNotBlank(dto.getTaskName()) || dto.getOperatorId() != null) {
        List<ScheduleTaskShade> scheduleTaskShadeList = taskService.findTaskByTaskName(dto.getTaskName(), null, dto.getOperatorId());
        if (CollectionUtils.isEmpty(scheduleTaskShadeList)) {
            return new PageResult<>(dto.getCurrentPage(), dto.getPageSize(), totalCount, dataJobDetailVO);
        } else {
            taskIds = scheduleTaskShadeList.stream().map(ScheduleTaskShade::getTaskId).collect(Collectors.toList());
        }
    }
    // 查询实例表
    Page<ScheduleJob> page = new Page<>(dto.getCurrentPage(), dto.getPageSize());
    page = this.lambdaQuery().eq(ScheduleJob::getFlowJobId, 0).eq(ScheduleJob::getIsDeleted, Deleted.NORMAL.getStatus()).eq(ScheduleJob::getTenantId, dto.getTenantId()).eq(ScheduleJob::getFillId, dto.getFillId()).eq(ScheduleJob::getType, EScheduleType.FILL_DATA.getType()).in(ScheduleJob::getFillType, Lists.newArrayList(FillJobTypeEnum.DEFAULT.getType(), FillJobTypeEnum.RUN_JOB.getType())).in(CollectionUtils.isNotEmpty(taskIds), ScheduleJob::getTaskId, taskIds).in(CollectionUtils.isNotEmpty(dto.getTaskTypeList()), ScheduleJob::getTaskType, dto.getTaskTypeList()).in(CollectionUtils.isNotEmpty(dto.getJobStatusList()), ScheduleJob::getStatus, transform(dto.getJobStatusList())).between((dto.getCycStartDay() != null && dto.getCycEndDay() != null), ScheduleJob::getCycTime, getCycTime(dto.getCycStartDay()), getCycTime(dto.getCycEndDay())).orderBy(StringUtils.isNotBlank(dto.getExecTimeSort()), isAsc(dto.getExecTimeSort()), ScheduleJob::getExecTime).orderBy(StringUtils.isNotBlank(dto.getExecStartSort()), isAsc(dto.getExecStartSort()), ScheduleJob::getExecStartTime).orderBy(StringUtils.isNotBlank(dto.getExecEndSort()), isAsc(dto.getExecEndSort()), ScheduleJob::getExecEndTime).orderBy(StringUtils.isNotBlank(dto.getCycSort()), isAsc(dto.getCycSort()), ScheduleJob::getCycTime).orderBy(StringUtils.isNotBlank(dto.getRetryNumSort()), isAsc(dto.getRetryNumSort()), ScheduleJob::getRetryNum).orderBy(Boolean.TRUE, Boolean.FALSE, ScheduleJob::getGmtCreate).page(page);
    List<ScheduleJob> records = page.getRecords();
    // 封装结果集
    if (CollectionUtils.isNotEmpty(records)) {
        List<FillDataJobVO> fillDataJobVOS = Lists.newArrayList();
        List<Long> taskIdList = records.stream().map(ScheduleJob::getTaskId).collect(Collectors.toList());
        Map<Long, ScheduleTaskShade> taskShadeMap = taskService.lambdaQuery().in(ScheduleTaskShade::getTaskId, taskIdList).eq(ScheduleTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list().stream().collect(Collectors.toMap(ScheduleTaskShade::getTaskId, g -> (g)));
        Map<Long, User> userMap = userService.listAll().stream().collect(Collectors.toMap(User::getId, g -> (g)));
        records.forEach(record -> {
            FillDataJobVO vo = FillDataJobMapstructTransfer.INSTANCE.scheduleJobToFillDataJobVO(record);
            vo.setStartExecTime(DateUtil.getDate(record.getExecStartTime(), DateUtil.STANDARD_DATETIME_FORMAT));
            vo.setEndExecTime(DateUtil.getDate(record.getExecEndTime(), DateUtil.STANDARD_DATETIME_FORMAT));
            vo.setCycTime(DateUtil.addTimeSplit(record.getCycTime()));
            vo.setExecTime(getExecTime(record));
            vo.setStatus(TaskStatus.getShowStatus(record.getStatus()));
            ScheduleTaskShade scheduleTaskShade = taskShadeMap.get(record.getTaskId());
            if (scheduleTaskShade != null) {
                vo.setTaskName(scheduleTaskShade.getName());
                vo.setOperatorId(scheduleTaskShade.getCreateUserId());
                vo.setOperatorName(userMap.get(scheduleTaskShade.getCreateUserId()) != null ? userMap.get(scheduleTaskShade.getCreateUserId()).getUserName() : "");
            }
            fillDataJobVOS.add(vo);
        });
        dataJobDetailVO.setFillDataJobVOLists(fillDataJobVOS);
    }
    dataJobDetailVO.setFillGenerateStatus(FillGeneratStatusEnum.FILL_FINISH.getType());
    return new PageResult<>(dto.getCurrentPage(), dto.getPageSize(), page.getTotal(), (int) page.getPages(), dataJobDetailVO);
}
Also used : ReturnJobStatusStatisticsVO(com.dtstack.taier.develop.vo.schedule.ReturnJobStatusStatisticsVO) CountFillDataJobStatusPO(com.dtstack.taier.dao.domain.po.CountFillDataJobStatusPO) UserService(com.dtstack.taier.develop.service.user.UserService) FillDataJobMapstructTransfer(com.dtstack.taier.develop.mapstruct.fill.FillDataJobMapstructTransfer) PageResult(com.dtstack.taier.dao.pager.PageResult) Autowired(org.springframework.beans.factory.annotation.Autowired) StringUtils(org.apache.commons.lang3.StringUtils) NumberUtils(org.apache.commons.lang.math.NumberUtils) DateUtil(com.dtstack.taier.pluginapi.util.DateUtil) StatusCountPO(com.dtstack.taier.dao.domain.po.StatusCountPO) TaskStatus(com.dtstack.taier.pluginapi.enums.TaskStatus) ServiceImpl(com.baomidou.mybatisplus.extension.service.impl.ServiceImpl) Wrappers(com.baomidou.mybatisplus.core.toolkit.Wrappers) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) QueryFillDataListDTO(com.dtstack.taier.scheduler.dto.fill.QueryFillDataListDTO) Timestamp(java.sql.Timestamp) ReturnJobListVO(com.dtstack.taier.develop.vo.schedule.ReturnJobListVO) QueryFillDataJobListDTO(com.dtstack.taier.scheduler.dto.fill.QueryFillDataJobListDTO) ReturnFillDataJobListVO(com.dtstack.taier.develop.vo.fill.ReturnFillDataJobListVO) ScheduleFillDataInfoDTO(com.dtstack.taier.scheduler.dto.fill.ScheduleFillDataInfoDTO) Collectors(java.util.stream.Collectors) ReturnDisplayPeriodVO(com.dtstack.taier.develop.vo.schedule.ReturnDisplayPeriodVO) FillGeneratStatusEnum(com.dtstack.taier.scheduler.enums.FillGeneratStatusEnum) Deleted(com.dtstack.taier.common.enums.Deleted) FillDataJobVO(com.dtstack.taier.develop.vo.fill.FillDataJobVO) java.util(java.util) ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob) RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) FillDataRunnable(com.dtstack.taier.scheduler.server.action.fill.FillDataRunnable) FillDataThreadPoolExecutor(com.dtstack.taier.scheduler.server.action.fill.FillDataThreadPoolExecutor) Lists(com.google.common.collect.Lists) CollectionUtils(org.apache.commons.collections.CollectionUtils) Service(org.springframework.stereotype.Service) FillStatusUpdateFinishEvent(com.dtstack.taier.develop.event.FillStatusUpdateFinishEvent) QueryJobListDTO(com.dtstack.taier.scheduler.dto.schedule.QueryJobListDTO) ErrorCode(com.dtstack.taier.common.exception.ErrorCode) ReturnFillDataListVO(com.dtstack.taier.develop.vo.fill.ReturnFillDataListVO) ScheduleFillDataJob(com.dtstack.taier.dao.domain.ScheduleFillDataJob) FillDataTypeEnum(com.dtstack.taier.scheduler.enums.FillDataTypeEnum) ScheduleJobMapper(com.dtstack.taier.dao.mapper.ScheduleJobMapper) User(com.dtstack.taier.dao.domain.User) DateTime(org.joda.time.DateTime) EScheduleType(com.dtstack.taier.common.enums.EScheduleType) Maps(com.google.common.collect.Maps) ApplicationContext(org.springframework.context.ApplicationContext) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) ScheduleFillJobParticipateDTO(com.dtstack.taier.scheduler.dto.fill.ScheduleFillJobParticipateDTO) JSON(com.alibaba.fastjson.JSON) QueryJobStatusStatisticsDTO(com.dtstack.taier.scheduler.dto.schedule.QueryJobStatusStatisticsDTO) JobMapstructTransfer(com.dtstack.taier.develop.mapstruct.job.JobMapstructTransfer) FillJobTypeEnum(com.dtstack.taier.scheduler.enums.FillJobTypeEnum) JobsStatusStatisticsPO(com.dtstack.taier.dao.domain.po.JobsStatusStatisticsPO) ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob) User(com.dtstack.taier.dao.domain.User) ReturnFillDataJobListVO(com.dtstack.taier.develop.vo.fill.ReturnFillDataJobListVO) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) PageResult(com.dtstack.taier.dao.pager.PageResult) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) FillDataJobVO(com.dtstack.taier.develop.vo.fill.FillDataJobVO) ScheduleFillDataJob(com.dtstack.taier.dao.domain.ScheduleFillDataJob)

Example 10 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class JobService method queryJobsStatusStatistics.

/**
 * 统计周期实例状态
 *
 * @param dto
 * @return
 */
public List<ReturnJobStatusStatisticsVO> queryJobsStatusStatistics(QueryJobStatusStatisticsDTO dto) {
    // 关联任务
    List<Long> taskIdList = null;
    if (StringUtils.isNotBlank(dto.getTaskName()) || dto.getOperatorId() != null) {
        List<ScheduleTaskShade> scheduleTaskShadeList = taskService.findTaskByTaskName(dto.getTaskName(), null, dto.getOperatorId());
        if (CollectionUtils.isEmpty(scheduleTaskShadeList)) {
            return Lists.newArrayList();
        } else {
            taskIdList = scheduleTaskShadeList.stream().map(ScheduleTaskShade::getTaskId).collect(Collectors.toList());
        }
    }
    // 查询db统计数据
    JobsStatusStatisticsPO jobsStatusStatistics = JobMapstructTransfer.INSTANCE.queryJobStatusStatisticsDTOToJobsStatusStatistics(dto);
    jobsStatusStatistics.setCycStartTime(getCycTime(dto.getCycStartDay()));
    jobsStatusStatistics.setCycEndTime(getCycTime(dto.getCycEndDay()));
    jobsStatusStatistics.setFillTypeList(Lists.newArrayList(FillJobTypeEnum.DEFAULT.getType(), FillJobTypeEnum.RUN_JOB.getType()));
    jobsStatusStatistics.setTaskIdList(taskIdList);
    List<StatusCountPO> statusCountList = this.baseMapper.queryJobsStatusStatistics(jobsStatusStatistics);
    // 封装结果集
    return mergeStatusAndShow(statusCountList);
}
Also used : StatusCountPO(com.dtstack.taier.dao.domain.po.StatusCountPO) JobsStatusStatisticsPO(com.dtstack.taier.dao.domain.po.JobsStatusStatisticsPO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Aggregations

ScheduleTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskShade)33 ScheduleJob (com.dtstack.taier.dao.domain.ScheduleJob)13 RdosDefineException (com.dtstack.taier.common.exception.RdosDefineException)12 Deleted (com.dtstack.taier.common.enums.Deleted)7 List (java.util.List)7 Collectors (java.util.stream.Collectors)7 CollectionUtils (org.apache.commons.collections.CollectionUtils)7 Autowired (org.springframework.beans.factory.annotation.Autowired)7 UserService (com.dtstack.taier.develop.service.user.UserService)6 Lists (com.google.common.collect.Lists)6 Timestamp (java.sql.Timestamp)6 Map (java.util.Map)6 Service (org.springframework.stereotype.Service)6 JSONObject (com.alibaba.fastjson.JSONObject)5 ServiceImpl (com.baomidou.mybatisplus.extension.service.impl.ServiceImpl)5 EnvironmentContext (com.dtstack.taier.common.env.EnvironmentContext)5 ScheduleTaskTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskTaskShade)5 EScheduleJobType (com.dtstack.taier.common.enums.EScheduleJobType)4 Tenant (com.dtstack.taier.dao.domain.Tenant)4 User (com.dtstack.taier.dao.domain.User)4