feat(sj_1.0.0): 优化组导出采用分页模式
This commit is contained in:
parent
c447379f7c
commit
cf89d46155
@ -8,9 +8,11 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
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.common.core.util.StreamUtils;
|
||||||
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
||||||
|
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
||||||
import com.aizuda.snailjob.server.common.enums.IdGeneratorModeEnum;
|
import com.aizuda.snailjob.server.common.enums.IdGeneratorModeEnum;
|
||||||
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
||||||
import com.aizuda.snailjob.server.common.handler.ConfigVersionSyncHandler;
|
import com.aizuda.snailjob.server.common.handler.ConfigVersionSyncHandler;
|
||||||
|
import com.aizuda.snailjob.server.common.util.PartitionTaskUtils;
|
||||||
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.GroupConfigQueryVO;
|
import com.aizuda.snailjob.server.web.model.request.GroupConfigQueryVO;
|
||||||
import com.aizuda.snailjob.server.web.model.request.GroupConfigRequestVO;
|
import com.aizuda.snailjob.server.web.model.request.GroupConfigRequestVO;
|
||||||
@ -29,13 +31,18 @@ import com.aizuda.snailjob.template.datasource.persistence.mapper.SequenceAllocM
|
|||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.ServerNodeMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.ServerNodeMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.*;
|
import com.aizuda.snailjob.template.datasource.persistence.po.*;
|
||||||
import com.aizuda.snailjob.template.datasource.utils.DbUtils;
|
import com.aizuda.snailjob.template.datasource.utils.DbUtils;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.google.common.collect.Sets.SetView;
|
import com.google.common.collect.Sets.SetView;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.jdbc.BadSqlGrammarException;
|
import org.springframework.jdbc.BadSqlGrammarException;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -48,6 +55,8 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.LongFunction;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -418,13 +427,34 @@ public class GroupConfigServiceImpl implements GroupConfigService {
|
|||||||
public String exportGroup(final Set<Long> groupIds) {
|
public String exportGroup(final Set<Long> groupIds) {
|
||||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
List<GroupConfig> groupConfigs = accessTemplate.getGroupConfigAccess().list(
|
List<GroupConfigRequestVO> allRequestList = Lists.newArrayList();
|
||||||
|
PartitionTaskUtils.process((startId -> {
|
||||||
|
List<GroupConfig> groupConfigs = accessTemplate.getGroupConfigAccess().listPage(new PageDTO<>(0, 100),
|
||||||
new LambdaQueryWrapper<GroupConfig>()
|
new LambdaQueryWrapper<GroupConfig>()
|
||||||
.eq(GroupConfig::getNamespaceId, namespaceId)
|
.ge(GroupConfig::getId, startId)
|
||||||
.in(CollUtil.isNotEmpty(groupIds), GroupConfig::getId, groupIds)
|
.eq(GroupConfig::getNamespaceId, namespaceId)
|
||||||
);
|
.in(CollUtil.isNotEmpty(groupIds), GroupConfig::getId, groupIds)
|
||||||
|
.orderByAsc(GroupConfig::getId)
|
||||||
|
).getRecords();
|
||||||
|
return groupConfigs.stream().map(GroupConfigPartitionTask::new).toList();
|
||||||
|
}), partitionTasks -> {
|
||||||
|
List<GroupConfigPartitionTask> configPartitionTasks = (List<GroupConfigPartitionTask>) partitionTasks;
|
||||||
|
List<GroupConfig> configs = configPartitionTasks.stream().map(GroupConfigPartitionTask::getConfig)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
allRequestList.addAll(GroupConfigConverter.INSTANCE.toGroupConfigRequestVOs(configs));
|
||||||
|
}, 0);
|
||||||
|
|
||||||
return JsonUtil.toJsonString(GroupConfigConverter.INSTANCE.toGroupConfigRequestVOs(groupConfigs));
|
return JsonUtil.toJsonString(allRequestList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Getter
|
||||||
|
private static class GroupConfigPartitionTask extends PartitionTask {
|
||||||
|
// 这里就直接放GroupConfig为了后面若加字段不需要再这里在调整了
|
||||||
|
private final GroupConfig config;
|
||||||
|
public GroupConfigPartitionTask(@NotNull GroupConfig config) {
|
||||||
|
this.config = config;
|
||||||
|
setId(config.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user