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 04d048ce29..a06871037f 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 @@ -237,7 +237,7 @@ public class DataVisualizationServer implements DataVisualizationApi { return null; } - private void appDatasetMatch(VisualizationExport2AppVO appData, Map datasourceIdMap, Map dsGroupIdMap, Map dsTableIdMap, Map dsTableFieldsIdMap) { + private void appDatasetMatch(VisualizationExport2AppVO appData, Map datasourceIdMap, Map dsGroupIdMap, Map dsTableIdMap, Map dsTableFieldsIdMap,Map dsTableFieldsDatasetNameMap) { List sourceDatasetGroupList = appData.getDatasetGroupsInfo(); List sourceDatasetTableList = appData.getDatasetTablesInfo(); @@ -249,6 +249,10 @@ public class DataVisualizationServer implements DataVisualizationApi { Map> sourceDatasetTableFieldMap = DeCollectionUtils.groupBy(sourceDatasetTableFieldList, AppCoreDatasetTableFieldVO::getDatasetTableId); + Map> sourceDatasetTableFieldMapGroup = + DeCollectionUtils.groupBy(sourceDatasetTableFieldList, AppCoreDatasetTableFieldVO::getDatasetGroupId); + + sourceDatasetGroupList.forEach(sourceDatasetGroup -> { Long systemDatasetGroupId = sourceDatasetGroup.getSystemDatasetId(); Long sourceDatasetGroupId = sourceDatasetGroup.getId(); @@ -280,6 +284,25 @@ public class DataVisualizationServer implements DataVisualizationApi { if (sourceTableField.getOriginName().equals(systemTableField.getOriginName())) { // 获取dsTableIdMap datasourceIdMap dsTableFieldsIdMap.put(sourceTableField.getId(), systemTableField.getId()); + dsTableFieldsDatasetNameMap.put(sourceTableField.getDataeaseName(),systemTableField.getDataeaseName()); + break; + } + } + } + + // 获取 dsTableFieldsIdMapGroup 进行二次匹配 解决计算字段没有tableId 问题 + List sourceDatasetTableFieldListSubGroup = sourceDatasetTableFieldMapGroup.get(sourceTable.getDatasetGroupId()); + + QueryWrapper wrapperFieldGroup = new QueryWrapper<>(); + wrapperFieldGroup.eq("dataset_group_id", systemTable.getDatasetGroupId()); + List systemDatasetTableFieldSubGroup = coreDatasetTableFieldMapper.selectList(wrapperFieldGroup); + + for (AppCoreDatasetTableFieldVO sourceTableField : sourceDatasetTableFieldListSubGroup) { + for (CoreDatasetTableField systemTableField : systemDatasetTableFieldSubGroup) { + if (dsTableFieldsIdMap.get(sourceTableField.getId())==null && sourceTableField.getName().equals(systemTableField.getName())) { + // 获取dsTableIdMap datasourceIdMap + dsTableFieldsIdMap.put(sourceTableField.getId(), systemTableField.getId()); + dsTableFieldsDatasetNameMap.put(sourceTableField.getDataeaseName(),systemTableField.getDataeaseName()); break; } } @@ -316,6 +339,7 @@ public class DataVisualizationServer implements DataVisualizationApi { List newDsGroupInfo = new ArrayList<>(); Map dsTableIdMap = new HashMap<>(); Map dsTableFieldsIdMap = new HashMap<>(); + Map dsTableFieldsDatasetNameMap = new HashMap<>(); List dsTableFieldsList = new ArrayList(); Map datasourceIdMap = new HashMap<>(); Map> dsTableNamesMap = new HashMap<>(); @@ -325,7 +349,7 @@ public class DataVisualizationServer implements DataVisualizationApi { if (appData != null) { isAppSave = true; if ("dataset".equals(request.getDataType())) { - appDatasetMatch(appData, datasourceIdMap, dsGroupIdMap, dsTableIdMap, dsTableFieldsIdMap); + appDatasetMatch(appData, datasourceIdMap, dsGroupIdMap, dsTableIdMap, dsTableFieldsIdMap,dsTableFieldsDatasetNameMap); } else { try { List appCoreDatasourceVO = appData.getDatasourceInfo(); @@ -537,6 +561,9 @@ public class DataVisualizationServer implements DataVisualizationApi { dsGroupIdMap.forEach((key, value) -> { mutableViewInfoStr.set(mutableViewInfoStr.get().replaceAll(key.toString(), value.toString())); }); + dsTableFieldsDatasetNameMap.forEach((key, value) -> { + mutableViewInfoStr.set(mutableViewInfoStr.get().replaceAll(key, value)); + }); canvasViewsStr.put(viewId, mutableViewInfoStr.get()); }); canvasViews = VisualizationUtils.viewTransToObj(canvasViewsStr);