Search in sources :

Example 1 with TaskNodeVO

use of com.dtstack.taier.develop.vo.schedule.TaskNodeVO in project Taier by DTStack.

the class TaskTaskService method displayLevelNode.

/**
 * 展示固定层级的节点
 *
 * @param taskShade  头任务
 * @param level      层级
 * @param directType 方向
 * @return
 */
private List<TaskNodeVO> displayLevelNode(ScheduleTaskShade taskShade, Integer level, Integer directType) {
    List<TaskNodeVO> taskNodeVOS = Lists.newArrayList();
    if (level <= 0) {
        // 已经到达需要查询的节点层数,不需要继续向下查询,直接返回即可
        return taskNodeVOS;
    }
    List<ScheduleTaskTaskShade> taskTaskShades;
    List<Long> taskIdList;
    // 查询节点
    if (DisplayDirect.CHILD.getType().equals(directType)) {
        // 向下
        taskTaskShades = this.lambdaQuery().eq(ScheduleTaskTaskShade::getParentTaskId, taskShade.getTaskId()).eq(ScheduleTaskTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list();
        taskIdList = taskTaskShades.stream().map(ScheduleTaskTaskShade::getTaskId).collect(Collectors.toList());
    } else {
        // 向上
        taskTaskShades = this.lambdaQuery().eq(ScheduleTaskTaskShade::getTaskId, taskShade.getTaskId()).eq(ScheduleTaskTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list();
        taskIdList = taskTaskShades.stream().map(ScheduleTaskTaskShade::getParentTaskId).collect(Collectors.toList());
    }
    if (CollectionUtils.isEmpty(taskTaskShades)) {
        return taskNodeVOS;
    }
    // 查询任务
    List<ScheduleTaskShade> taskShadeList = taskService.lambdaQuery().in(ScheduleTaskShade::getTaskId, taskIdList).eq(ScheduleTaskShade::getFlowId, 0).eq(ScheduleTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list();
    Map<Long, ScheduleTaskShade> taskShadeMap = taskShadeList.stream().collect(Collectors.toMap(ScheduleTaskShade::getTaskId, g -> (g)));
    for (ScheduleTaskTaskShade taskTaskShade : taskTaskShades) {
        ScheduleTaskShade taskShadeSon;
        if (DisplayDirect.CHILD.getType().equals(directType)) {
            taskShadeSon = taskShadeMap.get(taskTaskShade.getTaskId());
        } else {
            taskShadeSon = taskShadeMap.get(taskTaskShade.getParentTaskId());
        }
        TaskNodeVO vo = new TaskNodeVO();
        if (taskShadeSon != null) {
            setNode(taskShadeSon, vo);
            if (DisplayDirect.CHILD.getType().equals(directType)) {
                vo.setChildNode(displayLevelNode(taskShadeSon, level - 1, directType));
            } else {
                vo.setParentNode(displayLevelNode(taskShadeSon, level - 1, directType));
            }
        }
        taskNodeVOS.add(vo);
    }
    return taskNodeVOS;
}
Also used : ServiceImpl(com.baomidou.mybatisplus.extension.service.impl.ServiceImpl) QueryTaskDisplayDTO(com.dtstack.taier.scheduler.dto.schedule.QueryTaskDisplayDTO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) UserService(com.dtstack.taier.develop.service.user.UserService) ReturnTaskDisplayVO(com.dtstack.taier.develop.vo.schedule.ReturnTaskDisplayVO) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) EnvironmentContext(com.dtstack.taier.common.env.EnvironmentContext) TenantService(com.dtstack.taier.develop.service.console.TenantService) Autowired(org.springframework.beans.factory.annotation.Autowired) Set(java.util.Set) Collectors(java.util.stream.Collectors) ScheduleTaskTaskShadeMapper(com.dtstack.taier.dao.mapper.ScheduleTaskTaskShadeMapper) Sets(com.google.common.collect.Sets) DisplayDirect(com.dtstack.taier.common.enums.DisplayDirect) ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade) List(java.util.List) Tenant(com.dtstack.taier.dao.domain.Tenant) Lists(com.google.common.collect.Lists) CollectionUtils(org.apache.commons.collections.CollectionUtils) Service(org.springframework.stereotype.Service) Map(java.util.Map) JobUtils(com.dtstack.taier.develop.utils.JobUtils) EScheduleJobType(com.dtstack.taier.common.enums.EScheduleJobType) Deleted(com.dtstack.taier.common.enums.Deleted) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 2 with TaskNodeVO

use of com.dtstack.taier.develop.vo.schedule.TaskNodeVO in project Taier by DTStack.

the class TaskTaskService method findChildNode.

/**
 * 查询孩子节点
 *
 * @param root        顶节点
 * @param taskTaskMap 节点关系集合
 * @return 节点列表
 */
private List<TaskNodeVO> findChildNode(TaskNodeVO root, Map<Long, ScheduleTaskShade> taskMaps, Map<Long, List<ScheduleTaskTaskShade>> taskTaskMap) {
    List<ScheduleTaskTaskShade> scheduleTaskTaskShades = taskTaskMap.get(root.getTaskId());
    List<TaskNodeVO> taskNodeVOS = Lists.newArrayList();
    if (CollectionUtils.isEmpty(scheduleTaskTaskShades)) {
        return taskNodeVOS;
    }
    for (ScheduleTaskTaskShade taskTaskShade : scheduleTaskTaskShades) {
        ScheduleTaskShade taskShade = taskMaps.get(taskTaskShade.getTaskId());
        TaskNodeVO vo = new TaskNodeVO();
        vo.setTaskId(taskTaskShade.getTaskId());
        if (taskShade != null) {
            setNode(taskShade, vo);
        }
        vo.setChildNode(findChildNode(vo, taskMaps, taskTaskMap));
        taskNodeVOS.add(vo);
    }
    return taskNodeVOS;
}
Also used : ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 3 with TaskNodeVO

use of com.dtstack.taier.develop.vo.schedule.TaskNodeVO in project Taier by DTStack.

the class TaskTaskService method displayAllFlowSubTasks.

/**
 * 查询所有工作流节点
 *
 * @param taskShade 工作流任务
 * @return
 */
private ReturnTaskDisplayVO displayAllFlowSubTasks(ScheduleTaskShade taskShade) {
    ReturnTaskDisplayVO vo = new ReturnTaskDisplayVO();
    // 头节点
    TaskNodeVO root = new TaskNodeVO();
    setNode(taskShade, root);
    vo.setRootTaskNode(root);
    // 查询出所有工作流任务
    List<ScheduleTaskShade> taskShadeList = taskService.findAllFlowTasks(taskShade.getTaskId());
    if (CollectionUtils.isEmpty(taskShadeList)) {
        return vo;
    }
    // 查询出这些工作流的关系数据
    Map<Long, ScheduleTaskShade> taskMaps = taskShadeList.stream().collect(Collectors.toMap(ScheduleTaskShade::getTaskId, g -> (g)));
    Set<Long> taskSet = Sets.newHashSet(taskMaps.keySet());
    taskSet.add(taskShade.getTaskId());
    List<ScheduleTaskTaskShade> taskTaskShades = this.lambdaQuery().in(ScheduleTaskTaskShade::getTaskId, taskSet).eq(ScheduleTaskTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list();
    if (CollectionUtils.isEmpty(taskTaskShades)) {
        return vo;
    }
    // 递归工作流任务的关系
    Map<Long, List<ScheduleTaskTaskShade>> taskTaskMap = taskTaskShades.stream().collect(Collectors.groupingBy(ScheduleTaskTaskShade::getParentTaskId));
    root.setChildNode(findChildNode(root, taskMaps, taskTaskMap));
    return vo;
}
Also used : ReturnTaskDisplayVO(com.dtstack.taier.develop.vo.schedule.ReturnTaskDisplayVO) ServiceImpl(com.baomidou.mybatisplus.extension.service.impl.ServiceImpl) QueryTaskDisplayDTO(com.dtstack.taier.scheduler.dto.schedule.QueryTaskDisplayDTO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) UserService(com.dtstack.taier.develop.service.user.UserService) ReturnTaskDisplayVO(com.dtstack.taier.develop.vo.schedule.ReturnTaskDisplayVO) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) EnvironmentContext(com.dtstack.taier.common.env.EnvironmentContext) TenantService(com.dtstack.taier.develop.service.console.TenantService) Autowired(org.springframework.beans.factory.annotation.Autowired) Set(java.util.Set) Collectors(java.util.stream.Collectors) ScheduleTaskTaskShadeMapper(com.dtstack.taier.dao.mapper.ScheduleTaskTaskShadeMapper) Sets(com.google.common.collect.Sets) DisplayDirect(com.dtstack.taier.common.enums.DisplayDirect) ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade) List(java.util.List) Tenant(com.dtstack.taier.dao.domain.Tenant) Lists(com.google.common.collect.Lists) CollectionUtils(org.apache.commons.collections.CollectionUtils) Service(org.springframework.stereotype.Service) Map(java.util.Map) JobUtils(com.dtstack.taier.develop.utils.JobUtils) EScheduleJobType(com.dtstack.taier.common.enums.EScheduleJobType) Deleted(com.dtstack.taier.common.enums.Deleted) List(java.util.List) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade)

Example 4 with TaskNodeVO

use of com.dtstack.taier.develop.vo.schedule.TaskNodeVO in project Taier by DTStack.

the class TaskTaskService method displayOffSpring.

/**
 * 展开任务上下游
 * @return 上下游规则
 */
public ReturnTaskDisplayVO displayOffSpring(QueryTaskDisplayDTO dto) {
    // 查询的最长层级不能超过 max.jobJob.level
    dto.setLevel(JobUtils.checkLevel(dto.getLevel(), context.getMaxLevel()));
    // 查询任务
    ScheduleTaskShade taskShade = taskService.lambdaQuery().eq(ScheduleTaskShade::getTaskId, dto.getTaskId()).eq(ScheduleTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).one();
    if (taskShade == null) {
        return null;
    }
    // 创建节点
    TaskNodeVO rootNode = new TaskNodeVO();
    setNode(taskShade, rootNode);
    Tenant tenant = tenantService.getTenantById(taskShade.getTenantId());
    if (null != tenant) {
        rootNode.setTenantName(tenant.getTenantName());
        rootNode.setTenantId(tenant.getId());
    }
    String userName = userService.getUserName(taskShade.getCreateUserId());
    rootNode.setOperatorId(taskShade.getCreateUserId());
    rootNode.setOperatorName(userName);
    if (DisplayDirect.CHILD.getType().equals(dto.getDirectType())) {
        rootNode.setChildNode(displayLevelNode(taskShade, dto.getLevel(), dto.getDirectType()));
    } else {
        rootNode.setParentNode(displayLevelNode(taskShade, dto.getLevel(), dto.getDirectType()));
    }
    ReturnTaskDisplayVO vo = new ReturnTaskDisplayVO();
    vo.setDirectType(dto.getDirectType());
    vo.setRootTaskNode(rootNode);
    return vo;
}
Also used : ReturnTaskDisplayVO(com.dtstack.taier.develop.vo.schedule.ReturnTaskDisplayVO) Tenant(com.dtstack.taier.dao.domain.Tenant) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO)

Aggregations

ScheduleTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskShade)4 TaskNodeVO (com.dtstack.taier.develop.vo.schedule.TaskNodeVO)4 ScheduleTaskTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskTaskShade)3 Tenant (com.dtstack.taier.dao.domain.Tenant)3 ReturnTaskDisplayVO (com.dtstack.taier.develop.vo.schedule.ReturnTaskDisplayVO)3 ServiceImpl (com.baomidou.mybatisplus.extension.service.impl.ServiceImpl)2 Deleted (com.dtstack.taier.common.enums.Deleted)2 DisplayDirect (com.dtstack.taier.common.enums.DisplayDirect)2 EScheduleJobType (com.dtstack.taier.common.enums.EScheduleJobType)2 EnvironmentContext (com.dtstack.taier.common.env.EnvironmentContext)2 ScheduleTaskTaskShadeMapper (com.dtstack.taier.dao.mapper.ScheduleTaskTaskShadeMapper)2 TenantService (com.dtstack.taier.develop.service.console.TenantService)2 UserService (com.dtstack.taier.develop.service.user.UserService)2 JobUtils (com.dtstack.taier.develop.utils.JobUtils)2 QueryTaskDisplayDTO (com.dtstack.taier.scheduler.dto.schedule.QueryTaskDisplayDTO)2 Lists (com.google.common.collect.Lists)2 Sets (com.google.common.collect.Sets)2 List (java.util.List)2 Map (java.util.Map)2 Set (java.util.Set)2