From cf89d461553713ed7775e91635b3a6e0f0fad143 Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Tue, 28 May 2024 18:47:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.0.0):=20=E4=BC=98=E5=8C=96=E7=BB=84?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=87=87=E7=94=A8=E5=88=86=E9=A1=B5=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GroupConfigServiceImpl.java | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java index f826218ca..974556197 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java @@ -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 groupIds) { String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); - List groupConfigs = accessTemplate.getGroupConfigAccess().list( + List allRequestList = Lists.newArrayList(); + PartitionTaskUtils.process((startId -> { + List groupConfigs = accessTemplate.getGroupConfigAccess().listPage(new PageDTO<>(0, 100), new LambdaQueryWrapper() - .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 configPartitionTasks = (List) partitionTasks; + List 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()); + } + } }