From 9c81a7220b68da4c953e5a4088325bcfe7f6c854 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Wed, 23 Apr 2025 16:41:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dapp=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E4=B8=AD=E5=8C=85=E6=8B=ACexcel=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=97=B6=E6=B2=A1=E6=9C=89=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=9B=BF=E6=8D=A2=E8=87=AA=E5=AE=9A=E4=B9=89sql?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E8=A1=A8=E5=90=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/DataVisualizationServer.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) 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 8e76d60336..cf49c70ed7 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.fasterxml.jackson.core.type.TypeReference; import io.dataease.api.dataset.union.DatasetGroupInfoDTO; +import io.dataease.api.dataset.union.DatasetTableInfoDTO; import io.dataease.api.dataset.union.UnionDTO; import io.dataease.api.template.dto.TemplateManageFileDTO; import io.dataease.api.template.dto.VisualizationTemplateExtendDataDTO; @@ -38,6 +39,7 @@ import io.dataease.datasource.dao.auto.mapper.CoreDatasourceMapper; import io.dataease.datasource.provider.ExcelUtils; import io.dataease.datasource.server.DatasourceServer; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.dto.DatasetTableDTO; import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.view.dto.ChartViewDTO; import io.dataease.i18n.Translator; @@ -257,11 +259,12 @@ public class DataVisualizationServer implements DataVisualizationApi { Map datasourceIdMap = new HashMap<>(); Map> dsTableNamesMap = new HashMap<>(); List newDatasourceId = new ArrayList<>(); + List excelDatasourceId = new ArrayList<>(); + Map excelTableNamesMap = new HashMap<>(); if (appData != null) { isAppSave = true; try { List appCoreDatasourceVO = appData.getDatasourceInfo(); - // app 数据源 excel 表名映射 appCoreDatasourceVO.forEach(datasourceOld -> { newDatasourceId.add(datasourceOld.getSystemDatasourceId()); @@ -283,6 +286,7 @@ public class DataVisualizationServer implements DataVisualizationApi { if (StringUtils.isNotEmpty(datasourceNew.getConfiguration())) { if (datasourceNew.getType().equals(DatasourceConfiguration.DatasourceType.Excel.name())) { dsTableNamesMap.put(datasourceNew.getId(), ExcelUtils.getTableNamesMap(datasourceNew.getType(), datasourceNew.getConfiguration())); + excelDatasourceId.add(datasourceNew.getId()); } else if (datasourceNew.getType().contains(DatasourceConfiguration.DatasourceType.API.name())) { dsTableNamesMap.put(datasourceNew.getId(), (Map) datasourceServer.invokeMethod(datasourceNew.getType(), "getTableNamesMap", String.class, datasourceNew.getConfiguration())); } @@ -375,6 +379,7 @@ public class DataVisualizationServer implements DataVisualizationApi { appDsTableNamesMap.forEach((keyName, valueName) -> { if (MapUtils.isNotEmpty(systemDsTableNamesMap) && StringUtils.isNotEmpty(systemDsTableNamesMap.get(keyName))) { dsGroup.setInfo(dsGroup.getInfo().replaceAll(valueName, systemDsTableNamesMap.get(keyName))); + excelTableNamesMap.put(valueName, systemDsTableNamesMap.get(keyName)); } else { dsGroup.setInfo(dsGroup.getInfo().replaceAll(valueName, "excel_can_not_find")); } @@ -393,6 +398,7 @@ public class DataVisualizationServer implements DataVisualizationApi { } datasetSQLManage.mergeDatasetCrossDefault(dsGroup); } + excelAdaptor(dsGroup,excelTableNamesMap,excelDatasourceId); datasetGroupManage.innerSave(dsGroup); }); @@ -481,6 +487,26 @@ public class DataVisualizationServer implements DataVisualizationApi { return newDvId.toString(); } + private void excelAdaptor(DatasetGroupInfoDTO dsInfo,Map excelTableNamesMap ,List excelDsId) { + List unionDTOList = JsonUtil.parseList(dsInfo.getInfo(), new TypeReference<>() { + }); + if(CollectionUtils.isNotEmpty(excelDsId) && MapUtils.isNotEmpty(excelTableNamesMap)){ + for(UnionDTO unionDTO : unionDTOList) { + DatasetTableDTO tableDTO =unionDTO.getCurrentDs(); + if(excelDsId.contains(tableDTO.getDatasourceId())){ + DatasetTableInfoDTO infoDTO = JsonUtil.parseObject(tableDTO.getInfo(), DatasetTableInfoDTO.class); + String s = new String(Base64.getDecoder().decode(infoDTO.getSql())); + excelTableNamesMap.forEach((key, value) -> { + infoDTO.setSql(Base64.getEncoder().encodeToString(s.replaceAll(key, value).getBytes())); + }); + tableDTO.setInfo((String)JsonUtil.toJSONString(infoDTO)); + } + + } + } + dsInfo.setInfo((String)JsonUtil.toJSONString(unionDTOList)); + } + @Override public String appCanvasNameCheck(DataVisualizationBaseRequest request) throws Exception { Long datasetFolderPid = request.getDatasetFolderPid();