diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobTaskResponseVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobTaskResponseVO.java index 280b6d62..291a16b7 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobTaskResponseVO.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/JobTaskResponseVO.java @@ -1,5 +1,6 @@ package com.aizuda.snailjob.server.web.model.response; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.time.LocalDateTime; @@ -84,6 +85,7 @@ public class JobTaskResponseVO { /** * 是否有子节点 */ + @JsonProperty("isLeaf") private boolean isChildNode; diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java index de6081d8..8730b443 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java @@ -19,11 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -50,20 +46,20 @@ public class JobTaskServiceImpl implements JobTaskService { // SQLServer 分页必须 ORDER BY .orderByAsc(JobTask::getId)); - List jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.convertList( - selectPage.getRecords()); - if (CollUtil.isEmpty(jobTaskResponseVOs)) { - return new PageResult<>(pageDTO, jobTaskResponseVOs); + List records = selectPage.getRecords(); + + if (CollUtil.isEmpty(records)) { + return new PageResult<>(pageDTO, new ArrayList<>()); } + List jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.convertList( + records); + Set parentIds = StreamUtils.toSet(jobTaskResponseVOs, JobTaskResponseVO::getId); List jobTasks = jobTaskMapper.selectList(new LambdaQueryWrapper() - .select(JobTask::getId).in(JobTask::getId, parentIds)); - Set jobTaskIds = StreamUtils.toSet(jobTasks, JobTask::getId); - for (JobTaskResponseVO jobTaskResponseVO : jobTaskResponseVOs) { - jobTaskResponseVO.setKey(jobTaskResponseVO.getId()); - jobTaskResponseVO.setChildNode(jobTaskIds.contains(jobTaskResponseVO.getId())); - } + .select(JobTask::getParentId).in(JobTask::getParentId, parentIds)); + Set jobTaskParentIds = StreamUtils.toSet(jobTasks, JobTask::getParentId); + jobTaskResponseVOs.forEach(jobTask -> jobTask.setChildNode(!jobTaskParentIds.contains(jobTask.getId()))); return new PageResult<>(pageDTO, jobTaskResponseVOs); }