From 2d098243f59c447752ff0835bfed1c8a261720e8 Mon Sep 17 00:00:00 2001 From: junjun Date: Wed, 20 Dec 2023 14:34:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=86=E5=9B=BE=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=99=A8=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/ChartViewOldDataMergeService.java | 187 +++++++++--------- 1 file changed, 99 insertions(+), 88 deletions(-) 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); } } }