fix(sj_1.1.0-beta2): 任务项分页接口支持是否有子节点判断

This commit is contained in:
opensnail 2024-06-23 10:21:31 +08:00
parent 61d67455be
commit 08639aeb4b
2 changed files with 21 additions and 1 deletions

View File

@ -81,5 +81,10 @@ public class JobTaskResponseVO {
*/ */
private LocalDateTime updateDt; private LocalDateTime updateDt;
/**
* 是否有子节点
*/
private boolean isChildNode;
} }

View File

@ -1,10 +1,12 @@
package com.aizuda.snailjob.server.web.service.impl; 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.Tree;
import cn.hutool.core.lang.tree.TreeNode; import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.TreeUtil;
import com.aizuda.snailjob.common.core.util.JsonUtil; 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.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;
@ -19,7 +21,10 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @author: opensnail * @author: opensnail
@ -41,13 +46,23 @@ public class JobTaskServiceImpl implements JobTaskService {
.eq(Objects.nonNull(queryVO.getJobId()), JobTask::getJobId, queryVO.getJobId()) .eq(Objects.nonNull(queryVO.getJobId()), JobTask::getJobId, queryVO.getJobId())
.eq(Objects.nonNull(queryVO.getTaskBatchId()), JobTask::getTaskBatchId, queryVO.getTaskBatchId()) .eq(Objects.nonNull(queryVO.getTaskBatchId()), JobTask::getTaskBatchId, queryVO.getTaskBatchId())
.eq(Objects.nonNull(queryVO.getTaskStatus()), JobTask::getTaskStatus, queryVO.getTaskStatus()) .eq(Objects.nonNull(queryVO.getTaskStatus()), JobTask::getTaskStatus, queryVO.getTaskStatus())
.eq(JobTask::getParentId, 0)
// SQLServer 分页必须 ORDER BY // SQLServer 分页必须 ORDER BY
.orderByAsc(JobTask::getJobId)); .orderByAsc(JobTask::getId));
List<JobTaskResponseVO> jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.convertList( List<JobTaskResponseVO> jobTaskResponseVOs = JobTaskResponseVOConverter.INSTANCE.convertList(
selectPage.getRecords()); selectPage.getRecords());
if (CollUtil.isEmpty(jobTaskResponseVOs)) {
return new PageResult<>(pageDTO, jobTaskResponseVOs);
}
Set<Long> parentIds = StreamUtils.toSet(jobTaskResponseVOs, JobTaskResponseVO::getId);
List<JobTask> jobTasks = jobTaskMapper.selectList(new LambdaQueryWrapper<JobTask>()
.select(JobTask::getId).in(JobTask::getId, parentIds));
Set<Long> jobTaskIds = StreamUtils.toSet(jobTasks, JobTask::getId);
for (JobTaskResponseVO jobTaskResponseVO : jobTaskResponseVOs) { for (JobTaskResponseVO jobTaskResponseVO : jobTaskResponseVOs) {
jobTaskResponseVO.setKey(jobTaskResponseVO.getId()); jobTaskResponseVO.setKey(jobTaskResponseVO.getId());
jobTaskResponseVO.setChildNode(jobTaskIds.contains(jobTaskResponseVO.getId()));
} }
return new PageResult<>(pageDTO, jobTaskResponseVOs); return new PageResult<>(pageDTO, jobTaskResponseVOs);