From 8050583f666a7040bdedac49108c963399c32d0a Mon Sep 17 00:00:00 2001 From: taojinlong Date: Sun, 7 Apr 2024 17:54:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=B8=AD=E5=BF=83=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/listener/AppStartListener.java | 4 + .../exportCenter/ExportCenterService.java | 52 ++++++++-- .../db/migration/V64__1.18.19_export_task.sql | 2 + .../src/views/dataset/exportExcel/index.vue | 9 +- installer/dataease/docker-compose.yml | 1 + installer/dataease/install.sh | 2 + .../common/base/domain/ExportTask.java | 4 + .../common/base/domain/ExportTaskExample.java | 70 +++++++++++++ .../common/base/mapper/ExportTaskMapper.java | 6 ++ .../common/base/mapper/ExportTaskMapper.xml | 98 +++++++++++++++++-- 10 files changed, 232 insertions(+), 16 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/listener/AppStartListener.java b/core/backend/src/main/java/io/dataease/listener/AppStartListener.java index bf37b7d11d..db4f30a8c4 100644 --- a/core/backend/src/main/java/io/dataease/listener/AppStartListener.java +++ b/core/backend/src/main/java/io/dataease/listener/AppStartListener.java @@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableTask; import io.dataease.commons.constants.ScheduleType; import io.dataease.service.ScheduleService; import io.dataease.service.dataset.DataSetTableTaskService; +import io.dataease.service.exportCenter.ExportCenterService; import org.apache.commons.lang3.StringUtils; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; @@ -22,6 +23,8 @@ public class AppStartListener implements ApplicationListener { + if(exportTask.getExportFromType().equalsIgnoreCase("dataset")){ + DataSetExportRequest request = new Gson().fromJson(exportTask.getParams(), DataSetExportRequest.class); + startDatasetTask(exportTask, request); + } + if(exportTask.getExportFromType().equalsIgnoreCase("chart")){ + PanelViewDetailsRequest request = new Gson().fromJson(exportTask.getParams(), PanelViewDetailsRequest.class); + startViewTask(exportTask, request); + } + }); + } + + private String hostName() { + String hostname = null; + try { + InetAddress localMachine = InetAddress.getLocalHost(); + hostname = localMachine.getHostName(); + } catch (Exception e) { + DataEaseException.throwException("请设置主机名!"); + } + return hostname; + } + public void addTask(String exportFrom, String exportFromType, PanelViewDetailsRequest request) { ExportTask exportTask = new ExportTask(); exportTask.setId(UUID.randomUUID().toString()); @@ -232,8 +266,13 @@ public class ExportCenterService { exportTask.setFileName(request.getViewName() + ".xlsx"); exportTask.setExportPogress("0"); exportTask.setExportTime(System.currentTimeMillis()); + exportTask.setParams(new Gson().toJson(request)); + exportTask.setExportMachineName(hostName()); exportTaskMapper.insert(exportTask); + startViewTask(exportTask, request); + } + private void startViewTask(ExportTask exportTask, PanelViewDetailsRequest request){ String dataPath = exportData_path + exportTask.getId(); File directory = new File(dataPath); boolean isCreated = directory.mkdir(); @@ -408,10 +447,7 @@ public class ExportCenterService { exportTaskMapper.updateByPrimaryKey(exportTask); } }); - - } - public void addTask(String exportFrom, String exportFromType, DataSetExportRequest request) { ExportTask exportTask = new ExportTask(); exportTask.setId(UUID.randomUUID().toString()); @@ -422,13 +458,17 @@ public class ExportCenterService { exportTask.setFileName(request.getFilename() + ".xlsx"); exportTask.setExportPogress("0"); exportTask.setExportTime(System.currentTimeMillis()); + exportTask.setParams(new Gson().toJson(request)); + exportTask.setExportMachineName(hostName()); exportTaskMapper.insert(exportTask); + startDatasetTask(exportTask, request); + } + + private void startDatasetTask(ExportTask exportTask, DataSetExportRequest request){ String dataPath = exportData_path + exportTask.getId(); File directory = new File(dataPath); boolean isCreated = directory.mkdir(); - - scheduledThreadPoolExecutor.execute(() -> { try { exportTask.setExportStatus("IN_PROGRESS"); @@ -613,8 +653,6 @@ public class ExportCenterService { exportTaskMapper.updateByPrimaryKey(exportTask); } }); - - } public Boolean checkEngineTableIsExists(String id) throws Exception { diff --git a/core/backend/src/main/resources/db/migration/V64__1.18.19_export_task.sql b/core/backend/src/main/resources/db/migration/V64__1.18.19_export_task.sql index 39c952930e..46ad8ba5ad 100644 --- a/core/backend/src/main/resources/db/migration/V64__1.18.19_export_task.sql +++ b/core/backend/src/main/resources/db/migration/V64__1.18.19_export_task.sql @@ -9,5 +9,7 @@ CREATE TABLE `export_task` ( `export_from_type` varchar(255) DEFAULT NULL, `export_time` bigint(20) DEFAULT NULL, `export_pogress` varchar(255) DEFAULT NULL, + `export_machine_name` varchar(512) DEFAULT NULL, + `params` longtext NOT NULL COMMENT '过滤参数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; \ No newline at end of file diff --git a/core/frontend/src/views/dataset/exportExcel/index.vue b/core/frontend/src/views/dataset/exportExcel/index.vue index a274530203..423826173e 100644 --- a/core/frontend/src/views/dataset/exportExcel/index.vue +++ b/core/frontend/src/views/dataset/exportExcel/index.vue @@ -52,7 +52,7 @@