From 4b7b7099c813e1fcc9f47b8378684c39f7a2dd0d Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Sun, 21 Jul 2024 17:40:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E4=BB=AA=E8=A1=A8=E6=9D=BF=E3=80=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F):=20=E4=BC=98=E5=8C=96Exce?= =?UTF-8?q?l=E3=80=81API=E6=95=B0=E6=8D=AE=E6=BA=90=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E5=85=BC=E5=AE=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/datasource/provider/ApiUtils.java | 14 ++++++++++++++ .../server/DataVisualizationServer.java | 17 +++++++++++++---- .../visualization/utils/VisualizationUtils.java | 4 ++++ .../src/views/common/DeAppApply.vue | 11 +++++++++++ 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java index 143cacca0c..9119b189ba 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java @@ -53,6 +53,20 @@ public class ApiUtils { return tableDescs; } + public static Map getTableNamesMap(String configration) throws DEException { + Map result = new HashMap<>(); + try { + JsonNode rootNode = objectMapper.readTree(configration); + for (int i = 0; i < rootNode.size(); i++) { + result.put(rootNode.get(i).get("name").asText(),rootNode.get(i).get("deTableName").asText()); + } + } catch (Exception e) { + DEException.throwException(e); + } + + return result; + } + public static Map fetchResultField(DatasourceRequest datasourceRequest) throws DEException { Map result = new HashMap<>(); diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java index 8e3cf2846c..0696d42a98 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java @@ -16,6 +16,7 @@ import io.dataease.dataset.manage.DatasetDataManage; import io.dataease.dataset.manage.DatasetGroupManage; import io.dataease.datasource.dao.auto.entity.CoreDatasource; import io.dataease.datasource.dao.auto.mapper.CoreDatasourceMapper; +import io.dataease.datasource.provider.ApiUtils; import io.dataease.datasource.provider.ExcelUtils; import io.dataease.extensions.datasource.dto.DatasetTableDTO; import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; @@ -203,16 +204,24 @@ public class DataVisualizationServer implements DataVisualizationApi { appCoreDatasourceVO.forEach(datasourceOld ->{ newDatasourceId.add(datasourceOld.getSystemDatasourceId()); // Excel 数据表明映射 - if (StringUtils.isNotEmpty(datasourceOld.getConfiguration()) && datasourceOld.getType().equals(DatasourceConfiguration.DatasourceType.Excel.name())) { - dsTableNamesMap.put(datasourceOld.getId(),ExcelUtils.getTableNamesMap(datasourceOld.getConfiguration())); + if (StringUtils.isNotEmpty(datasourceOld.getConfiguration())) { + if( datasourceOld.getType().equals(DatasourceConfiguration.DatasourceType.Excel.name())){ + dsTableNamesMap.put(datasourceOld.getId(),ExcelUtils.getTableNamesMap(datasourceOld.getConfiguration())); + }else if(datasourceOld.getType().equals(DatasourceConfiguration.DatasourceType.API.name())){ + dsTableNamesMap.put(datasourceOld.getId(), ApiUtils.getTableNamesMap(datasourceOld.getConfiguration())); + } } }); List systemDatasource = coreDatasourceMapper.selectBatchIds(newDatasourceId); systemDatasource.forEach(datasourceNew ->{ // Excel 数据表明映射 - if (StringUtils.isNotEmpty(datasourceNew.getConfiguration()) && datasourceNew.getType().equals(DatasourceConfiguration.DatasourceType.Excel.name())) { - dsTableNamesMap.put(datasourceNew.getId(),ExcelUtils.getTableNamesMap(datasourceNew.getConfiguration())); + if (StringUtils.isNotEmpty(datasourceNew.getConfiguration())) { + if(datasourceNew.getType().equals(DatasourceConfiguration.DatasourceType.Excel.name())){ + dsTableNamesMap.put(datasourceNew.getId(),ExcelUtils.getTableNamesMap(datasourceNew.getConfiguration())); + }else if(datasourceNew.getType().equals(DatasourceConfiguration.DatasourceType.API.name())){ + dsTableNamesMap.put(datasourceNew.getId(), ApiUtils.getTableNamesMap(datasourceNew.getConfiguration())); + } } }); datasourceIdMap.putAll(appData.getDatasourceInfo().stream() diff --git a/core/core-backend/src/main/java/io/dataease/visualization/utils/VisualizationUtils.java b/core/core-backend/src/main/java/io/dataease/visualization/utils/VisualizationUtils.java index b40e077b81..599574dca7 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/utils/VisualizationUtils.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/utils/VisualizationUtils.java @@ -1,8 +1,12 @@ package io.dataease.visualization.utils; +import io.dataease.datasource.provider.ApiUtils; +import io.dataease.datasource.provider.ExcelUtils; +import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.view.dto.ChartViewDTO; import io.dataease.utils.JsonUtil; +import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.Map; diff --git a/core/core-frontend/src/views/common/DeAppApply.vue b/core/core-frontend/src/views/common/DeAppApply.vue index c16ad9c97e..1b76616135 100644 --- a/core/core-frontend/src/views/common/DeAppApply.vue +++ b/core/core-frontend/src/views/common/DeAppApply.vue @@ -131,6 +131,7 @@ import { ElForm, ElFormItem, ElInput, + ElMessage, ElTreeSelect } from 'element-plus-secondary' import { computed, PropType, reactive, ref, toRefs } from 'vue' @@ -289,6 +290,16 @@ const close = () => { } const saveApp = () => { + let datasourceMatchReady = true + state.appData.datasourceInfo.forEach(datasource => { + if (!datasource.systemDatasourceId) { + datasourceMatchReady = false + } + }) + if (!datasourceMatchReady) { + ElMessage.error('存在未配置的数据源') + return + } appSaveForm.value?.validate(valid => { if (valid) { // 还原datasource