From 5391fe1d184766c0243d5b64e86b396121d7bd1a Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Thu, 20 Jun 2024 18:37:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(sj=5F1.1.0):=20=E6=96=B0=E5=A2=9E=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E9=A1=B9=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=201.=20=E4=BB=BB=E5=8A=A1=E9=A1=B9=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BB=A5=E6=A0=91=E5=BD=A2=E6=96=B9=E5=BC=8F=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/JobTaskController.java | 14 +++++++--- .../web/model/request/JobTaskQueryVO.java | 1 + .../server/web/service/JobTaskService.java | 3 +++ .../web/service/impl/JobTaskServiceImpl.java | 27 +++++++++++++++++++ 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java index 8d66019e..64f4f04a 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java @@ -1,11 +1,12 @@ package com.aizuda.snailjob.server.web.controller; +import cn.hutool.core.lang.tree.Tree; import com.aizuda.snailjob.server.web.annotation.LoginRequired; 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; import com.aizuda.snailjob.server.web.service.JobTaskService; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -19,10 +20,9 @@ import java.util.List; */ @RestController @RequestMapping("/job/task") +@RequiredArgsConstructor public class JobTaskController { - - @Autowired - private JobTaskService jobTaskService; + private final JobTaskService jobTaskService; @GetMapping("/list") @LoginRequired @@ -30,4 +30,10 @@ public class JobTaskController { return jobTaskService.getJobTaskPage(jobTaskQueryVO); } + @GetMapping("/tree/list") + @LoginRequired + public List> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO) { + return jobTaskService.getTreeJobTask(jobTaskQueryVO); + } + } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/JobTaskQueryVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/JobTaskQueryVO.java index 5c6b6428..37c8aa2f 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/JobTaskQueryVO.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/JobTaskQueryVO.java @@ -14,4 +14,5 @@ import lombok.EqualsAndHashCode; public class JobTaskQueryVO extends BaseQueryVO { private Long jobId; private Long taskBatchId; + private Long parentId; } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java index 4002084d..7bfbaa38 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java @@ -1,5 +1,6 @@ package com.aizuda.snailjob.server.web.service; +import cn.hutool.core.lang.tree.Tree; 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; @@ -14,4 +15,6 @@ import java.util.List; public interface JobTaskService { PageResult> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO); + + List> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO); } 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 ff934a05..c30d8056 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,5 +1,9 @@ package com.aizuda.snailjob.server.web.service.impl; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeNode; +import cn.hutool.core.lang.tree.TreeUtil; +import com.aizuda.snailjob.common.core.util.JsonUtil; 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; @@ -12,6 +16,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.Objects; @@ -46,4 +51,26 @@ public class JobTaskServiceImpl implements JobTaskService { return new PageResult<>(pageDTO, jobTaskResponseVOs); } + + @Override + public List> getTreeJobTask(final JobTaskQueryVO queryVO) { + List jobTasks = jobTaskMapper.selectList( + new LambdaQueryWrapper() + .eq(JobTask::getParentId, queryVO.getParentId()) + .eq(Objects.nonNull(queryVO.getJobId()), JobTask::getJobId, queryVO.getJobId()) + .eq(Objects.nonNull(queryVO.getTaskBatchId()), JobTask::getTaskBatchId, queryVO.getTaskBatchId()) + // SQLServer 分页必须 ORDER BY + .orderByAsc(JobTask::getJobId)); + + List> treeNodes = new ArrayList<>(); + for (final JobTask jobTask : jobTasks) { + TreeNode treeNode = new TreeNode<>(); + treeNode.setId(jobTask.getId()); + treeNode.setName(jobTask.getTaskName()); + treeNode.setExtra(JsonUtil.parseHashMap(JsonUtil.toJsonString(jobTask), Object.class)); + treeNodes.add(treeNode); + } + + return TreeUtil.build(treeNodes, 0L); + } }