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 15d03bdd2..280b6d626 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 @@ -81,5 +81,10 @@ public class JobTaskResponseVO { */ private LocalDateTime updateDt; + /** + * 是否有子节点 + */ + 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 0e71d355a..de6081d80 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 @@ -1,10 +1,12 @@ package com.aizuda.snailjob.server.web.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNode; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; import com.aizuda.snailjob.common.core.util.JsonUtil; +import com.aizuda.snailjob.common.core.util.StreamUtils; import com.aizuda.snailjob.server.web.model.base.PageResult; import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO; import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO; @@ -19,7 +21,10 @@ 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.stream.Collectors; /** * @author: opensnail @@ -41,13 +46,23 @@ public class JobTaskServiceImpl implements JobTaskService { .eq(Objects.nonNull(queryVO.getJobId()), JobTask::getJobId, queryVO.getJobId()) .eq(Objects.nonNull(queryVO.getTaskBatchId()), JobTask::getTaskBatchId, queryVO.getTaskBatchId()) .eq(Objects.nonNull(queryVO.getTaskStatus()), JobTask::getTaskStatus, queryVO.getTaskStatus()) + .eq(JobTask::getParentId, 0) // SQLServer 分页必须 ORDER BY - .orderByAsc(JobTask::getJobId)); + .orderByAsc(JobTask::getId)); List jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.convertList( selectPage.getRecords()); + if (CollUtil.isEmpty(jobTaskResponseVOs)) { + return new PageResult<>(pageDTO, jobTaskResponseVOs); + } + + 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())); } return new PageResult<>(pageDTO, jobTaskResponseVOs);