diff --git a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java index 3c84d2c178..98d1e3de9b 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java @@ -6,8 +6,8 @@ import io.dataease.chart.constant.ChartConstants; import io.dataease.chart.manage.ChartDataManage; import io.dataease.chart.manage.ChartViewManege; import io.dataease.constant.CommonConstants; -import io.dataease.dataset.server.DatasetFieldServer; import io.dataease.constant.DeTypeConstants; +import io.dataease.dataset.server.DatasetFieldServer; import io.dataease.exception.DEException; import io.dataease.exportCenter.util.ExportCenterUtils; import io.dataease.extensions.view.dto.ChartExtFilterDTO; @@ -52,15 +52,15 @@ public class CoreVisualizationExportManage { private DatasetFieldServer datasetFieldServer; public String getResourceName(Long dvId, String busiFlag) { - DataVisualizationVO visualization = extDataVisualizationMapper.findDvInfo(dvId, busiFlag,"core"); + DataVisualizationVO visualization = extDataVisualizationMapper.findDvInfo(dvId, busiFlag, "core"); if (ObjectUtils.isEmpty(visualization)) DEException.throwException("资源不存在或已经被删除..."); return visualization.getName(); } - public File exportExcel(Long dvId, String busiFlag, List viewIdList, boolean onlyDisplay) throws Exception { - DataVisualizationVO visualization = extDataVisualizationMapper.findDvInfo(dvId, busiFlag,"core"); + public File exportExcel(Long dvId, String busiFlag, List viewIdList, boolean onlyDisplay, String filterJson) throws Exception { + DataVisualizationVO visualization = extDataVisualizationMapper.findDvInfo(dvId, busiFlag, "core"); if (ObjectUtils.isEmpty(visualization)) DEException.throwException("资源不存在或已经被删除..."); - List chartViewDTOS = chartViewManege.listBySceneId(dvId,CommonConstants.RESOURCE_TABLE.CORE); + List chartViewDTOS = chartViewManege.listBySceneId(dvId, CommonConstants.RESOURCE_TABLE.CORE); String componentsJson = visualization.getComponentData(); List> components = JsonUtil.parseList(componentsJson, tokenType); @@ -70,11 +70,11 @@ public class CoreVisualizationExportManage { chartViewDTOS = chartViewDTOS.stream().filter(item -> idList.contains(item.getId()) && viewIdList.contains(item.getId())).collect(Collectors.toList()); } if (CollectionUtils.isEmpty(chartViewDTOS)) return null; - Map chartExtRequestMap = buildViewRequest(visualization, onlyDisplay); + Map chartExtRequestMap = buildViewRequest(filterJson); List sheets = new ArrayList<>(); for (int i = 0; i < chartViewDTOS.size(); i++) { ChartViewDTO view = chartViewDTOS.get(i); - ChartExtRequest extRequest = chartExtRequestMap.get(view.getId().toString()); + ChartExtRequest extRequest = chartExtRequestMap.get(view.getId()); if (ObjectUtils.isNotEmpty(extRequest)) { view.setChartExtRequest(extRequest); } @@ -187,6 +187,13 @@ public class CoreVisualizationExportManage { private final TypeReference>> tokenType = new TypeReference>>() { }; + private Map buildViewRequest(String filterJson) { + if (StringUtils.isBlank(filterJson)) { + return new HashMap<>(); + } + return JsonUtil.parseObject(filterJson, new TypeReference>() { + }); + } private Map buildViewRequest(DataVisualizationVO panelDto, Boolean justView) { String componentsJson = panelDto.getComponentData(); diff --git a/core/core-frontend/src/views/chart/components/views/index.vue b/core/core-frontend/src/views/chart/components/views/index.vue index 90337bdf98..4ed6b0ad65 100644 --- a/core/core-frontend/src/views/chart/components/views/index.vue +++ b/core/core-frontend/src/views/chart/components/views/index.vue @@ -54,7 +54,8 @@ import request from '@/config/axios' import { store } from '@/store' import { clearExtremum } from '@/views/chart/components/js/extremumUitl' import DePreviewPopDialog from '@/components/visualization/DePreviewPopDialog.vue' - +import { useRoute } from 'vue-router' +const route = useRoute() const { wsCache } = useCache() const chartComponent = ref() const { t } = useI18n() @@ -368,7 +369,7 @@ const chartClick = param => { // 仪表板和大屏所有额外过滤参数都在此处 const filter = (firstLoad?: boolean) => { const { filter } = useFilter(view.value.id, firstLoad) - return { + const result = { user: wsCache.get('user.uid'), filter, linkageFilters: element.value.linkageFilters, @@ -378,6 +379,18 @@ const filter = (firstLoad?: boolean) => { resultCount: resultCount.value, resultMode: resultMode.value } + // 定时报告相关勿动 + if (route.path === '/preview' && route.query.taskId) { + const sceneId = view.value['sceneId'] + const filterJson = window[`de-report-filter-${sceneId}`] + let filterObj = {} + if (filterJson) { + filterObj = JSON.parse(filterJson) + } + filterObj[view.value.id] = result + window[`de-report-filter-${sceneId}`] = JSON.stringify(filterObj) + } + return result } const onDrillFilters = param => { diff --git a/sdk/common/src/main/java/io/dataease/utils/JsonUtil.java b/sdk/common/src/main/java/io/dataease/utils/JsonUtil.java index 4b93c12f88..98119b13c9 100644 --- a/sdk/common/src/main/java/io/dataease/utils/JsonUtil.java +++ b/sdk/common/src/main/java/io/dataease/utils/JsonUtil.java @@ -14,6 +14,7 @@ import java.util.List; public class JsonUtil { private static final ObjectMapper objectMapper; + static { objectMapper = new ObjectMapper(); // 配置更大的 StreamReadConstraints 限制 @@ -47,6 +48,17 @@ public class JsonUtil { return t; } + public static T parseObject(String json, TypeReference typeReference) { + if (json == null) return null; + T t = null; + try { + t = objectMapper.readValue(json, typeReference); + } catch (JsonProcessingException e) { + LogUtil.error(e.getMessage(), e); + } + return t; + } + public static List parseList(String json, TypeReference> classOfT) { if (ObjectUtils.isEmpty(json)) return Collections.emptyList(); List t = null;