diff --git a/core/backend/src/main/java/io/dataease/service/chart/ChartViewOldDataMergeService.java b/core/backend/src/main/java/io/dataease/service/chart/ChartViewOldDataMergeService.java index a4f5a97697..a33141b1b2 100644 --- a/core/backend/src/main/java/io/dataease/service/chart/ChartViewOldDataMergeService.java +++ b/core/backend/src/main/java/io/dataease/service/chart/ChartViewOldDataMergeService.java @@ -52,7 +52,14 @@ public class ChartViewOldDataMergeService { for (ChartViewWithBLOBs view : chartViewWithBLOBs) { Type filterTokenType = new TypeToken>() { }.getType(); - List fieldCustomFilter = gson.fromJson(view.getCustomFilter(), filterTokenType); + List fieldCustomFilter; + // 尝试将历史数据转成list,如果转换出现异常,则忽略该视图继续执行下一个 + try { + fieldCustomFilter = gson.fromJson(view.getCustomFilter(), filterTokenType); + } catch (Exception e) { + continue; + } + if (CollectionUtils.isEmpty(fieldCustomFilter)) { // 将 '[]' 转换成 '{}' view.setCustomFilter("{}"); @@ -71,18 +78,17 @@ public class ChartViewOldDataMergeService { tree.getItems().add(item); } else { List filter = filterDTO.getFilter(); - if (CollectionUtils.isEmpty(filter)) { - continue; - } - for (ChartCustomFilterItemDTO f : filter) { - FilterTreeItem item = new FilterTreeItem(); - item.setType("item"); - item.setFieldId(filterDTO.getId()); - item.setFilterType(filterDTO.getFilterType()); - item.setTerm(f.getTerm()); - item.setValue(f.getValue()); - item.setEnumValue(new ArrayList<>()); - tree.getItems().add(item); + if (CollectionUtils.isNotEmpty(filter)) { + for (ChartCustomFilterItemDTO f : filter) { + FilterTreeItem item = new FilterTreeItem(); + item.setType("item"); + item.setFieldId(filterDTO.getId()); + item.setFilterType(filterDTO.getFilterType()); + item.setTerm(f.getTerm()); + item.setValue(f.getValue()); + item.setEnumValue(new ArrayList<>()); + tree.getItems().add(item); + } } } } else { @@ -97,38 +103,37 @@ public class ChartViewOldDataMergeService { tree.getItems().add(item); } else { List filter = dto.getFilter(); - if (CollectionUtils.isEmpty(filter)) { - continue; - } - if (filter.size() == 1) { - ChartCustomFilterItemDTO f = filter.get(0); - FilterTreeItem item = new FilterTreeItem(); - item.setType("item"); - item.setFieldId(dto.getId()); - item.setFilterType(dto.getFilterType()); - item.setTerm(f.getTerm()); - item.setValue(f.getValue()); - item.setEnumValue(new ArrayList<>()); - tree.getItems().add(item); - } else { - FilterTreeItem item = new FilterTreeItem(); - item.setType("tree"); - item.setEnumValue(new ArrayList<>()); - FilterTreeObj subTree = new FilterTreeObj(); - subTree.setLogic(dto.getLogic()); - subTree.setItems(new ArrayList<>()); - for (ChartCustomFilterItemDTO f : filter) { - FilterTreeItem itemTree = new FilterTreeItem(); - itemTree.setType("item"); - itemTree.setFieldId(dto.getId()); - itemTree.setFilterType(dto.getFilterType()); - itemTree.setTerm(f.getTerm()); - itemTree.setValue(f.getValue()); - itemTree.setEnumValue(new ArrayList<>()); - subTree.getItems().add(itemTree); + if (CollectionUtils.isNotEmpty(filter)) { + if (filter.size() == 1) { + ChartCustomFilterItemDTO f = filter.get(0); + FilterTreeItem item = new FilterTreeItem(); + item.setType("item"); + item.setFieldId(dto.getId()); + item.setFilterType(dto.getFilterType()); + item.setTerm(f.getTerm()); + item.setValue(f.getValue()); + item.setEnumValue(new ArrayList<>()); + tree.getItems().add(item); + } else { + FilterTreeItem item = new FilterTreeItem(); + item.setType("tree"); + item.setEnumValue(new ArrayList<>()); + FilterTreeObj subTree = new FilterTreeObj(); + subTree.setLogic(dto.getLogic()); + subTree.setItems(new ArrayList<>()); + for (ChartCustomFilterItemDTO f : filter) { + FilterTreeItem itemTree = new FilterTreeItem(); + itemTree.setType("item"); + itemTree.setFieldId(dto.getId()); + itemTree.setFilterType(dto.getFilterType()); + itemTree.setTerm(f.getTerm()); + itemTree.setValue(f.getValue()); + itemTree.setEnumValue(new ArrayList<>()); + subTree.getItems().add(itemTree); + } + item.setSubTree(subTree); + tree.getItems().add(item); } - item.setSubTree(subTree); - tree.getItems().add(item); } } } @@ -160,7 +165,15 @@ public class ChartViewOldDataMergeService { for (ChartViewCacheWithBLOBs view : chartViewWithBLOBs) { Type filterTokenType = new TypeToken>() { }.getType(); - List fieldCustomFilter = gson.fromJson(view.getCustomFilter(), filterTokenType); + + List fieldCustomFilter; + // 尝试将历史数据转成list,如果转换出现异常,则忽略该视图继续执行下一个 + try { + fieldCustomFilter = gson.fromJson(view.getCustomFilter(), filterTokenType); + } catch (Exception e) { + continue; + } + if (CollectionUtils.isEmpty(fieldCustomFilter)) { // 将 '[]' 转换成 '{}' view.setCustomFilter("{}"); @@ -179,18 +192,17 @@ public class ChartViewOldDataMergeService { tree.getItems().add(item); } else { List filter = filterDTO.getFilter(); - if (CollectionUtils.isEmpty(filter)) { - continue; - } - for (ChartCustomFilterItemDTO f : filter) { - FilterTreeItem item = new FilterTreeItem(); - item.setType("item"); - item.setFieldId(filterDTO.getId()); - item.setFilterType(filterDTO.getFilterType()); - item.setTerm(f.getTerm()); - item.setValue(f.getValue()); - item.setEnumValue(new ArrayList<>()); - tree.getItems().add(item); + if (CollectionUtils.isNotEmpty(filter)) { + for (ChartCustomFilterItemDTO f : filter) { + FilterTreeItem item = new FilterTreeItem(); + item.setType("item"); + item.setFieldId(filterDTO.getId()); + item.setFilterType(filterDTO.getFilterType()); + item.setTerm(f.getTerm()); + item.setValue(f.getValue()); + item.setEnumValue(new ArrayList<>()); + tree.getItems().add(item); + } } } } else { @@ -205,38 +217,37 @@ public class ChartViewOldDataMergeService { tree.getItems().add(item); } else { List filter = dto.getFilter(); - if (CollectionUtils.isEmpty(filter)) { - continue; - } - if (filter.size() == 1) { - ChartCustomFilterItemDTO f = filter.get(0); - FilterTreeItem item = new FilterTreeItem(); - item.setType("item"); - item.setFieldId(dto.getId()); - item.setFilterType(dto.getFilterType()); - item.setTerm(f.getTerm()); - item.setValue(f.getValue()); - item.setEnumValue(new ArrayList<>()); - tree.getItems().add(item); - } else { - FilterTreeItem item = new FilterTreeItem(); - item.setType("tree"); - item.setEnumValue(new ArrayList<>()); - FilterTreeObj subTree = new FilterTreeObj(); - subTree.setLogic(dto.getLogic()); - subTree.setItems(new ArrayList<>()); - for (ChartCustomFilterItemDTO f : filter) { - FilterTreeItem itemTree = new FilterTreeItem(); - itemTree.setType("item"); - itemTree.setFieldId(dto.getId()); - itemTree.setFilterType(dto.getFilterType()); - itemTree.setTerm(f.getTerm()); - itemTree.setValue(f.getValue()); - itemTree.setEnumValue(new ArrayList<>()); - subTree.getItems().add(itemTree); + if (CollectionUtils.isNotEmpty(filter)) { + if (filter.size() == 1) { + ChartCustomFilterItemDTO f = filter.get(0); + FilterTreeItem item = new FilterTreeItem(); + item.setType("item"); + item.setFieldId(dto.getId()); + item.setFilterType(dto.getFilterType()); + item.setTerm(f.getTerm()); + item.setValue(f.getValue()); + item.setEnumValue(new ArrayList<>()); + tree.getItems().add(item); + } else { + FilterTreeItem item = new FilterTreeItem(); + item.setType("tree"); + item.setEnumValue(new ArrayList<>()); + FilterTreeObj subTree = new FilterTreeObj(); + subTree.setLogic(dto.getLogic()); + subTree.setItems(new ArrayList<>()); + for (ChartCustomFilterItemDTO f : filter) { + FilterTreeItem itemTree = new FilterTreeItem(); + itemTree.setType("item"); + itemTree.setFieldId(dto.getId()); + itemTree.setFilterType(dto.getFilterType()); + itemTree.setTerm(f.getTerm()); + itemTree.setValue(f.getValue()); + itemTree.setEnumValue(new ArrayList<>()); + subTree.getItems().add(itemTree); + } + item.setSubTree(subTree); + tree.getItems().add(item); } - item.setSubTree(subTree); - tree.getItems().add(item); } } } diff --git a/core/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java b/core/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java index 009ff2722b..752ed3ac11 100644 --- a/core/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java +++ b/core/backend/src/main/java/io/dataease/service/chart/ViewExportExcel.java @@ -71,6 +71,7 @@ public class ViewExportExcel { Map result = new HashMap<>(); Map> panelFilters = justView ? FilterBuildTemplate.buildFilters(components) : FilterBuildTemplate.buildEmpty(components); + List tableInfoViewIds = findTableInfoViewIds(components); for (Map.Entry> entry : panelFilters.entrySet()) { List chartExtFilterRequests = entry.getValue(); ChartExtRequest chartExtRequest = new ChartExtRequest(); @@ -78,11 +79,26 @@ public class ViewExportExcel { chartExtRequest.setFilter(chartExtFilterRequests); chartExtRequest.setResultCount((int) resultCount); chartExtRequest.setResultMode(resultMode); + if(tableInfoViewIds.contains(entry.getKey())){ + chartExtRequest.setGoPage(1L); + chartExtRequest.setPageSize(1000000L); + chartExtRequest.setExcelExportFlag(true); + } result.put(entry.getKey(), chartExtRequest); } return result; } + private List findTableInfoViewIds(List> components) { + List tableInfoViewIds = new ArrayList<>(); + components.forEach(element -> { + if (StringUtils.equals(element.get("type").toString(), "view") && StringUtils.equals(((Map) element.get("propValue")).get("innerType").toString(), "table-info")) { + tableInfoViewIds.add(((Map) element.get("propValue")).get("viewId").toString()); + } + }); + return tableInfoViewIds; + } + private ExcelSheetModel viewFiles(String viewId, ChartExtRequest request) { ExcelSheetModel result = new ExcelSheetModel(); ChartViewDTO chartViewDTO = null; diff --git a/core/frontend/src/views/chart/components/ChartTitleUpdate.vue b/core/frontend/src/views/chart/components/ChartTitleUpdate.vue index 344ac16e56..6cc6249d10 100644 --- a/core/frontend/src/views/chart/components/ChartTitleUpdate.vue +++ b/core/frontend/src/views/chart/components/ChartTitleUpdate.vue @@ -280,11 +280,6 @@ export default { ) { view.drillFields = [] } - // view.customFilter.forEach(function(ele) { - // if (ele && !ele.filter) { - // ele.filter = [] - // } - // }) view.xaxis = JSON.stringify(view.xaxis) view.viewFields = JSON.stringify(view.viewFields) view.xaxisExt = JSON.stringify(view.xaxisExt) diff --git a/core/frontend/src/views/chart/view/ChartEdit.vue b/core/frontend/src/views/chart/view/ChartEdit.vue index 49e41e1158..12155b7dbe 100644 --- a/core/frontend/src/views/chart/view/ChartEdit.vue +++ b/core/frontend/src/views/chart/view/ChartEdit.vue @@ -1840,7 +1840,6 @@ import { } from '@/api/chart/chart' import DimensionItem from '../components/dragItem/DimensionItem' import QuotaItem from '../components/dragItem/QuotaItem' -import FilterItem from '../components/dragItem/FilterItem' import ChartDragItem from '../components/dragItem/ChartDragItem' import DrillItem from '../components/dragItem/DrillItem' import ResultFilterEditor from '../components/filter/ResultFilterEditor' @@ -1916,7 +1915,6 @@ export default { ChartType, ChartComponentG2, QuotaExtItem, - FilterItem, FilterTree, FieldEdit, TableSelector, @@ -2289,7 +2287,7 @@ export default { bus.$off('show-rename', this.showRename) bus.$off('show-quota-edit-filter', this.showQuotaEditFilter) bus.$off('show-quota-edit-compare', this.showQuotaEditCompare) - bus.$off('show-edit-filter', this.showEditFilter) + bus.$off('show-edit-filter', this.openTreeFilter) bus.$off('show-edit-formatter', this.valueFormatter) bus.$off('calc-data', this.calcData) bus.$off('plugins-calc-style', this.calcStyle) @@ -2379,7 +2377,7 @@ export default { bus.$on('show-rename', this.showRename) bus.$on('show-quota-edit-filter', this.showQuotaEditFilter) bus.$on('show-quota-edit-compare', this.showQuotaEditCompare) - bus.$on('show-edit-filter', this.showEditFilter) + bus.$on('show-edit-filter', this.openTreeFilter) bus.$on('show-edit-formatter', this.valueFormatter) bus.$on('calc-data', this.calcData) bus.$on('plugins-calc-style', this.calcStyle) @@ -2643,11 +2641,6 @@ export default { view.type === 'table-pivot') { view.drillFields = [] } - // view.customFilter.forEach(function(ele) { - // if (ele && !ele.filter) { - // ele.filter = [] - // } - // }) this.chart = JSON.parse(JSON.stringify(view)) this.view = JSON.parse(JSON.stringify(view)) // stringify json param @@ -3068,63 +3061,6 @@ export default { this.closeQuotaFilter() }, - filterItemRemove(item) { - this.view.customFilter.splice(item.index, 1) - this.calcData(true) - }, - showEditFilter(item) { - this.filterItem = JSON.parse(JSON.stringify(item)) - this.chartForFilter = JSON.parse(JSON.stringify(this.view)) - if (!this.filterItem.logic) { - this.filterItem.logic = 'and' - } - if (!this.filterItem.filterType) { - this.filterItem.filterType = 'logic' - } - if (!this.filterItem.enumCheckField) { - this.filterItem.enumCheckField = [] - } - this.resultFilterEdit = true - }, - closeResultFilter() { - this.resultFilterEdit = false - }, - saveResultFilter() { - if (((this.filterItem.deType === 0 || this.filterItem.deType === 5) && this.filterItem.filterType !== 'enum') || - this.filterItem.deType === 1 || - this.filterItem.deType === 2 || - this.filterItem.deType === 3) { - for (let i = 0; i < this.filterItem.filter.length; i++) { - const f = this.filterItem.filter[i] - if (!f.term.includes('null') && !f.term.includes('empty') && (!f.value || f.value === '')) { - this.$message({ - message: this.$t('chart.filter_value_can_null'), - type: 'error', - showClose: true - }) - return - } - if (this.filterItem.deType === 2 || this.filterItem.deType === 3) { - if (isNaN(f.value)) { - this.$message({ - message: this.$t('chart.filter_value_can_not_str'), - type: 'error', - showClose: true - }) - return - } - } - } - } - - this.view.customFilter[this.filterItem.index].filter = this.filterItem.filter - this.view.customFilter[this.filterItem.index].logic = this.filterItem.logic - this.view.customFilter[this.filterItem.index].filterType = this.filterItem.filterType - this.view.customFilter[this.filterItem.index].enumCheckField = this.filterItem.enumCheckField - this.calcData(true) - this.closeResultFilter() - }, - showRename(val) { this.itemForm = JSON.parse(JSON.stringify(val)) this.renameItem = true