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