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

This commit is contained in:
xlsea 2024-06-24 10:31:08 +08:00 committed by opensnail
parent f6d05621cf
commit ebbcbbd990
4 changed files with 28 additions and 29 deletions

View File

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

View File

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

View File

@ -16,5 +16,5 @@ public interface JobTaskService {
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();
if (CollUtil.isEmpty(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);
return new PageResult<>(pageDTO, convertJobTaskList(records));
}
@Override
public PageResult<List<Tree<Long>>> getTreeJobTask(final JobTaskQueryVO queryVO) {
public List<JobTaskResponseVO> getTreeJobTask(final JobTaskQueryVO queryVO) {
List<JobTask> taskList = jobTaskMapper.selectList(
new LambdaQueryWrapper<JobTask>()
.eq(Objects.nonNull(queryVO.getParentId()), JobTask::getParentId, queryVO.getParentId())
@ -74,15 +61,24 @@ public class JobTaskServiceImpl implements JobTaskService {
// SQLServer 分页必须 ORDER BY
.orderByAsc(JobTask::getJobId));
TreeNodeConfig config = new TreeNodeConfig();
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);
return convertJobTaskList(taskList);
}
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;
}
}