From 3bdc9f1120ce5f350ec6443c8b4f22dd8a0f3c4f Mon Sep 17 00:00:00 2001 From: ulleo Date: Tue, 11 Mar 2025 18:37:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(X-Pack):=20[=E6=95=B0=E6=8D=AE=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5]=E6=96=B0=E5=BB=BA=E8=A1=A8=E5=8D=95=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=BB=91=E5=AE=9A=E5=B7=B2=E6=9C=89=E8=A1=A8=20#12788?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/server/DatasourceServer.java | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java index db964efc4e..e0a2cc2011 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java @@ -15,6 +15,7 @@ import io.dataease.commons.constants.TaskStatus; import io.dataease.constant.DataSourceType; import io.dataease.constant.LogOT; import io.dataease.constant.LogST; +import io.dataease.constant.SQLConstants; import io.dataease.dataset.manage.DatasetDataManage; import io.dataease.dataset.utils.TableUtils; import io.dataease.datasource.dao.auto.entity.*; @@ -28,7 +29,6 @@ import io.dataease.datasource.manage.DatasourceSyncManage; import io.dataease.datasource.manage.EngineManage; import io.dataease.datasource.provider.CalciteProvider; import io.dataease.datasource.provider.ExcelUtils; -import io.dataease.constant.SQLConstants; import io.dataease.exception.DEException; import io.dataease.extensions.datasource.api.PluginManageApi; import io.dataease.extensions.datasource.dto.*; @@ -64,8 +64,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.lang.reflect.Method; - import java.util.*; +import java.util.concurrent.*; import java.util.stream.Collectors; import static io.dataease.datasource.server.DatasourceTaskServer.ScheduleType.MANUAL; @@ -582,13 +582,40 @@ public class DatasourceServer implements DatasourceApi { } } List dsList = datasourceMapper.selectList(queryWrapper); - for (CoreDatasource datasource : dsList) { + + try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) { + List> tasks = new ArrayList<>(); + // 创建多个任务 + for (CoreDatasource datasource : dsList) { + tasks.add(() -> { + try { + return convertCoreDatasource(datasource.getId(), false, datasource); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + }); + } + + // 提交所有任务并等待结果 + List> futures = executor.invokeAll(tasks); + for (Future future : futures) { + DatasourceDTO datasourceDTO = future.get(); + if (datasourceDTO != null) { + list.add(datasourceDTO); + } + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + + /*for (CoreDatasource datasource : dsList) { try { list.add(convertCoreDatasource(datasource.getId(), false, datasource)); } catch (Exception e) { e.printStackTrace(); } - } + }*/ return list; }