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