From bed34137479db5a7702e00f676eb75b771b1a7f1 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 19 Oct 2022 12:45:46 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E5=AE=9A=E6=97=B6=E6=8A=A5=E5=91=8A):=20?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=A7=86=E5=9B=BE=E6=95=B0=E6=8D=AE=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E5=AF=BC=E5=87=BA=E4=B8=8D=E5=90=8C=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/chart/FilterBuildTemplate.java | 2 +- .../service/chart/ViewExportExcel.java | 35 +++++++++---------- .../main/resources/db/migration/V42__1.16.sql | 2 ++ frontend/package.json | 2 +- frontend/src/lang/en.js | 9 ++--- frontend/src/lang/tw.js | 9 ++--- 6 files changed, 31 insertions(+), 28 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/chart/FilterBuildTemplate.java b/backend/src/main/java/io/dataease/service/chart/FilterBuildTemplate.java index a575cc7fbc..d0abe4a2a2 100644 --- a/backend/src/main/java/io/dataease/service/chart/FilterBuildTemplate.java +++ b/backend/src/main/java/io/dataease/service/chart/FilterBuildTemplate.java @@ -113,7 +113,7 @@ public abstract class FilterBuildTemplate { return condition; } - private static Map> buildEmpty(List> components) { + public static Map> buildEmpty(List> components) { Map> result = new HashMap<>(); components.forEach(element -> { if (StringUtils.equals(element.get("type").toString(), "view")) { diff --git a/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java b/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java index f6f685f6d2..136b036908 100644 --- a/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java +++ b/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java @@ -1,5 +1,6 @@ package io.dataease.service.chart; +import com.google.gson.internal.LinkedTreeMap; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -32,10 +33,10 @@ import com.google.gson.reflect.TypeToken; public class ViewExportExcel { private final static Gson gson = new Gson(); - private Type tokenType = new TypeToken>>() { + private final Type tokenType = new TypeToken>>() { }.getType(); - private Type fieldTokenType = new TypeToken>() { + private final Type fieldTokenType = new TypeToken>() { }.getType(); @DePermissionProxy(paramIndex = 2) @@ -46,41 +47,39 @@ public class ViewExportExcel { PanelGroupService panelGroupService = SpringContextUtil.getBean(PanelGroupService.class); PanelGroupDTO panelDto = panelGroupService.findOne(panelId); - String componentsJson = panelDto.getPanelData(); - List> components = gson.fromJson(componentsJson, tokenType); - ChartExtRequest chartExtRequest = new ChartExtRequest(); - chartExtRequest.setQueryFrom("panel"); - chartExtRequest.setFilter(new ArrayList<>()); - - - Map stringChartExtRequestMap = buildViewRequest(components); + Map stringChartExtRequestMap = buildViewRequest(panelDto, justView); List results = new ArrayList<>(); - List sheets = viewIds.stream().map(viewId -> viewFiles(viewId, justView ? stringChartExtRequestMap.get(viewId) : chartExtRequest)).collect(Collectors.toList()); + List sheets = viewIds.stream().map(viewId -> viewFiles(viewId, stringChartExtRequestMap.get(viewId))).collect(Collectors.toList()); File excelFile = ExcelUtils.exportExcel(sheets, panelDto.getName()); results.add(excelFile); return results; } - private Map buildViewRequest(List> component) { + private Map buildViewRequest(PanelGroupDTO panelDto, Boolean justView) { + String componentsJson = panelDto.getPanelData(); + List> components = gson.fromJson(componentsJson, tokenType); + String panelStyle = panelDto.getPanelStyle(); + Map map = gson.fromJson(panelStyle, Map.class); + Map panelMap = (LinkedTreeMap)map.get("panel"); + double resultCount = Double.parseDouble(panelMap.get("resultCount").toString()); + String resultMode = panelMap.get("resultMode").toString(); + Map result = new HashMap<>(); - Map> panelFilters = FilterBuildTemplate.buildFilters(component); + Map> panelFilters = justView ? FilterBuildTemplate.buildFilters(components) : FilterBuildTemplate.buildEmpty(components); for (Map.Entry> entry : panelFilters.entrySet()) { List chartExtFilterRequests = entry.getValue(); ChartExtRequest chartExtRequest = new ChartExtRequest(); chartExtRequest.setQueryFrom("panel"); chartExtRequest.setFilter(chartExtFilterRequests); + chartExtRequest.setResultCount((int)resultCount); + chartExtRequest.setResultMode(resultMode); result.put(entry.getKey(), chartExtRequest); } return result; } - private List initFilters(List> components) { - - return null; - } - private ExcelSheetModel viewFiles(String viewId, ChartExtRequest request) { ExcelSheetModel result = new ExcelSheetModel(); ChartViewDTO chartViewDTO = null; diff --git a/backend/src/main/resources/db/migration/V42__1.16.sql b/backend/src/main/resources/db/migration/V42__1.16.sql index 729a7ba202..68e5d4c663 100644 --- a/backend/src/main/resources/db/migration/V42__1.16.sql +++ b/backend/src/main/resources/db/migration/V42__1.16.sql @@ -10,5 +10,7 @@ UPDATE `sys_menu` set `component` = REPLACE(`component`, 'form', 'Form') where ( ALTER TABLE `dataset_table_field` ADD COLUMN `date_format` VARCHAR(255) NULL AFTER `accuracy`; +ALTER TABLE `sys_task_email` ADD COLUMN `view_data_range` VARCHAR(255) NULL DEFAULT 'view' AFTER `reci_users`; + diff --git a/frontend/package.json b/frontend/package.json index 36c385ebe5..f2fc11ddf0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -82,8 +82,8 @@ }, "devDependencies": { "@babel/core": "^7.4.0-0", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.6", "@babel/register": "7.0.0", "@vue/cli-plugin-babel": "3.6.0", "@vue/cli-plugin-eslint": "^5.0.4", diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 0f9ce1fe5d..8a35b14753 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -2484,18 +2484,19 @@ export default { exec_time: 'Execute time', start_time: 'Start time', end_time: 'End time', - + chart_data: 'View data', preview: 'Preview', emial_preview: 'Emial preview', - + chart_data_range: 'View data range', simple_repeat: 'Simple repeat', once_a_day: 'Once a day', once_a_week: 'Once a week', once_a_month: 'Once a month', complex_repeat: 'Complex repeat', pixel_tip: 'Please code custom pixel(such as 2560 * 1600) or select', - task_type: 'Task type' - + task_type: 'Task type', + range_view: 'Displayed data', + range_all: 'All data' }, dynamic_time: { set_default: 'Set Default', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 9aa5febbe9..190436c596 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -2485,18 +2485,19 @@ export default { exec_time: '執行時間', start_time: '開始時間', end_time: '結束時間', - + chart_data: '視圖數據', preview: '預覽', emial_preview: '郵件預覽', - + chart_data_range: '視圖數據範圍', simple_repeat: '簡單重複', once_a_day: '每天一次', once_a_week: '每周一次', once_a_month: '每月一次', complex_repeat: '複雜重複', pixel_tip: '可直接輸入分辨率(例如:2560 * 1600)或者選擇', - task_type: '任務類型' - + task_type: '任務類型', + range_view: '展示數據', + range_all: '全部數據' }, dynamic_time: { set_default: '設置默認值',