fix(sj_1.1.0): 新增任务项列表查询接口

1. 任务项列表以树形方式展示任务列表
This commit is contained in:
opensnail 2024-06-20 18:37:50 +08:00
parent a50ce8a8fc
commit e7abb949e9
4 changed files with 41 additions and 4 deletions

View File

@ -1,11 +1,12 @@
package com.aizuda.snailjob.server.web.controller; 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.annotation.LoginRequired;
import com.aizuda.snailjob.server.web.model.base.PageResult; 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.request.JobTaskQueryVO;
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO; import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
import com.aizuda.snailjob.server.web.service.JobTaskService; 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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -19,10 +20,9 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/job/task") @RequestMapping("/job/task")
@RequiredArgsConstructor
public class JobTaskController { public class JobTaskController {
private final JobTaskService jobTaskService;
@Autowired
private JobTaskService jobTaskService;
@GetMapping("/list") @GetMapping("/list")
@LoginRequired @LoginRequired
@ -30,4 +30,10 @@ public class JobTaskController {
return jobTaskService.getJobTaskPage(jobTaskQueryVO); return jobTaskService.getJobTaskPage(jobTaskQueryVO);
} }
@GetMapping("/tree/list")
@LoginRequired
public List<Tree<Long>> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO) {
return jobTaskService.getTreeJobTask(jobTaskQueryVO);
}
} }

View File

@ -14,4 +14,5 @@ import lombok.EqualsAndHashCode;
public class JobTaskQueryVO extends BaseQueryVO { public class JobTaskQueryVO extends BaseQueryVO {
private Long jobId; private Long jobId;
private Long taskBatchId; private Long taskBatchId;
private Long parentId;
} }

View File

@ -1,5 +1,6 @@
package com.aizuda.snailjob.server.web.service; 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.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO; import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO;
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO; import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
@ -14,4 +15,6 @@ import java.util.List;
public interface JobTaskService { public interface JobTaskService {
PageResult<List<JobTaskResponseVO>> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO); PageResult<List<JobTaskResponseVO>> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO);
List<Tree<Long>> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO);
} }

View File

@ -1,5 +1,9 @@
package com.aizuda.snailjob.server.web.service.impl; 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.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO; import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO;
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -46,4 +51,26 @@ public class JobTaskServiceImpl implements JobTaskService {
return new PageResult<>(pageDTO, jobTaskResponseVOs); return new PageResult<>(pageDTO, jobTaskResponseVOs);
} }
@Override
public List<Tree<Long>> getTreeJobTask(final JobTaskQueryVO queryVO) {
List<JobTask> jobTasks = jobTaskMapper.selectList(
new LambdaQueryWrapper<JobTask>()
.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<TreeNode<Long>> treeNodes = new ArrayList<>();
for (final JobTask jobTask : jobTasks) {
TreeNode<Long> 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);
}
} }