From c9c4ee4a617cc77652b5260df488be443b9aadc4 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Wed, 8 Feb 2023 18:19:45 +0800 Subject: [PATCH 1/4] =?UTF-8?q?refactor(=E8=A7=86=E5=9B=BE):=20=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E8=A1=A8=E6=A0=BC=E5=AF=BC=E5=87=BA=E6=97=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=AF=BC=E5=87=BA=E5=85=A8=E9=87=8F=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/chart/ChartExtRequest.java | 3 + .../panel/PanelViewDetailsRequest.java | 5 + .../service/chart/ChartViewService.java | 8 +- .../service/panel/PanelGroupService.java | 28 +++++ .../canvas/customComponent/UserView.vue | 3 + .../canvas/customComponent/UserViewDialog.vue | 101 +++++++++++------- frontend/src/store/index.js | 6 +- 7 files changed, 109 insertions(+), 45 deletions(-) diff --git a/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java b/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java index 51d5cc3c74..b593df605b 100644 --- a/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java @@ -5,6 +5,7 @@ import io.dataease.plugins.common.request.chart.ChartExtFilterRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; + import java.util.List; /** @@ -48,4 +49,6 @@ public class ChartExtRequest { private Long pageSize; + private Boolean excelExportFlag = false; + } diff --git a/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java b/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java index dc2293f938..41e3c09e0b 100644 --- a/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java @@ -1,5 +1,6 @@ package io.dataease.controller.request.panel; +import io.dataease.controller.request.chart.ChartExtRequest; import lombok.Data; import java.util.List; @@ -30,4 +31,8 @@ public class PanelViewDetailsRequest { private ViewDetailField[] detailFields; + private ChartExtRequest componentFilterInfo; + + private List excelHeaderKeys; + } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 2cb580c952..582eae1a61 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -526,7 +526,8 @@ public class ChartViewService { } } List xAxisForRequest = new ArrayList<>(); - xAxisForRequest.addAll(xAxis); xAxisForRequest.addAll(extStack); + xAxisForRequest.addAll(xAxis); + xAxisForRequest.addAll(extStack); datasourceRequest.setXAxis(xAxisForRequest); data = datasourceProvider.getData(datasourceRequest); } else if (table.getMode() == 1) {// 抽取 @@ -655,7 +656,7 @@ public class ChartViewService { Map mapAttr = gson.fromJson(view.getCustomAttr(), Map.class); Map mapSize = (Map) mapAttr.get("size"); if (StringUtils.equalsIgnoreCase(view.getType(), "table-info") && table.getMode() == 0) { - if (StringUtils.equalsIgnoreCase((String) mapSize.get("tablePageMode"), "page")) { + if (StringUtils.equalsIgnoreCase((String) mapSize.get("tablePageMode"), "page") && !chartExtRequest.getExcelExportFlag()) { if (chartExtRequest.getGoPage() == null) { chartExtRequest.setGoPage(1L); } @@ -1043,7 +1044,8 @@ public class ChartViewService { datasourceRequest.setQuery(querySql); List xAxisForRequest = new ArrayList<>(); - xAxisForRequest.addAll(xAxis); xAxisForRequest.addAll(extStack); + xAxisForRequest.addAll(xAxis); + xAxisForRequest.addAll(extStack); datasourceRequest.setXAxis(xAxisForRequest); data = datasourceProvider.getData(datasourceRequest); if (CollectionUtils.isNotEmpty(assistFields)) { diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java index 288ecffe74..3aac71fbe5 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -10,6 +10,7 @@ import io.dataease.auth.api.dto.CurrentUserDto; import io.dataease.commons.constants.*; import io.dataease.commons.utils.*; import io.dataease.controller.request.authModel.VAuthModelRequest; +import io.dataease.controller.request.chart.ChartExtRequest; import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.request.panel.*; import io.dataease.dto.DatasourceDTO; @@ -652,6 +653,7 @@ public class PanelGroupService { public void exportPanelViewDetails(PanelViewDetailsRequest request, HttpServletResponse response) throws IOException { OutputStream outputStream = response.getOutputStream(); try { + findExcelData(request); String snapshot = request.getSnapshot(); List details = request.getDetails(); Integer[] excelTypes = request.getExcelTypes(); @@ -1089,6 +1091,32 @@ public class PanelGroupService { request.setUpdateTime(time); request.setUpdateBy(AuthUtils.getUser().getUsername()); panelGroupMapper.updateByPrimaryKeySelective(request); + } + + public void findExcelData(PanelViewDetailsRequest request) { + ChartViewWithBLOBs viewInfo = chartViewService.get(request.getViewId()); + if ("table-info".equals(viewInfo.getType())) { + try { + List excelHeaderKeys = request.getExcelHeaderKeys(); + ChartExtRequest componentFilterInfo = request.getComponentFilterInfo(); + componentFilterInfo.setGoPage(1l); + componentFilterInfo.setPageSize(1000000l); + componentFilterInfo.setExcelExportFlag(true); + ChartViewDTO chartViewInfo = chartViewService.getData(request.getViewId(), componentFilterInfo); + List tableRow = (List) chartViewInfo.getData().get("tableRow"); + List result = new ArrayList<>(); + for (Map detailMap : tableRow) { + List detailObj = new ArrayList<>(); + for (String key : excelHeaderKeys) { + detailObj.add(detailMap.get(key)); + } + result.add(detailObj.toArray()); + } + request.setDetails(result); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } } diff --git a/frontend/src/components/canvas/customComponent/UserView.vue b/frontend/src/components/canvas/customComponent/UserView.vue index ea90bbee57..74d5ca469e 100644 --- a/frontend/src/components/canvas/customComponent/UserView.vue +++ b/frontend/src/components/canvas/customComponent/UserView.vue @@ -770,6 +770,9 @@ export default { if (response.success) { this.chart = response.data this.view = response.data + if (this.chart.type.includes('table')) { + this.$store.commit('setLastViewRequestInfo', { viewId: id, requestInfo: requestInfo }) + } this.buildInnerRefreshTimer(this.chart.refreshViewEnable, this.chart.refreshUnit, this.chart.refreshTime) this.$emit('fill-chart-2-parent', this.chart) this.getDataOnly(response.data, dataBroadcast) diff --git a/frontend/src/components/canvas/customComponent/UserViewDialog.vue b/frontend/src/components/canvas/customComponent/UserViewDialog.vue index a61588c35e..a3a4d023ce 100644 --- a/frontend/src/components/canvas/customComponent/UserViewDialog.vue +++ b/frontend/src/components/canvas/customComponent/UserViewDialog.vue @@ -87,9 +87,20 @@ import html2canvas from 'html2canvasde' import { hexColorToRGBA } from '@/views/chart/chart/util' import { deepCopy, exportImg, imgUrlTrans } from '@/components/canvas/utils/utils' import { getLinkToken, getToken } from '@/utils/auth' + export default { name: 'UserViewDialog', - components: { LabelNormalText, ChartComponentS2, ChartComponentG2, DeMainContainer, DeContainer, ChartComponent, TableNormal, LabelNormal, PluginCom }, + components: { + LabelNormalText, + ChartComponentS2, + ChartComponentG2, + DeMainContainer, + DeContainer, + ChartComponent, + TableNormal, + LabelNormal, + PluginCom + }, props: { chart: { type: Object, @@ -123,8 +134,7 @@ export default { return this.chart.type === 'table-normal' || this.chart.type === 'table-info' }, customStyle() { - let style = { - } + let style = {} if (this.canvasStyleData.openCommonStyle) { if (this.canvasStyleData.panel.backgroundType === 'image' && this.canvasStyleData.panel.imageUrl) { style = { @@ -186,7 +196,8 @@ export default { 'isClickComponent', 'curComponent', 'componentData', - 'canvasStyleData' + 'canvasStyleData', + 'lastViewRequestInfo' ]), mapChart() { if (this.chart.type && (this.chart.type === 'map' || this.chart.type === 'buddle-map')) { @@ -211,7 +222,7 @@ export default { } }) } - const result = { ...temp, ...{ DetailAreaCode: DetailAreaCode }} + const result = { ...temp, ...{ DetailAreaCode: DetailAreaCode } } this.setLastMapChart(result) return result } @@ -285,6 +296,8 @@ export default { snapshot: snapshot, snapshotWidth: width, snapshotHeight: height, + componentFilterInfo: this.lastViewRequestInfo[this.chart.id], + excelHeaderKeys: excelHeaderKeys, detailFields } let method = innerExportDetails @@ -313,43 +326,49 @@ export default { diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index 72622c1890..1b8bed91f8 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -152,7 +152,8 @@ const data = { }, previewVisible: false, previewComponentData: [], - currentCanvasNewId: [] + currentCanvasNewId: [], + lastViewRequestInfo: {} }, mutations: { ...animation.mutations, @@ -610,6 +611,9 @@ const data = { resetViewEditInfo(state) { state.panelViewEditInfo = {} }, + setLastViewRequestInfo(state, viewRequestInfo) { + state.lastViewRequestInfo[viewRequestInfo.viewId] = viewRequestInfo.requestInfo + }, removeCurBatchComponentWithId(state, id) { for (let index = 0; index < state.curBatchOptComponents.length; index++) { const element = state.curBatchOptComponents[index] From 157d66523f0d06d7f547fedfad8d0e086e88cdab Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 9 Feb 2023 11:11:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix(=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E6=98=8E=E7=BB=86=E5=AF=BC=E5=87=BA=E5=8E=BB?= =?UTF-8?q?=E6=8E=89=E5=BA=95=E9=83=A8=E6=97=A0=E7=94=A8=E7=BF=BB=E9=A1=B5?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/canvas/customComponent/UserView.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/components/canvas/customComponent/UserView.vue b/frontend/src/components/canvas/customComponent/UserView.vue index 74d5ca469e..da4713b75f 100644 --- a/frontend/src/components/canvas/customComponent/UserView.vue +++ b/frontend/src/components/canvas/customComponent/UserView.vue @@ -915,6 +915,7 @@ export default { tableChart.customAttr.color.tableHeaderFontColor = '#7c7e81' tableChart.customAttr.color.tableFontColor = '#7c7e81' tableChart.customAttr.color.tableStripe = true + tableChart.customAttr.size.tablePageMode = 'pull' tableChart.customStyle.text.show = false tableChart.customAttr = JSON.stringify(tableChart.customAttr) tableChart.customStyle = JSON.stringify(tableChart.customStyle) From 4dc3e3d8770f37b61ec28c2a31753c4a12e2628c Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 9 Feb 2023 15:55:32 +0800 Subject: [PATCH 3/4] =?UTF-8?q?refactor(=E6=95=B0=E6=8D=AE=E9=9B=86):=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=AF=BC=E5=87=BA=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=94=B1=E7=AE=A1=E7=90=86=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/dataset/data/ViewTable.vue | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/frontend/src/views/dataset/data/ViewTable.vue b/frontend/src/views/dataset/data/ViewTable.vue index 72c9a87188..feaf71e105 100644 --- a/frontend/src/views/dataset/data/ViewTable.vue +++ b/frontend/src/views/dataset/data/ViewTable.vue @@ -17,14 +17,14 @@ v-if="table.mode === 0" class="de-tag primary" >{{ - $t('dataset.direct_connect') - }} + $t('dataset.direct_connect') + }} {{ - $t('dataset.sync_data') - }} + $t('dataset.sync_data') + }} {{ $t('dataset.dataset_sync') }} - + {{ $t('dataset.create_by') }} :{{ table.creatorName || 'N/A' }} - + {{ $t('dataset.excel_replace') + $t('chart.chart_data') }} - + {{ $t('dataset.excel_add') + $t('chart.chart_data') }} @@ -220,7 +221,7 @@ >
- +
@@ -233,7 +234,8 @@ {{ $t('dataset.cancel') }} + >{{ $t('dataset.cancel') }} +
Date: Thu, 9 Feb 2023 17:14:28 +0800 Subject: [PATCH 4/4] =?UTF-8?q?perf(=E7=99=BB=E5=BD=95):=20=E5=8F=8A?= =?UTF-8?q?=E6=97=B6=E5=88=A0=E9=99=A4=E5=BA=9F=E5=BC=83=E7=9A=84token?= =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/java/io/dataease/auth/filter/JWTFilter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java index 464e0c0979..973b0fced2 100644 --- a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java +++ b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java @@ -71,9 +71,11 @@ public class JWTFilter extends BasicHttpAuthenticationFilter { } // 当没有出现登录超时 且需要刷新token 则执行刷新token if (JWTUtils.loginExpire(authorization)) { + TokenCacheUtils.remove(authorization); throw new AuthenticationException(expireMessage); } if (JWTUtils.needRefresh(authorization)) { + TokenCacheUtils.remove(authorization); authorization = refreshToken(request, response); } JWTToken token = new JWTToken(authorization);