From 5ba3cd166b9799afa956024bbcc8eedc78aab988 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Sun, 21 Jul 2024 17:06:09 +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=E6=95=B0=E6=8D=AE=E6=BA=90=E5=BA=94=E7=94=A8=E7=9A=84?= =?UTF-8?q?=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 --- .../datasource/provider/ExcelUtils.java | 14 ++++++ .../server/DataVisualizationServer.java | 44 +++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/ExcelUtils.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/ExcelUtils.java index b5b2c91e6c..a87effa721 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/ExcelUtils.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/ExcelUtils.java @@ -58,6 +58,20 @@ public class ExcelUtils { 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("tableName").asText(),rootNode.get(i).get("deTableName").asText()); + } + } catch (Exception e) { + DEException.throwException(e); + } + + return result; + } + public static String getFileName(CoreDatasource datasource) throws DEException { try { JsonNode rootNode = objectMapper.readTree(datasource.getConfiguration()); 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 aa8e94470b..8e3cf2846c 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 @@ -14,8 +14,14 @@ import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper; import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableMapper; 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.ExcelUtils; import io.dataease.extensions.datasource.dto.DatasetTableDTO; import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasourceDTO; +import io.dataease.extensions.datasource.dto.DatasourceRequest; +import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.view.dto.ChartViewDTO; import io.dataease.api.template.dto.TemplateManageFileDTO; import io.dataease.api.template.dto.VisualizationTemplateExtendDataDTO; @@ -56,6 +62,7 @@ import io.dataease.visualization.utils.VisualizationUtils; import jakarta.annotation.Resource; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.RequestBody; @@ -124,6 +131,8 @@ public class DataVisualizationServer implements DataVisualizationApi { @Resource private CoreDatasetTableFieldMapper coreDatasetTableFieldMapper; + @Autowired + private CoreDatasourceMapper coreDatasourceMapper; @Override public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) { @@ -183,9 +192,29 @@ public class DataVisualizationServer implements DataVisualizationApi { Map dsTableIdMap = new HashMap<>(); Map dsTableFieldsIdMap = new HashMap<>(); Map datasourceIdMap = new HashMap<>(); + Map> dsTableNamesMap = new HashMap<>(); + List newDatasourceId = new ArrayList<>(); if(appData != null){ isAppSave = true; try { + List appCoreDatasourceVO = appData.getDatasourceInfo(); + + // app 数据源 excel 表名映射 + 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())); + } + }); + + 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())); + } + }); datasourceIdMap.putAll(appData.getDatasourceInfo().stream() .collect(Collectors.toMap(AppCoreDatasourceVO::getId, AppCoreDatasourceVO::getSystemDatasourceId))); Long datasetFolderPid = request.getDatasetFolderPid(); @@ -261,6 +290,21 @@ public class DataVisualizationServer implements DataVisualizationApi { dsTableFieldsIdMap.forEach((key,value) ->{ dsGroup.setInfo(dsGroup.getInfo().replaceAll(key.toString(),value.toString())); }); + + datasourceIdMap.forEach((key,value) ->{ + dsGroup.setInfo(dsGroup.getInfo().replaceAll(key.toString(),value.toString())); + //表名映射更新 + Map appDsTableNamesMap = dsTableNamesMap.get(key); + Map systemDsTableNamesMap = dsTableNamesMap.get(value); + + appDsTableNamesMap.forEach((keyName,valueName) ->{ + if(StringUtils.isNotEmpty(systemDsTableNamesMap.get(keyName))){ + dsGroup.setInfo(dsGroup.getInfo().replaceAll(valueName,systemDsTableNamesMap.get(keyName))); + } + }); + }); + + datasetGroupManage.innerSave(dsGroup); });