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;
}
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;
}
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;
}
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;
}
Aggregations