feat(sj_map_reduce): 获取任务项树列表接口支持多层级

This commit is contained in:
xlsea 2024-06-24 10:31:08 +08:00
parent d09009f342
commit 84b64ffcc3
4 changed files with 28 additions and 29 deletions

View File

@ -32,7 +32,7 @@ public class JobTaskController {
@GetMapping("/tree/list") @GetMapping("/tree/list")
@LoginRequired @LoginRequired
public PageResult<List<Tree<Long>>> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO) { public List<JobTaskResponseVO> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO) {
return jobTaskService.getTreeJobTask(jobTaskQueryVO); return jobTaskService.getTreeJobTask(jobTaskQueryVO);
} }

View File

@ -15,13 +15,16 @@ public class JobTaskResponseVO {
private Long id; private Long id;
private Long key;
/** /**
* 组名称 * 组名称
*/ */
private String groupName; private String groupName;
/**
* 任务名称
*/
private String taskName;
/** /**
* 任务信息id * 任务信息id
*/ */

View File

@ -16,5 +16,5 @@ public interface JobTaskService {
PageResult<List<JobTaskResponseVO>> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO); PageResult<List<JobTaskResponseVO>> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO);
PageResult<List<Tree<Long>>> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO); List<JobTaskResponseVO> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO);
} }

View File

@ -48,24 +48,11 @@ public class JobTaskServiceImpl implements JobTaskService {
List<JobTask> records = selectPage.getRecords(); List<JobTask> records = selectPage.getRecords();
if (CollUtil.isEmpty(records)) { return new PageResult<>(pageDTO, convertJobTaskList(records));
return new PageResult<>(pageDTO, new ArrayList<>());
}
List<JobTaskResponseVO> jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.convertList(
records);
Set<Long> parentIds = StreamUtils.toSet(jobTaskResponseVOs, JobTaskResponseVO::getId);
List<JobTask> jobTasks = jobTaskMapper.selectList(new LambdaQueryWrapper<JobTask>()
.select(JobTask::getParentId).in(JobTask::getParentId, parentIds));
Set<Long> jobTaskParentIds = StreamUtils.toSet(jobTasks, JobTask::getParentId);
jobTaskResponseVOs.forEach(jobTask -> jobTask.setChildNode(!jobTaskParentIds.contains(jobTask.getId())));
return new PageResult<>(pageDTO, jobTaskResponseVOs);
} }
@Override @Override
public PageResult<List<Tree<Long>>> getTreeJobTask(final JobTaskQueryVO queryVO) { public List<JobTaskResponseVO> getTreeJobTask(final JobTaskQueryVO queryVO) {
List<JobTask> taskList = jobTaskMapper.selectList( List<JobTask> taskList = jobTaskMapper.selectList(
new LambdaQueryWrapper<JobTask>() new LambdaQueryWrapper<JobTask>()
.eq(Objects.nonNull(queryVO.getParentId()), JobTask::getParentId, queryVO.getParentId()) .eq(Objects.nonNull(queryVO.getParentId()), JobTask::getParentId, queryVO.getParentId())
@ -74,15 +61,24 @@ public class JobTaskServiceImpl implements JobTaskService {
// SQLServer 分页必须 ORDER BY // SQLServer 分页必须 ORDER BY
.orderByAsc(JobTask::getJobId)); .orderByAsc(JobTask::getJobId));
TreeNodeConfig config = new TreeNodeConfig(); return convertJobTaskList(taskList);
config.setNameKey("taskName");
config.setChildrenKey("children");
List<Tree<Long>> treeList = TreeUtil.build(taskList, Objects.nonNull(queryVO.getParentId()) ? queryVO.getParentId() : 0L, config, (jobTask, tree) -> {
tree.putAll(JsonUtil.parseHashMap(JsonUtil.toJsonString(jobTask), Object.class));
tree.setId(jobTask.getId());
tree.setParentId(jobTask.getParentId());
});
return new PageResult<>(new PageDTO<>(queryVO.getPage(), queryVO.getSize(), treeList.size()), treeList);
} }
private List<JobTaskResponseVO> convertJobTaskList(List<JobTask> taskList) {
if (CollUtil.isEmpty(taskList)) {
return new ArrayList<>();
}
List<JobTaskResponseVO> jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.convertList(
taskList);
Set<Long> parentIds = StreamUtils.toSet(jobTaskResponseVOs, JobTaskResponseVO::getId);
List<JobTask> jobTasks = jobTaskMapper.selectList(new LambdaQueryWrapper<JobTask>()
.select(JobTask::getParentId).in(JobTask::getParentId, parentIds));
Set<Long> jobTaskParentIds = StreamUtils.toSet(jobTasks, JobTask::getParentId);
jobTaskResponseVOs.forEach(jobTask -> jobTask.setChildNode(!jobTaskParentIds.contains(jobTask.getId())));
return jobTaskResponseVOs;
}
} }