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.StreamUtils;
|
||||
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.exception.SnailJobServerException;
|
||||
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.request.GroupConfigQueryVO;
|
||||
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.po.*;
|
||||
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.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.collect.Sets.SetView;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.jdbc.BadSqlGrammarException;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -48,6 +55,8 @@ import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.LongFunction;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -418,13 +427,34 @@ public class GroupConfigServiceImpl implements GroupConfigService {
|
||||
public String exportGroup(final Set<Long> groupIds) {
|
||||
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>()
|
||||
.eq(GroupConfig::getNamespaceId, namespaceId)
|
||||
.in(CollUtil.isNotEmpty(groupIds), GroupConfig::getId, groupIds)
|
||||
);
|
||||
.ge(GroupConfig::getId, startId)
|
||||
.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