From d09009f34279523ccfd1de7f850a109a4654e7be Mon Sep 17 00:00:00 2001 From: xlsea Date: Mon, 24 Jun 2024 10:05:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(sj=5Fmap=5Freduce):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BB=BB=E5=8A=A1=E9=A1=B9=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/model/response/JobTaskResponseVO.java | 2 ++ .../web/service/impl/JobTaskServiceImpl.java | 26 ++++++++----------- 2 files changed, 13 insertions(+), 15 deletions(-) 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 280b6d626..291a16b72 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 de6081d80..8730b4431 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); }