From 54b4db94ac4a26c6488e76bb6921d99e794950ea Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Sat, 29 Jun 2024 20:32:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E5=9B=BE=E8=A1=A8):=20=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E6=8F=92=E4=BB=B6=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/charts/AbstractChartHandler.java | 19 - .../chart/charts/ChartHandlerManager.java | 7 +- .../charts/impl/DefaultChartHandler.java | 71 +- .../chart/charts/impl/YoyChartHandler.java | 6 +- .../chart/charts/impl/bar/BarHandler.java | 4 +- .../charts/impl/bar/GroupBarHandler.java | 10 +- .../charts/impl/bar/RangeBarHandler.java | 4 +- .../charts/impl/bar/StackBarHandler.java | 2 +- .../charts/impl/bar/StackGroupBarHandler.java | 3 +- .../chart/charts/impl/line/LineHandler.java | 7 +- .../charts/impl/line/StackAreaHandler.java | 6 +- .../charts/impl/map/SymbolicMapHandler.java | 28 +- .../charts/impl/mix/GroupMixHandler.java | 1 - .../chart/charts/impl/mix/MixHandler.java | 6 +- .../charts/impl/mix/StackMixHandler.java | 1 - .../{numberic => numeric}/GaugeHandler.java | 4 +- .../IndicatorHandler.java | 5 +- .../{numberic => numeric}/LiquidHandler.java | 4 +- .../NumericalChartHandler.java} | 11 +- .../charts/impl/table/TableInfoHandler.java | 8 +- .../chart/manage/ChartDataManage.java | 1176 +---------------- .../chart/manage/ChartFilterTreeService.java | 2 +- .../chart/manage/ChartViewManege.java | 2 +- .../dataease/chart/utils/ChartDataBuild.java | 6 +- .../dataset/manage/DatasetDataManage.java | 9 +- .../dataset/manage/DatasetGroupManage.java | 2 +- .../dataset/manage/DatasetSQLManage.java | 2 +- .../manage/DatasetTableFieldManage.java | 4 +- .../dataset/manage/PermissionManage.java | 6 +- .../dataset/server/DatasetDataServer.java | 2 +- .../dataset/server/DatasetFieldServer.java | 2 +- .../engine/trans/CustomWhere2Str.java | 2 +- .../engine/trans/Dimension2SQLObj.java | 2 +- .../dataease/engine/trans/ExtWhere2Str.java | 2 +- .../dataease/engine/trans/Field2SQLObj.java | 2 +- .../dataease/engine/trans/Order2SQLObj.java | 2 +- .../dataease/engine/trans/Quota2SQLObj.java | 2 +- .../dataease/engine/trans/WhereTree2Str.java | 2 +- .../java/io/dataease/engine/utils/Utils.java | 2 +- .../mapper/ExtVisualizationLinkageMapper.java | 2 +- .../server/VisualizationLinkJumpService.java | 2 +- .../main/resources/i18n/core_en_US.properties | 1 + .../main/resources/i18n/core_zh_CN.properties | 1 + .../main/resources/i18n/core_zh_TW.properties | 5 +- .../mybatis/ExtDataVisualizationMapper.xml | 2 +- .../ExtVisualizationLinkJumpMapper.xml | 2 +- .../mybatis/ExtVisualizationLinkageMapper.xml | 4 +- .../editor/chart-type/ChartType.vue | 11 +- .../views/chart/components/editor/index.vue | 35 +- .../dataease/api/chart/dto/DeSortField.java | 2 +- .../api/chart/dto/ScatterChartDataDTO.java | 1 + .../dataease/api/dataset/DatasetDataApi.java | 2 +- .../dataease/api/dataset/DatasetTableApi.java | 2 +- .../dataset/union/DatasetGroupInfoDTO.java | 2 +- .../dataease/api/dataset/union/UnionDTO.java | 2 +- .../api/dataset/union/UnionItemDTO.java | 2 +- .../VisualizationLinkJumpApi.java | 2 +- .../dto/VisualizationLinkageDTO.java | 2 +- .../dto/VisualizationViewTableDTO.java | 2 +- .../vo/VisualizationViewTableVO.java | 2 +- sdk/common/pom.xml | 6 - sdk/extensions/extensions-datasource/pom.xml | 7 - .../datasource/dto/DatasetTableDTO.java | 1 - .../datasource}/dto/DatasetTableFieldDTO.java | 2 +- sdk/extensions/extensions-view/pom.xml | 9 +- .../view}/dto/AxisChartDataAntVDTO.java | 3 +- .../view}/dto/AxisChartDataDTO.java | 3 +- .../view/dto/ChartCalcDataResult.java | 1 - .../view/dto/ChartExtFilterDTO.java | 1 + .../view/dto/ChartFieldCustomFilterDTO.java | 1 + .../extensions/view}/dto/ChartQuotaDTO.java | 2 +- .../view/dto/ChartViewFieldBaseDTO.java | 1 + .../view}/dto/ColumnPermissionItem.java | 2 +- .../view}/dto/ColumnPermissions.java | 2 +- .../dto/DatasetRowPermissionsTreeItem.java | 1 + .../extensions/view}/dto/DynamicValueDTO.java | 2 +- .../view/factory/PluginsChartFactory.java | 10 +- .../view/filter/FilterTreeItem.java | 2 +- .../view/plugin/AbstractChartPlugin.java | 82 ++ .../view/template/PluginsChartTemplate.java | 46 - .../extensions/view/util/ChartDataUtil.java | 175 ++- .../extensions/view/util/FieldUtil.java | 2 +- .../dataease/extensions/view/util/Utils.java | 24 + 83 files changed, 501 insertions(+), 1406 deletions(-) delete mode 100644 core/core-backend/src/main/java/io/dataease/chart/charts/AbstractChartHandler.java rename core/core-backend/src/main/java/io/dataease/chart/charts/impl/{numberic => numeric}/GaugeHandler.java (93%) rename core/core-backend/src/main/java/io/dataease/chart/charts/impl/{numberic => numeric}/IndicatorHandler.java (52%) rename core/core-backend/src/main/java/io/dataease/chart/charts/impl/{numberic => numeric}/LiquidHandler.java (92%) rename core/core-backend/src/main/java/io/dataease/chart/charts/impl/{numberic/NumbericChartHandler.java => numeric/NumericalChartHandler.java} (90%) rename sdk/extensions/{extensions-view/src/main/java/io/dataease/extensions/view => extensions-datasource/src/main/java/io/dataease/extensions/datasource}/dto/DatasetTableFieldDTO.java (97%) rename sdk/{api/api-base/src/main/java/io/dataease/api/chart => extensions/extensions-view/src/main/java/io/dataease/extensions/view}/dto/AxisChartDataAntVDTO.java (84%) rename sdk/{api/api-base/src/main/java/io/dataease/api/chart => extensions/extensions-view/src/main/java/io/dataease/extensions/view}/dto/AxisChartDataDTO.java (73%) rename sdk/{api/api-base/src/main/java/io/dataease/api/chart => extensions/extensions-view/src/main/java/io/dataease/extensions/view}/dto/ChartQuotaDTO.java (87%) rename sdk/{api/api-base/src/main/java/io/dataease/api/chart => extensions/extensions-view/src/main/java/io/dataease/extensions/view}/dto/ColumnPermissionItem.java (96%) rename sdk/{api/api-base/src/main/java/io/dataease/api/chart => extensions/extensions-view/src/main/java/io/dataease/extensions/view}/dto/ColumnPermissions.java (79%) rename sdk/{api/api-base/src/main/java/io/dataease/api/chart => extensions/extensions-view/src/main/java/io/dataease/extensions/view}/dto/DynamicValueDTO.java (89%) create mode 100644 sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/plugin/AbstractChartPlugin.java delete mode 100644 sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/template/PluginsChartTemplate.java create mode 100644 sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/util/Utils.java diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/AbstractChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/AbstractChartHandler.java deleted file mode 100644 index c552e6a3bc..0000000000 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/AbstractChartHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.dataease.chart.charts; - -import io.dataease.datasource.provider.CalciteProvider; -import io.dataease.extensions.view.dto.*; -import io.dataease.extensions.view.model.SQLMeta; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.Map; - -public abstract class AbstractChartHandler { - public static Logger logger = LoggerFactory.getLogger(AbstractChartHandler.class); - - public abstract T formatAxis(ChartViewDTO view); - public abstract T customFilter(ChartViewDTO view, List filterList, K formatResult); - public abstract T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider); - public abstract ChartViewDTO buildChart(ChartViewDTO view, ChartCalcDataResult calcResult, AxisFormatResult formatResult, CustomFilterResult filterResult); -} diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/ChartHandlerManager.java b/core/core-backend/src/main/java/io/dataease/chart/charts/ChartHandlerManager.java index a59cd0a239..5009fd7a27 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/ChartHandlerManager.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/ChartHandlerManager.java @@ -1,6 +1,7 @@ package io.dataease.chart.charts; import io.dataease.chart.charts.impl.DefaultChartHandler; +import io.dataease.extensions.view.plugin.AbstractChartPlugin; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @@ -12,13 +13,13 @@ public class ChartHandlerManager { @Lazy @Resource private DefaultChartHandler defaultChartHandler; - private static final ConcurrentHashMap CHART_HANDLER_MAP = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap CHART_HANDLER_MAP = new ConcurrentHashMap<>(); - public void registerChartHandler(String render, String type, AbstractChartHandler chartHandler) { + public void registerChartHandler(String render, String type, AbstractChartPlugin chartHandler) { CHART_HANDLER_MAP.put(render + "-" + type, chartHandler); } - public AbstractChartHandler getChartHandler(String render, String type) { + public AbstractChartPlugin getChartHandler(String render, String type) { var handler = CHART_HANDLER_MAP.get(render + "-" + type); if (handler == null) { return defaultChartHandler; diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java index a15ee21d18..a648b96ef9 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java @@ -1,23 +1,24 @@ package io.dataease.chart.charts.impl; -import io.dataease.api.chart.dto.ColumnPermissionItem; -import io.dataease.chart.charts.AbstractChartHandler; import io.dataease.chart.charts.ChartHandlerManager; import io.dataease.chart.constant.ChartConstants; +import io.dataease.chart.manage.ChartDataManage; import io.dataease.chart.manage.ChartViewManege; import io.dataease.chart.utils.ChartDataBuild; import io.dataease.dataset.manage.DatasetTableFieldManage; import io.dataease.dataset.utils.SqlUtils; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.trans.Quota2SQLObj; import io.dataease.engine.utils.Utils; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; +import io.dataease.extensions.view.plugin.AbstractChartPlugin; import io.dataease.extensions.view.util.ChartDataUtil; import io.dataease.extensions.view.util.FieldUtil; import io.dataease.utils.BeanUtils; @@ -28,6 +29,8 @@ import lombok.Getter; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.math.BigDecimal; @@ -37,7 +40,8 @@ import java.util.*; import java.util.stream.Collectors; @Component -public class DefaultChartHandler extends AbstractChartHandler { +public class DefaultChartHandler extends AbstractChartPlugin { + public static Logger logger = LoggerFactory.getLogger(ChartDataManage.class); @Resource protected ChartHandlerManager chartHandlerManager; @Resource @@ -66,7 +70,7 @@ public class DefaultChartHandler extends AbstractChartHandler { } @Override - public T customFilter(ChartViewDTO view, List filterList, K formatResult) { + public T customFilter(ChartViewDTO view, List filterList, AxisFormatResult formatResult) { return (T) new CustomFilterResult(filterList, formatResult.getContext()); } @@ -82,7 +86,7 @@ public class DefaultChartHandler extends AbstractChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); for (Map.Entry next : dsMap.entrySet()) { @@ -94,8 +98,7 @@ public class DefaultChartHandler extends AbstractChartHandler { datasourceRequest.setDsList(dsMap); var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis); var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis); - var allFields = getAllChartFields(view); - filterResult.getContext().put("allFields", allFields); + var allFields = (List) filterResult.getContext().get("allFields"); Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); @@ -120,6 +123,7 @@ public class DefaultChartHandler extends AbstractChartHandler { @Override public ChartViewDTO buildChart(ChartViewDTO view, ChartCalcDataResult calcResult, AxisFormatResult formatResult, CustomFilterResult filterResult) { var desensitizationList = (Map) filterResult.getContext().get("desensitizationList"); + var allFields = (List) filterResult.getContext().get("allFields"); var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis); var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis); // 如果是表格导出查询 则在此处直接就可以返回 @@ -130,39 +134,25 @@ public class DefaultChartHandler extends AbstractChartHandler { view.setData(sourceInfo); return view; } - // 构建结果 - Map map = new TreeMap<>(); - // 图表组件可再扩展 + Map mapTableNormal = ChartDataBuild.transTableNormal(xAxis, yAxis, view, calcResult.getOriginData(), extStack, desensitizationList); var drillFilters = filterResult.getFilterList().stream().filter(f -> f.getFilterType() == 1).collect(Collectors.toList()); var isDrill = CollectionUtils.isNotEmpty(drillFilters); - ChartViewDTO chartViewDTO = uniteViewResult(calcResult.getQuerySql(), calcResult.getData(), mapTableNormal, view, isDrill, drillFilters, calcResult.getDynamicAssistFields(), calcResult.getAssistData()); - return chartViewDTO; + // 构建结果 + Map dataMap = new HashMap<>(); + dataMap.putAll(calcResult.getData()); + dataMap.putAll(mapTableNormal); + dataMap.put("sourceFields", allFields); + mergeAssistField(calcResult.getDynamicAssistFields(), calcResult.getAssistData()); + dataMap.put("dynamicAssistLines", calcResult.getDynamicAssistFields()); + view.setData(dataMap); + view.setSql(Base64.getEncoder().encodeToString(calcResult.getQuerySql().getBytes())); + view.setDrill(isDrill); + view.setDrillFilters(drillFilters); + return view; } - public ChartViewDTO uniteViewResult(String sql, Map chartData, Map tableData, ChartViewDTO view, Boolean isDrill, List drillFilters, List dynamicAssistFields, List assistData) { - - Map map = new HashMap<>(); - map.putAll(chartData); - map.putAll(tableData); - - // get all fields - List allFields = getAllChartFields(view); - map.put("sourceFields", allFields); - // merge assist result - mergeAssistField(dynamicAssistFields, assistData); - map.put("dynamicAssistLines", dynamicAssistFields); - - ChartViewDTO dto = new ChartViewDTO(); - BeanUtils.copyBean(dto, view); - dto.setData(map); - dto.setSql(java.util.Base64.getEncoder().encodeToString(sql.getBytes())); - dto.setDrill(isDrill); - dto.setDrillFilters(drillFilters); - return dto; - } - protected void mergeAssistField(List dynamicAssistFields, List assistData) { if (ObjectUtils.isEmpty(assistData)) { return; @@ -176,17 +166,6 @@ public class DefaultChartHandler extends AbstractChartHandler { } } - protected List getAllChartFields(ChartViewDTO view) { - // get all fields - Map> stringListMap = chartViewManege.listByDQ(view.getTableId(), view.getId(), view); - List dimensionList = stringListMap.get("dimensionList"); - List quotaList = stringListMap.get("quotaList"); - List allFields = new ArrayList<>(); - allFields.addAll(dimensionList); - allFields.addAll(quotaList); - return allFields.stream().filter(ele -> ele.getId() != -1L).collect(Collectors.toList()); - } - protected List getDynamicAssistFields(ChartViewDTO view) { List list = new ArrayList<>(); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java index c0ef0fce8f..f1be3aa2ba 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/YoyChartHandler.java @@ -3,12 +3,12 @@ package io.dataease.chart.charts.impl; import com.fasterxml.jackson.core.type.TypeReference; import io.dataease.dataset.utils.SqlUtils; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.ExtWhere2Str; import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.util.FieldUtil; @@ -25,7 +25,7 @@ import java.util.Map; */ public class YoyChartHandler extends DefaultChartHandler { @Override - public T customFilter(ChartViewDTO view, List filterList, K formatResult) { + public T customFilter(ChartViewDTO view, List filterList, AxisFormatResult formatResult) { var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis); String originFilterJson = (String) JsonUtil.toJSONString(filterList); // 如果设置了同环比的指标字段设置了过滤器,那就需要把该过滤器的时间往前回调一年 @@ -66,7 +66,7 @@ public class YoyChartHandler extends DefaultChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); for (Map.Entry next : dsMap.entrySet()) { diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/BarHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/BarHandler.java index ca660b029e..fc2af950ed 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/BarHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/BarHandler.java @@ -1,10 +1,10 @@ package io.dataease.chart.charts.impl.bar; import io.dataease.chart.charts.impl.YoyChartHandler; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import org.apache.commons.collections4.CollectionUtils; @@ -35,7 +35,7 @@ public class BarHandler extends YoyChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); for (Map.Entry next : dsMap.entrySet()) { diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/GroupBarHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/GroupBarHandler.java index 7547813156..72b5cb29d1 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/GroupBarHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/GroupBarHandler.java @@ -1,16 +1,16 @@ package io.dataease.chart.charts.impl.bar; import io.dataease.chart.utils.ChartDataBuild; -import io.dataease.engine.utils.Utils; import io.dataease.extensions.view.dto.*; import lombok.Getter; import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; -import java.util.stream.Stream; @Component public class GroupBarHandler extends BarHandler { @@ -32,7 +32,7 @@ public class GroupBarHandler extends BarHandler { } @Override - public T customFilter(ChartViewDTO view, List filterList, K formatResult) { + public T customFilter(ChartViewDTO view, List filterList, AxisFormatResult formatResult) { var result = super.customFilter(view, filterList, formatResult); List drillRequestList = view.getChartExtRequest().getDrill(); var drillFields = formatResult.getAxisMap().get(ChartAxis.drill); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/RangeBarHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/RangeBarHandler.java index 4a8943ce80..f972390cb9 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/RangeBarHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/RangeBarHandler.java @@ -2,7 +2,7 @@ package io.dataease.chart.charts.impl.bar; import io.dataease.chart.charts.impl.YoyChartHandler; import io.dataease.chart.utils.ChartDataBuild; -import io.dataease.datasource.provider.CalciteProvider; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import lombok.Getter; @@ -76,7 +76,7 @@ public class RangeBarHandler extends YoyChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { sqlMeta.setChartType(this.type); return super.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, provider); } diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java index 614a865cec..992d1ca991 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackBarHandler.java @@ -32,7 +32,7 @@ public class StackBarHandler extends BarHandler { return result; } @Override - public T customFilter(ChartViewDTO view, List filterList, K formatResult) { + public T customFilter(ChartViewDTO view, List filterList, AxisFormatResult formatResult) { var result = super.customFilter(view, filterList, formatResult); List drillRequestList = view.getChartExtRequest().getDrill(); var drillFields = formatResult.getAxisMap().get(ChartAxis.drill); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java index 1badf8d5a0..e1e7179b76 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/bar/StackGroupBarHandler.java @@ -38,7 +38,7 @@ public class StackGroupBarHandler extends BarHandler { } @Override - public T customFilter(ChartViewDTO view, List filterList, K formatResult) { + public T customFilter(ChartViewDTO view, List filterList, AxisFormatResult formatResult) { var result = super.customFilter(view, filterList, formatResult); List drillRequestList = view.getChartExtRequest().getDrill(); var drillFields = formatResult.getAxisMap().get(ChartAxis.drill); @@ -52,7 +52,6 @@ public class StackGroupBarHandler extends BarHandler { .stream() .filter(ele -> ele.getSource() != FieldSource.DRILL) .collect(Collectors.toList()); - List drillFilters = new ArrayList<>(); ArrayList fieldsToFilter = new ArrayList<>(); var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt); var extStack = formatResult.getAxisMap().get(ChartAxis.extStack); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/LineHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/LineHandler.java index 5b6bdea40a..567100aedf 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/LineHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/LineHandler.java @@ -2,10 +2,9 @@ package io.dataease.chart.charts.impl.line; import io.dataease.chart.charts.impl.YoyChartHandler; import io.dataease.chart.utils.ChartDataBuild; -import io.dataease.datasource.provider.CalciteProvider; -import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import lombok.Getter; @@ -49,14 +48,12 @@ public class LineHandler extends YoyChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); for (Map.Entry next : dsMap.entrySet()) { dsList.add(next.getValue().getType()); } - boolean needOrder = Utils.isNeedOrder(dsList); - boolean crossDs = Utils.isCrossDs(dsMap); var result = (T) super.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, provider); try { //如果有同环比过滤,应该用原始sql diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java index 2e1d9d3aa2..1c3cfae753 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/line/StackAreaHandler.java @@ -2,10 +2,10 @@ package io.dataease.chart.charts.impl.line; import io.dataease.chart.charts.impl.YoyChartHandler; import io.dataease.chart.utils.ChartDataBuild; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import lombok.Getter; @@ -52,7 +52,7 @@ public class StackAreaHandler extends YoyChartHandler { } @Override - public T customFilter(ChartViewDTO view, List filterList, K formatResult) { + public T customFilter(ChartViewDTO view, List filterList, AxisFormatResult formatResult) { var result = super.customFilter(view, filterList, formatResult); List drillRequestList = view.getChartExtRequest().getDrill(); var drillFields = formatResult.getAxisMap().get(ChartAxis.drill); @@ -81,7 +81,7 @@ public class StackAreaHandler extends YoyChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); for (Map.Entry next : dsMap.entrySet()) { diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java index e25c0939ff..b3e8bd74e0 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/map/SymbolicMapHandler.java @@ -1,16 +1,15 @@ package io.dataease.chart.charts.impl.map; -import io.dataease.api.chart.dto.ColumnPermissionItem; import io.dataease.chart.charts.impl.GroupChartHandler; import io.dataease.chart.utils.ChartDataBuild; import io.dataease.dataset.utils.SqlUtils; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.trans.Quota2SQLObj; import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.util.ChartDataUtil; @@ -21,11 +20,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Component; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Component @@ -54,7 +49,7 @@ public class SymbolicMapHandler extends GroupChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); for (Map.Entry next : dsMap.entrySet()) { @@ -66,8 +61,7 @@ public class SymbolicMapHandler extends GroupChartHandler { datasourceRequest.setDsList(dsMap); var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis); var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis); - var allFields = getAllChartFields(view); - filterResult.getContext().put("allFields", allFields); + var allFields = (List) filterResult.getContext().get("allFields"); Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); @@ -109,6 +103,7 @@ public class SymbolicMapHandler extends GroupChartHandler { @Override public ChartViewDTO buildChart(ChartViewDTO view, ChartCalcDataResult calcResult, AxisFormatResult formatResult, CustomFilterResult filterResult) { var desensitizationList = (Map) filterResult.getContext().get("desensitizationList"); + var allFields = (List) filterResult.getContext().get("allFields"); var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis); var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis); // 如果是表格导出查询 则在此处直接就可以返回 @@ -123,6 +118,17 @@ public class SymbolicMapHandler extends GroupChartHandler { Map mapTableNormal = calcResult.getData(); var drillFilters = filterResult.getFilterList().stream().filter(f -> f.getFilterType() == 1).collect(Collectors.toList()); var isDrill = CollectionUtils.isNotEmpty(drillFilters); - return uniteViewResult(calcResult.getQuerySql(), calcResult.getData(), mapTableNormal, view, isDrill, drillFilters, calcResult.getDynamicAssistFields(), calcResult.getAssistData()); + // 构建结果 + Map dataMap = new TreeMap<>(); + dataMap.putAll(calcResult.getData()); + dataMap.putAll(mapTableNormal); + dataMap.put("sourceFields", allFields); + mergeAssistField(calcResult.getDynamicAssistFields(), calcResult.getAssistData()); + dataMap.put("dynamicAssistLines", calcResult.getDynamicAssistFields()); + view.setData(dataMap); + view.setSql(Base64.getEncoder().encodeToString(calcResult.getQuerySql().getBytes())); + view.setDrill(isDrill); + view.setDrillFilters(drillFilters); + return view; } } diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/GroupMixHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/GroupMixHandler.java index 4fb3f256dd..aaec29e40a 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/GroupMixHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/GroupMixHandler.java @@ -1,6 +1,5 @@ package io.dataease.chart.charts.impl.mix; -import io.dataease.api.chart.dto.ColumnPermissionItem; import io.dataease.chart.utils.ChartDataBuild; import io.dataease.extensions.view.dto.*; import lombok.Getter; diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/MixHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/MixHandler.java index fd46a0f4c7..77fd535e53 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/MixHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/MixHandler.java @@ -1,12 +1,11 @@ package io.dataease.chart.charts.impl.mix; -import io.dataease.api.chart.dto.ColumnPermissionItem; import io.dataease.chart.charts.impl.YoyChartHandler; import io.dataease.chart.utils.ChartDataBuild; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import lombok.Getter; @@ -64,7 +63,7 @@ public class MixHandler extends YoyChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { //计算左轴, 包含 xAxis, yAxis var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); @@ -162,7 +161,6 @@ public class MixHandler extends YoyChartHandler { rightData.putAll(rightCalcResult.getData()); rightData.put("dynamicAssistLines", rightCalcResult.getDynamicAssistFields()); - var allFields = (List) filterResult.getContext().get("allFields"); // 构建结果 Map chartData = new TreeMap<>(); chartData.put("left", leftData); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/StackMixHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/StackMixHandler.java index 3dd319e2cd..fa9b1eea3f 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/StackMixHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/mix/StackMixHandler.java @@ -1,6 +1,5 @@ package io.dataease.chart.charts.impl.mix; -import io.dataease.api.chart.dto.ColumnPermissionItem; import io.dataease.chart.utils.ChartDataBuild; import io.dataease.extensions.view.dto.*; import lombok.Getter; diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/GaugeHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/GaugeHandler.java similarity index 93% rename from core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/GaugeHandler.java rename to core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/GaugeHandler.java index 71a65e7210..ca0ffee54d 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/GaugeHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/GaugeHandler.java @@ -1,4 +1,4 @@ -package io.dataease.chart.charts.impl.numberic; +package io.dataease.chart.charts.impl.numeric; import io.dataease.extensions.view.dto.AxisFormatResult; import io.dataease.extensions.view.dto.ChartAxis; @@ -15,7 +15,7 @@ import java.util.List; import java.util.Map; @Component -public class GaugeHandler extends NumbericChartHandler { +public class GaugeHandler extends NumericalChartHandler { @Getter private String type = "gauge"; @Resource diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/IndicatorHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/IndicatorHandler.java similarity index 52% rename from core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/IndicatorHandler.java rename to core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/IndicatorHandler.java index 2e1de08453..ad2312e88e 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/IndicatorHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/IndicatorHandler.java @@ -1,11 +1,10 @@ -package io.dataease.chart.charts.impl.numberic; +package io.dataease.chart.charts.impl.numeric; -import io.dataease.chart.charts.impl.DefaultChartHandler; import lombok.Getter; import org.springframework.stereotype.Component; @Component -public class IndicatorHandler extends NumbericChartHandler { +public class IndicatorHandler extends NumericalChartHandler { @Getter private String render = "custom"; @Getter diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/LiquidHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/LiquidHandler.java similarity index 92% rename from core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/LiquidHandler.java rename to core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/LiquidHandler.java index 8d4d2d36c0..a2fcbcaf6d 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/LiquidHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/LiquidHandler.java @@ -1,4 +1,4 @@ -package io.dataease.chart.charts.impl.numberic; +package io.dataease.chart.charts.impl.numeric; import io.dataease.extensions.view.dto.AxisFormatResult; import io.dataease.extensions.view.dto.ChartAxis; @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; @Component -public class LiquidHandler extends NumbericChartHandler { +public class LiquidHandler extends NumericalChartHandler { @Getter private String type = "liquid"; diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/NumbericChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/NumericalChartHandler.java similarity index 90% rename from core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/NumbericChartHandler.java rename to core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/NumericalChartHandler.java index 263cb7d5bb..0da1d30170 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numberic/NumbericChartHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/numeric/NumericalChartHandler.java @@ -1,15 +1,16 @@ -package io.dataease.chart.charts.impl.numberic; +package io.dataease.chart.charts.impl.numeric; import io.dataease.chart.charts.impl.DefaultChartHandler; import io.dataease.chart.utils.ChartDataBuild; import io.dataease.dataset.utils.SqlUtils; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Quota2SQLObj; import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.util.FieldUtil; @@ -22,9 +23,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -public class NumbericChartHandler extends DefaultChartHandler { +public class NumericalChartHandler extends DefaultChartHandler { @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); for (Map.Entry next : dsMap.entrySet()) { @@ -36,7 +37,7 @@ public class NumbericChartHandler extends DefaultChartHandler { datasourceRequest.setDsList(dsMap); var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis); var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis); - var allFields = getAllChartFields(view); + var allFields = (List) filterResult.getContext().get("allFields"); Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java index c79a1cc246..291e2ad6c3 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableInfoHandler.java @@ -3,12 +3,12 @@ package io.dataease.chart.charts.impl.table; import io.dataease.api.chart.dto.PageInfo; import io.dataease.chart.charts.impl.DefaultChartHandler; import io.dataease.dataset.utils.SqlUtils; -import io.dataease.datasource.provider.CalciteProvider; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Dimension2SQLObj; import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; +import io.dataease.extensions.datasource.provider.Provider; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.util.ChartDataUtil; @@ -35,7 +35,7 @@ public class TableInfoHandler extends DefaultChartHandler { } @Override - public T customFilter(ChartViewDTO view, List filterList, K formatResult) { + public T customFilter(ChartViewDTO view, List filterList, AxisFormatResult formatResult) { var chartExtRequest = view.getChartExtRequest(); Map mapAttr = view.getCustomAttr(); Map mapSize = (Map) mapAttr.get("basicStyle"); @@ -66,7 +66,7 @@ public class TableInfoHandler extends DefaultChartHandler { } @Override - public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, CalciteProvider provider) { + public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { var chartExtRequest = view.getChartExtRequest(); var dsMap = (Map) sqlMap.get("dsMap"); List dsList = new ArrayList<>(); @@ -78,7 +78,7 @@ public class TableInfoHandler extends DefaultChartHandler { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDsList(dsMap); var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis); - var allFields = getAllChartFields(view); + var allFields = (List) filterResult.getContext().get("allFields"); PageInfo pageInfo = new PageInfo(); pageInfo.setGoPage(chartExtRequest.getGoPage()); if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java index e4a6d01fdf..591f6b6c9f 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java @@ -1,15 +1,10 @@ package io.dataease.chart.manage; -import com.fasterxml.jackson.core.type.TypeReference; -import io.dataease.api.chart.dto.ColumnPermissionItem; -import io.dataease.api.chart.dto.PageInfo; import io.dataease.api.dataset.union.DatasetGroupInfoDTO; import io.dataease.api.permissions.auth.dto.BusiPerCheckDTO; import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO; -import io.dataease.chart.charts.AbstractChartHandler; import io.dataease.chart.charts.ChartHandlerManager; import io.dataease.chart.constant.ChartConstants; -import io.dataease.chart.utils.ChartDataBuild; import io.dataease.constant.AuthEnum; import io.dataease.dataset.manage.DatasetGroupManage; import io.dataease.dataset.manage.DatasetSQLManage; @@ -17,25 +12,25 @@ import io.dataease.dataset.manage.DatasetTableFieldManage; import io.dataease.dataset.manage.PermissionManage; import io.dataease.dataset.utils.SqlUtils; import io.dataease.datasource.provider.CalciteProvider; -import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.*; import io.dataease.engine.utils.SQLUtils; import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceRequest; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.factory.PluginsChartFactory; import io.dataease.extensions.view.filter.FilterTreeObj; import io.dataease.extensions.view.model.SQLMeta; -import io.dataease.extensions.view.template.PluginsChartTemplate; +import io.dataease.extensions.view.plugin.AbstractChartPlugin; +import io.dataease.extensions.view.util.FieldUtil; import io.dataease.i18n.Translator; import io.dataease.result.ResultCode; import io.dataease.system.manage.CorePermissionManage; import io.dataease.utils.AuthUtils; import io.dataease.utils.BeanUtils; -import io.dataease.utils.JsonUtil; import jakarta.annotation.Resource; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -46,14 +41,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static io.dataease.extensions.view.dto.ChartAxis.*; /** * @Author Junjun @@ -82,7 +71,7 @@ public class ChartDataManage { public static final String START_END_SEPARATOR = "_START_END_SPLIT"; - private static Logger logger = LoggerFactory.getLogger(ChartDataManage.class); + private static final Logger logger = LoggerFactory.getLogger(ChartDataManage.class); public ChartViewDTO calcData(ChartViewDTO view) throws Exception { ChartExtRequest chartExtRequest = view.getChartExtRequest(); @@ -97,8 +86,7 @@ public class ChartDataManage { chartExtRequest.setUser(AuthUtils.getUser().getUserId()); } - - //如果是excel导出 如果是从仪表板获取图表数据,则仪表板的查询模式,查询结果的数量,覆盖图表对应的属性 + //excel导出,如果是从仪表板获取图表数据,则仪表板的查询模式,查询结果的数量,覆盖图表对应的属性 if (view.getIsExcelExport()) { view.setResultMode(ChartConstants.VIEW_RESULT_MODE.CUSTOM); } else if (ChartConstants.VIEW_RESULT_MODE.CUSTOM.equals(chartExtRequest.getResultMode())) { @@ -106,32 +94,16 @@ public class ChartDataManage { view.setResultCount(chartExtRequest.getResultCount()); } - List viewFields = new ArrayList<>(view.getViewFields()); - final Map> extFieldsMap = new LinkedHashMap<>(); - if (ObjectUtils.isNotEmpty(viewFields)) { - viewFields.forEach(field -> { - String busiType = field.getBusiType(); - List list = extFieldsMap.containsKey(busiType) ? extFieldsMap.get(busiType) : new ArrayList<>(); - list.add(field); - extFieldsMap.put(field.getBusiType(), list); - }); - } - - // get all fields - List allFields = getAllChartFields(view); - ChartViewDTO chartViewDTO = null; - - if (ObjectUtils.isNotEmpty(view.getIsPlugin()) && view.getIsPlugin()) { - chartViewDTO = calcData1(view, chartExtRequest, allFields, viewFields); + AbstractChartPlugin chartHandler; + if (BooleanUtils.isTrue(view.getIsPlugin())) { + chartHandler = PluginsChartFactory.getInstance(view.getRender(), view.getType()); } else { - chartViewDTO = calcData(view, chartExtRequest, allFields, viewFields); + chartHandler = chartHandlerManager.getChartHandler(view.getRender(), view.getType()); + } + if (chartHandler == null) { + DEException.throwException(ResultCode.DATA_IS_WRONG.code(), Translator.get("i18n_chart_not_handler") + ": " + view.getRender() + "," + view.getType()); } - return chartViewDTO; - } - - public ChartViewDTO calcData(ChartViewDTO view, ChartExtRequest chartExtRequest, List allFields, List viewFields) throws Exception { - AbstractChartHandler chartHandler = chartHandlerManager.getChartHandler(view.getRender(), view.getType()); AxisFormatResult formatResult = chartHandler.formatAxis(view); var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis); var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis); @@ -149,6 +121,8 @@ public class ChartDataManage { DEException.throwException(Translator.get("i18n_no_datasource_permission")); } + List allFields = getAllChartFields(view); + formatResult.getContext().put("allFields", allFields); // column permission Map desensitizationList = new HashMap<>(); List columnPermissionFields = permissionManage.filterColumnPermissions(transFields(allFields), desensitizationList, table.getId(), chartExtRequest.getUser()); @@ -184,7 +158,7 @@ public class ChartDataManage { } boolean hasParameters = false; - List sqlVariables = datasetGroupManage.getSqlParams(Arrays.asList(view.getTableId())); + List sqlVariables = datasetGroupManage.getSqlParams(Collections.singletonList(view.getTableId())); if (CollectionUtils.isNotEmpty(sqlVariables)) { for (SqlVariableDetails parameter : Optional.ofNullable(request.getParameters()).orElse(new ArrayList<>())) { String parameterId = StringUtils.endsWith(parameter.getId(), START_END_SEPARATOR) ? parameter.getId().split(START_END_SEPARATOR)[0] : parameter.getId(); @@ -348,19 +322,11 @@ public class ChartDataManage { Map sqlMap = datasetSQLManage.getUnionSQLForEdit(table, chartExtRequest); String sql = (String) sqlMap.get("sql"); Map dsMap = (Map) sqlMap.get("dsMap"); - List dsList = new ArrayList<>(); - for (Map.Entry next : dsMap.entrySet()) { - dsList.add(next.getValue().getType()); - } - boolean needOrder = Utils.isNeedOrder(dsList); boolean crossDs = Utils.isCrossDs(dsMap); if (!crossDs) { sql = Utils.replaceSchemaAlias(sql, dsMap); } - List detailFieldList = new ArrayList<>(); - String detailFieldSql = null; - List detailData = new ArrayList<>(); if (ObjectUtils.isEmpty(dsMap)) { DEException.throwException(ResultCode.DATA_IS_WRONG.code(), Translator.get("i18n_datasource_delete")); } @@ -376,878 +342,23 @@ public class ChartDataManage { CustomWhere2Str.customWhere2sqlObj(sqlMeta, fieldCustomFilter, transFields(allFields), crossDs, dsMap); ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, transFields(allFields), crossDs, dsMap); WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, transFields(allFields), crossDs, dsMap); - Map dsTypeMap = dsMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getType())); + // TODO 數據源插件化之後放到插件裡面組裝SQL + if (BooleanUtils.isTrue(view.getIsPlugin())) { + List dsList = new ArrayList<>(); + for (Map.Entry next : dsMap.entrySet()) { + dsList.add(next.getValue().getType()); + } + boolean needOrder = Utils.isNeedOrder(dsList); + Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap); + Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, FieldUtil.transFields(allFields), crossDs, dsMap); + String querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); + filterResult.getContext().put("querySql", querySql); + } ChartCalcDataResult calcResult = chartHandler.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, calciteProvider); formatResult.getContext().put("desensitizationList", desensitizationList); return chartHandler.buildChart(view, calcResult, formatResult, filterResult); } - public ChartViewDTO calcData1(ChartViewDTO view, ChartExtRequest chartExtRequest, List allFields, List viewFields) throws Exception { - List xAxisBase = null; - List xAxis = null; - List xAxisExt = null; - List yAxis = null; - List extStack = null; - List extBubble = null; - List drill = null; - PluginsChartTemplate instance = null; - boolean skipBarRange = false; - boolean barRangeDate = false; - if (ObjectUtils.isNotEmpty(view.getIsPlugin()) && view.getIsPlugin()) { - instance = PluginsChartFactory.getInstance(view.getRender(), view.getType()); - String key = view.getRender() + "_" + view.getType(); - if (ObjectUtils.isEmpty(instance)) DEException.throwException(String.format("此视图插件【%s】不存在!", key)); - Map> axisMap = instance.formatChartAxis(view); - xAxisBase = axisMap.get("axisMap"); - xAxis = axisMap.get("xAxis"); - xAxisExt = axisMap.get("xAxisExt"); - yAxis = axisMap.get("yAxis"); - extStack = axisMap.get("extStack"); - extBubble = axisMap.get("extBubble"); - drill = axisMap.get("drill"); - viewFields = axisMap.get("viewFields"); - } else { - xAxisBase = new ArrayList<>(view.getXAxis()); - xAxis = new ArrayList<>(view.getXAxis()); - xAxisExt = new ArrayList<>(view.getXAxisExt()); - if (StringUtils.equalsIgnoreCase(view.getType(), "table-pivot") - || StringUtils.containsIgnoreCase(view.getType(), "group") - || ("antv".equalsIgnoreCase(view.getRender()) && "line".equalsIgnoreCase(view.getType())) - || StringUtils.equalsIgnoreCase(view.getType(), "flow-map") - || StringUtils.equalsIgnoreCase(view.getType(), "sankey") - || StringUtils.containsIgnoreCase(view.getType(), "chart-mix") - || StringUtils.equalsIgnoreCase(view.getType(), "symbolic-map") - ) { - xAxis.addAll(xAxisExt); - } - yAxis = new ArrayList<>(view.getYAxis()); - if (StringUtils.containsIgnoreCase(view.getType(), "chart-mix") - || StringUtils.equalsIgnoreCase(view.getType(), "bidirectional-bar") - || StringUtils.equalsIgnoreCase(view.getType(), "quadrant") - || StringUtils.containsIgnoreCase(view.getType(), "progress-bar")) { - List yAxisExt = new ArrayList<>(view.getYAxisExt()); - yAxis.addAll(yAxisExt); - } - if (StringUtils.equalsIgnoreCase(view.getRender(), "antv") && StringUtils.equalsAnyIgnoreCase(view.getType(), "gauge", "liquid")) { - List sizeField = getSizeField(view); - yAxis.addAll(sizeField); - } - - if (StringUtils.equalsIgnoreCase(view.getType(), "bar-range")) { //针对区间条形图进行处理 - yAxis.clear(); - if (CollectionUtils.isNotEmpty(view.getYAxis()) && CollectionUtils.isNotEmpty(view.getYAxisExt())) { - ChartViewFieldDTO axis1 = view.getYAxis().get(0); - ChartViewFieldDTO axis2 = view.getYAxisExt().get(0); - - if (StringUtils.equalsIgnoreCase(axis1.getGroupType(), "q") && StringUtils.equalsIgnoreCase(axis2.getGroupType(), "q")) { - yAxis.add(axis1); - yAxis.add(axis2); - } else if (StringUtils.equalsIgnoreCase(axis1.getGroupType(), "d") && axis1.getDeType() == 1 && StringUtils.equalsIgnoreCase(axis2.getGroupType(), "d") && axis2.getDeType() == 1) { - barRangeDate = true; - if (BooleanUtils.isTrue(view.getAggregate())) { - axis1.setSummary("min"); - axis2.setSummary("max"); - yAxis.add(axis1); - yAxis.add(axis2); - } else { - xAxis.add(axis1); - xAxis.add(axis2); - } - } else { - skipBarRange = true; - } - } else { - skipBarRange = true; - } - } - - extStack = new ArrayList<>(view.getExtStack()); - extBubble = new ArrayList<>(view.getExtBubble()); - if (ObjectUtils.isNotEmpty(view.getExtLabel()) && enableExtData(view.getType())) { - List extLabel = new ArrayList<>(view.getExtLabel()); - yAxis.addAll(extLabel); - } - if (ObjectUtils.isNotEmpty(view.getExtTooltip()) && enableExtData(view.getType())) { - List extTooltip = new ArrayList<>(view.getExtTooltip()); - yAxis.addAll(extTooltip); - } - drill = new ArrayList<>(view.getDrillFields()); - } - FilterTreeObj fieldCustomFilter = view.getCustomFilter(); - - // 以上是formatAxis内容 - - DatasetGroupInfoDTO table = datasetGroupManage.getDatasetGroupInfoDTO(view.getTableId(), null); - if (table == null) { - DEException.throwException(ResultCode.DATA_IS_WRONG.code(), Translator.get("i18n_no_ds")); - } - // check permission - BusiPerCheckDTO dto = new BusiPerCheckDTO(); - dto.setId(table.getId()); - dto.setAuthEnum(AuthEnum.READ); - boolean checked = corePermissionManage.checkAuth(dto); - if (!checked) { - DEException.throwException(Translator.get("i18n_no_datasource_permission")); - } - - // column permission - Map desensitizationList = new HashMap<>(); - List columnPermissionFields = permissionManage.filterColumnPermissions(transFields(allFields), desensitizationList, table.getId(), chartExtRequest.getUser()); - //将没有权限的列删掉 - List dataeaseNames = columnPermissionFields.stream().map(DatasetTableFieldDTO::getDataeaseName).collect(Collectors.toList()); - dataeaseNames.add("*"); - extStack = extStack.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - extBubble = extBubble.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - drill = drill.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - // row permission - List rowPermissionsTree = permissionManage.getRowPermissionsTree(table.getId(), chartExtRequest.getUser()); - - chartFilterTreeService.searchFieldAndSet(fieldCustomFilter); - - if (ObjectUtils.isEmpty(xAxis) && ObjectUtils.isEmpty(yAxis)) { - return emptyChartViewDTO(view); - } - - // 直连明细表分页 - Map mapAttr = view.getCustomAttr(); - Map mapSize = (Map) mapAttr.get("basicStyle"); - if (StringUtils.equalsIgnoreCase(view.getType(), "table-info") && table.getMode() == 0) { - if (StringUtils.equalsIgnoreCase((String) mapSize.get("tablePageMode"), "page") && !view.getIsExcelExport()) { - if (chartExtRequest.getGoPage() == null) { - chartExtRequest.setGoPage(1L); - } - if (chartExtRequest.getPageSize() == null) { - int pageSize = (int) mapSize.get("tablePageSize"); - if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { - chartExtRequest.setPageSize(Math.min(pageSize, view.getResultCount().longValue())); - } else { - chartExtRequest.setPageSize((long) pageSize); - } - } - } else { - if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { - chartExtRequest.setGoPage(1L); - chartExtRequest.setPageSize(view.getResultCount().longValue()); - } else if (!view.getIsExcelExport()) { - chartExtRequest.setGoPage(null); - chartExtRequest.setPageSize(null); - } - } - } else { - chartExtRequest.setGoPage(null); - chartExtRequest.setPageSize(null); - } - - if (ObjectUtils.isEmpty(instance)) - switch (view.getType()) { - case "label": - xAxis = xAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - xAxisBase = xAxisBase.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - yAxis = new ArrayList<>(); - if (ObjectUtils.isEmpty(xAxis)) { - return emptyChartViewDTO(view); - } - break; - case "indicator": - case "gauge": - case "liquid": - xAxis = new ArrayList<>(); - yAxis = yAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - if (ObjectUtils.isEmpty(yAxis)) { - return emptyChartViewDTO(view); - } - break; - case "table-info": - yAxis = new ArrayList<>(); - xAxis = xAxis.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - xAxisBase = xAxisBase.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - if (ObjectUtils.isEmpty(xAxis)) { - return emptyChartViewDTO(view); - } - break; - case "table-normal": - xAxis = xAxis.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - xAxisBase = xAxisBase.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - yAxis = yAxis.stream().filter(item -> dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - break; - default: - xAxis = xAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - xAxisBase = xAxisBase.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - yAxis = yAxis.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList()); - } - - // 过滤来自仪表板的条件 - List extFilterList = new ArrayList<>(); - //组件过滤条件 - if (ObjectUtils.isNotEmpty(chartExtRequest.getFilter())) { - for (ChartExtFilterDTO request : chartExtRequest.getFilter()) { - // 解析多个fieldId,fieldId是一个逗号分隔的字符串 - String fieldId = request.getFieldId(); - if (request.getIsTree() == null) { - request.setIsTree(false); - } - - boolean hasParameters = false; - List sqlVariables = datasetGroupManage.getSqlParams(Arrays.asList(view.getTableId())); - if (CollectionUtils.isNotEmpty(sqlVariables)) { - for (SqlVariableDetails parameter : Optional.ofNullable(request.getParameters()).orElse(new ArrayList<>())) { - String parameterId = StringUtils.endsWith(parameter.getId(), START_END_SEPARATOR) ? parameter.getId().split(START_END_SEPARATOR)[0] : parameter.getId(); - if (sqlVariables.stream().map(SqlVariableDetails::getId).collect(Collectors.toList()).contains(parameterId)) { - hasParameters = true; - } - } - } - - if (hasParameters) { - continue; - } - - if (StringUtils.isNotEmpty(fieldId)) { - List fieldIds = Arrays.stream(fieldId.split(",")).map(Long::valueOf).collect(Collectors.toList()); - - if (request.getIsTree()) { - ChartExtFilterDTO filterRequest = new ChartExtFilterDTO(); - BeanUtils.copyBean(filterRequest, request); - filterRequest.setDatasetTableFieldList(new ArrayList<>()); - filterRequest.setFilterType(0); - for (Long fId : fieldIds) { - DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(fId); - if (datasetTableField == null) { - continue; - } - if (Objects.equals(datasetTableField.getDatasetGroupId(), view.getTableId())) { - if (ObjectUtils.isNotEmpty(filterRequest.getViewIds())) { - if (filterRequest.getViewIds().contains(view.getId())) { - filterRequest.getDatasetTableFieldList().add(datasetTableField); - } - } else { - filterRequest.getDatasetTableFieldList().add(datasetTableField); - } - } - } - if (ObjectUtils.isNotEmpty(filterRequest.getDatasetTableFieldList())) { - extFilterList.add(filterRequest); - } - } else { - for (Long fId : fieldIds) { - ChartExtFilterDTO filterRequest = new ChartExtFilterDTO(); - BeanUtils.copyBean(filterRequest, request); - filterRequest.setFieldId(fId + ""); - filterRequest.setFilterType(0); - - DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(fId); - if (datasetTableField == null) { - continue; - } - filterRequest.setDatasetTableField(datasetTableField); - if (Objects.equals(datasetTableField.getDatasetGroupId(), view.getTableId())) { - if (ObjectUtils.isNotEmpty(filterRequest.getViewIds())) { - if (filterRequest.getViewIds().contains(view.getId())) { - extFilterList.add(filterRequest); - } - } else { - extFilterList.add(filterRequest); - } - } - } - } - } - } - } - - List filters = new ArrayList<>(); - // 联动条件 - if (ObjectUtils.isNotEmpty(chartExtRequest.getLinkageFilters())) { - filters.addAll(chartExtRequest.getLinkageFilters()); - } - - // 外部参数条件 - if (ObjectUtils.isNotEmpty(chartExtRequest.getOuterParamsFilters())) { - filters.addAll(chartExtRequest.getOuterParamsFilters()); - } - - //联动过滤条件和外部参数过滤条件全部加上 - if (ObjectUtils.isNotEmpty(filters)) { - for (ChartExtFilterDTO request : filters) { - DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(Long.valueOf(request.getFieldId())); - request.setDatasetTableField(datasetTableField); - request.setFilterType(2); - // 相同数据集 - if (Objects.equals(datasetTableField.getDatasetGroupId(), view.getTableId())) { - if (ObjectUtils.isNotEmpty(request.getViewIds())) { - if (request.getViewIds().contains(view.getId())) { - extFilterList.add(request); - } - } else { - extFilterList.add(request); - } - } - } - } - - // 下钻 - List drillFilters = new ArrayList<>(); - boolean isDrill = false; - List drillRequestList = chartExtRequest.getDrill(); - if (ObjectUtils.isNotEmpty(drillRequestList) && (drill.size() > drillRequestList.size())) { - ArrayList fieldsToFilter = new ArrayList<>(); - if (StringUtils.containsIgnoreCase(view.getType(), "group")) { - if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - if (ObjectUtils.isNotEmpty(xAxisExt) && ObjectUtils.isNotEmpty(extStack)) { - if (Objects.equals(drill.get(0).getId(), xAxisExt.get(0).getId())) { - fieldsToFilter.addAll(xAxisBase); - fieldsToFilter.addAll(extStack); - } - if (Objects.equals(drill.get(0).getId(), extStack.get(0).getId())) { - fieldsToFilter.addAll(xAxisBase); - fieldsToFilter.addAll(xAxisExt); - } - } - } else if (ObjectUtils.isNotEmpty(xAxisExt) && - Objects.equals(drill.get(0).getId(), xAxisExt.get(0).getId())) { - fieldsToFilter.addAll(xAxisBase); - } - } else if (StringUtils.containsIgnoreCase(view.getType(), "stack") && - ObjectUtils.isNotEmpty(extStack) && - Objects.equals(drill.get(0).getId(), extStack.get(0).getId())) { - fieldsToFilter.addAll(xAxisBase); - } - ChartDrillRequest head = drillRequestList.get(0); - Map dimValMap = new HashMap<>(); - head.getDimensionList().forEach(item -> dimValMap.put(item.getId(), item.getValue())); - Map fieldMap = Stream.of(xAxisBase, xAxisExt, extStack) - .flatMap(Collection::stream) - .collect(Collectors.toMap(ChartViewFieldDTO::getId, o -> o, ((p, n) -> p))); - for (int i = 0; i < drillRequestList.size(); i++) { - ChartDrillRequest request = drillRequestList.get(i); - ChartViewFieldDTO chartViewFieldDTO = drill.get(i); - for (ChartDimensionDTO requestDimension : request.getDimensionList()) { - // 将钻取值作为条件传递,将所有钻取字段作为xAxis并加上下一个钻取字段 - if (Objects.equals(requestDimension.getId(), chartViewFieldDTO.getId())) { - isDrill = true; - fieldsToFilter.add(chartViewFieldDTO); - dimValMap.put(requestDimension.getId(), requestDimension.getValue()); - if (!checkDrillExist(xAxis, extStack, requestDimension.getId(), view)) { - fieldMap.put(chartViewFieldDTO.getId(), chartViewFieldDTO); - xAxis.add(chartViewFieldDTO); - } - if (i == drillRequestList.size() - 1) { - ChartViewFieldDTO nextDrillField = drill.get(i + 1); - if (!checkDrillExist(xAxis, extStack, nextDrillField.getId(), view)) { - // get drill list first element's sort,then assign to nextDrillField - nextDrillField.setSort(getDrillSort(xAxis, drill.get(0))); - xAxis.add(nextDrillField); - } - } - } - } - } - for (int i = 0; i < fieldsToFilter.size(); i++) { - ChartViewFieldDTO tmpField = fieldsToFilter.get(i); - ChartExtFilterDTO tmpFilter = new ChartExtFilterDTO(); - DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(tmpField.getId()); - tmpFilter.setDatasetTableField(datasetTableField); - tmpFilter.setDateStyle(fieldMap.get(tmpField.getId()).getDateStyle()); - tmpFilter.setDatePattern(fieldMap.get(tmpField.getId()).getDatePattern()); - tmpFilter.setFieldId(String.valueOf(tmpField.getId())); - if (datasetTableField.getDeType() == 1) { - tmpFilter.setOperator("between"); - // 把value类似过滤组件处理,获得start time和end time - Map stringLongMap = Utils.parseDateTimeValue(dimValMap.get(tmpField.getId())); - tmpFilter.setValue(Arrays.asList(String.valueOf(stringLongMap.get("startTime")), String.valueOf(stringLongMap.get("endTime")))); - } else { - tmpFilter.setOperator("in"); - tmpFilter.setValue(Collections.singletonList(dimValMap.get(tmpField.getId()))); - } - tmpFilter.setFilterType(1); - extFilterList.add(tmpFilter); - drillFilters.add(tmpFilter); - } - } - - // 获取dsMap,union sql - Map sqlMap = datasetSQLManage.getUnionSQLForEdit(table, chartExtRequest); - String sql = (String) sqlMap.get("sql"); - Map dsMap = (Map) sqlMap.get("dsMap"); - List dsList = new ArrayList<>(); - for (Map.Entry next : dsMap.entrySet()) { - dsList.add(next.getValue().getType()); - } - boolean needOrder = Utils.isNeedOrder(dsList); - boolean crossDs = Utils.isCrossDs(dsMap); - if (!crossDs) { - sql = Utils.replaceSchemaAlias(sql, dsMap); - } - - // 调用数据源的calcite获得data - DatasourceRequest datasourceRequest = new DatasourceRequest(); - datasourceRequest.setDsList(dsMap); - - List data = new ArrayList<>(); - List yoyData = new ArrayList<>(); - - // senior dynamic assist - DatasourceRequest datasourceAssistRequest = new DatasourceRequest(); - datasourceAssistRequest.setDsList(dsMap); - List assistData = new ArrayList<>(); - List dynamicAssistFields = getDynamicAssistFields(view); - List assistFields = null; - if (StringUtils.containsIgnoreCase(view.getType(), "bar") - || StringUtils.containsIgnoreCase(view.getType(), "line") - || StringUtils.containsIgnoreCase(view.getType(), "area") - || StringUtils.containsIgnoreCase(view.getType(), "scatter") - || StringUtils.containsIgnoreCase(view.getType(), "mix") - ) { - assistFields = getAssistFields(dynamicAssistFields, yAxis); - } - - // 处理过滤条件中的单引号 - fieldCustomFilter = chartFilterTreeService.charReplace(fieldCustomFilter); - - extFilterList = extFilterList.stream().peek(ele -> { - if (ObjectUtils.isNotEmpty(ele.getValue())) { - List collect = ele.getValue().stream().map(SQLUtils::transKeyword).collect(Collectors.toList()); - ele.setValue(collect); - } - }).collect(Collectors.toList()); - - // extFilterList,如果参与计算同环比的日期字段有过滤,则多加1年,再请求一次,计算出同环比后,再和正确的过滤结果对比取交集 - boolean isYOY = false; - String json = (String) JsonUtil.toJSONString(extFilterList); - // 复制一个list,这个是最终正确过滤的结果 - List yoyFilterList = JsonUtil.parseList(json, new TypeReference<>() { - }); - for (ChartExtFilterDTO filterDTO : extFilterList) { - for (ChartViewFieldDTO chartViewFieldDTO : yAxis) { - ChartFieldCompareDTO compareCalc = chartViewFieldDTO.getCompareCalc(); - if (ObjectUtils.isEmpty(compareCalc)) { - continue; - } - if (StringUtils.isNotEmpty(compareCalc.getType()) - && !StringUtils.equalsIgnoreCase(compareCalc.getType(), "none")) { - if (Arrays.asList(ChartConstants.M_Y).contains(compareCalc.getType())) { - if (StringUtils.equalsIgnoreCase(compareCalc.getField() + "", filterDTO.getFieldId()) && filterDTO.getFilterType() == 0) { - // -1 year - try { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date(Long.parseLong(filterDTO.getValue().getFirst()))); - calendar.add(Calendar.YEAR, -1); - filterDTO.getValue().set(0, String.valueOf(calendar.getTime().getTime())); - isYOY = true; - } catch (Exception e) { - } - } - } - } - } - } - - String querySql = null; - String yoySql = null; - long totalPage = 0L; - long totalItems = 0L; - String totalPageSql = null; - PageInfo pageInfo = new PageInfo(); - pageInfo.setGoPage(chartExtRequest.getGoPage()); - if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { - if (StringUtils.equalsIgnoreCase(view.getType(), "table-info") && table.getMode() == 0) { - pageInfo.setPageSize(Math.min(view.getResultCount() - (chartExtRequest.getGoPage() - 1) * chartExtRequest.getPageSize(), chartExtRequest.getPageSize())); - } - } else { - pageInfo.setPageSize(chartExtRequest.getPageSize()); - } - - List detailFieldList = new ArrayList<>(); - String detailFieldSql = null; - List detailData = new ArrayList<>(); - //如果不是插件图表 走原生逻辑 - if (table.getMode() == 0) {// 直连 - if (ObjectUtils.isEmpty(dsMap)) { - DEException.throwException(ResultCode.DATA_IS_WRONG.code(), Translator.get("i18n_datasource_delete")); - } - for (Map.Entry next : dsMap.entrySet()) { - DatasourceSchemaDTO ds = next.getValue(); - if (StringUtils.isNotEmpty(ds.getStatus()) && "Error".equalsIgnoreCase(ds.getStatus())) { - DEException.throwException(ResultCode.DATA_IS_WRONG.code(), Translator.get("i18n_invalid_ds")); - } - } - - SQLMeta sqlMeta = new SQLMeta(); - Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs); - CustomWhere2Str.customWhere2sqlObj(sqlMeta, fieldCustomFilter, transFields(allFields), crossDs, dsMap); - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, transFields(allFields), crossDs, dsMap); - WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, transFields(allFields), crossDs, dsMap); - Map dsTypeMap = dsMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getType())); - if (ObjectUtils.isNotEmpty(instance)) { - return instance.calcResult(sqlMeta, xAxis, yAxis, transFields(allFields), crossDs, dsTypeMap); - } - - if (StringUtils.equalsAnyIgnoreCase(view.getType(), "indicator", "gauge", "liquid")) { - Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, transFields(allFields), crossDs, dsMap); - querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - if (isYOY) { - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, yoyFilterList, transFields(allFields), crossDs, dsMap); - yoySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - } - } else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - List xFields = new ArrayList<>(); - xFields.addAll(xAxis); - xFields.addAll(extStack); - Dimension2SQLObj.dimension2sqlObj(sqlMeta, xFields, transFields(allFields), crossDs, dsMap); - Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, transFields(allFields), crossDs, dsMap); - querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - if (isYOY) { - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, yoyFilterList, transFields(allFields), crossDs, dsMap); - yoySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - } - } else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) { - List yFields = new ArrayList<>(); - yFields.addAll(yAxis); - yFields.addAll(extBubble); - Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, transFields(allFields), crossDs, dsMap); - Quota2SQLObj.quota2sqlObj(sqlMeta, yFields, transFields(allFields), crossDs, dsMap); - querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - if (isYOY) { - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, yoyFilterList, transFields(allFields), crossDs, dsMap); - yoySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - } - } else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) { - Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, transFields(allFields), crossDs, dsMap); - String originSql = SQLProvider.createQuerySQL(sqlMeta, false, true, view);// 明细表强制加排序 - String limit = ((pageInfo.getGoPage() != null && pageInfo.getPageSize() != null) ? " LIMIT " + pageInfo.getPageSize() + " OFFSET " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() : ""); - querySql = originSql + limit; - totalPageSql = "SELECT COUNT(*) FROM (" + SQLProvider.createQuerySQL(sqlMeta, false, false, view) + ") COUNT_TEMP"; - } else if (StringUtils.containsIgnoreCase(view.getType(), "quadrant")) { - Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, transFields(allFields), crossDs, dsMap); - yAxis.addAll(extBubble); - if (ObjectUtils.isNotEmpty(view.getExtTooltip())) { - yAxis.addAll(new ArrayList<>(view.getExtTooltip())); - } - Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, transFields(allFields), crossDs, dsMap); - querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - if (isYOY) { - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, yoyFilterList, transFields(allFields), crossDs, dsMap); - yoySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - } - } else if (StringUtils.equalsIgnoreCase("bar-range", view.getType())) { - sqlMeta.setChartType(view.getType()); - Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, transFields(allFields), crossDs, dsMap); - Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, transFields(allFields), crossDs, dsMap); - querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - if (containDetailField(view) && ObjectUtils.isNotEmpty(viewFields)) { - detailFieldList.addAll(xAxis); - detailFieldList.addAll(viewFields); - - Dimension2SQLObj.dimension2sqlObj(sqlMeta, detailFieldList, transFields(allFields), crossDs, dsMap); - String originSql = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, view); - String limit = ((pageInfo.getGoPage() != null && pageInfo.getPageSize() != null) ? " LIMIT " + pageInfo.getPageSize() + " OFFSET " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() : ""); - detailFieldSql = originSql + limit; - } - if (isYOY) { - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, yoyFilterList, transFields(allFields), crossDs, dsMap); - yoySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - } - } else if (StringUtils.equalsIgnoreCase("symbolic-map", view.getType())) { - Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, transFields(allFields), crossDs, dsMap); - Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, transFields(allFields), crossDs, dsMap); - List yFields = new ArrayList<>(); - yFields.addAll(chartViewManege.transFieldDTO(Collections.singletonList(chartViewManege.createCountField(view.getTableId())))); - yFields.addAll(extBubble); - yAxis.addAll(yFields); - Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, transFields(allFields), crossDs, dsMap); - querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - List xAxisIds = xAxis.stream().map(ChartViewFieldDTO::getId).toList(); - viewFields.addAll(xAxis); - viewFields.addAll(allFields.stream().filter(field -> !xAxisIds.contains(field.getId())).toList()); - if (ObjectUtils.isNotEmpty(viewFields)) { - detailFieldList.addAll(viewFields); - SQLMeta sqlMeta1 = new SQLMeta(); - BeanUtils.copyBean(sqlMeta1, sqlMeta); - sqlMeta1.setYFields(new ArrayList<>()); - Dimension2SQLObj.dimension2sqlObj(sqlMeta1, detailFieldList, transFields(allFields), crossDs, dsMap); - String originSql = SQLProvider.createQuerySQL(sqlMeta1, false, needOrder, view); - String limit = ((pageInfo.getGoPage() != null && pageInfo.getPageSize() != null) ? " LIMIT " + pageInfo.getPageSize() + " OFFSET " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() : ""); - detailFieldSql = originSql + limit; - } - } else { - Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, transFields(allFields), crossDs, dsMap); - Quota2SQLObj.quota2sqlObj(sqlMeta, yAxis, transFields(allFields), crossDs, dsMap); - querySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - if (containDetailField(view) && ObjectUtils.isNotEmpty(viewFields)) { - detailFieldList.addAll(xAxis); - detailFieldList.addAll(viewFields); - - Dimension2SQLObj.dimension2sqlObj(sqlMeta, detailFieldList, transFields(allFields), crossDs, dsMap); - String originSql = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, view); - String limit = ((pageInfo.getGoPage() != null && pageInfo.getPageSize() != null) ? " LIMIT " + pageInfo.getPageSize() + " OFFSET " + (pageInfo.getGoPage() - 1) * pageInfo.getPageSize() : ""); - detailFieldSql = originSql + limit; - } - if (isYOY) { - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, yoyFilterList, transFields(allFields), crossDs, dsMap); - yoySql = SQLProvider.createQuerySQL(sqlMeta, true, needOrder, view); - } - } - - if (StringUtils.isNotEmpty(totalPageSql) && StringUtils.equalsIgnoreCase((String) mapSize.get("tablePageMode"), "page")) { - totalPageSql = SqlUtils.rebuildSQL(totalPageSql, sqlMeta, crossDs, dsMap); - datasourceRequest.setQuery(totalPageSql); - datasourceRequest.setTotalPageFlag(true); - List tmpData = (List) calciteProvider.fetchResultField(datasourceRequest).get("data"); - totalItems = ObjectUtils.isEmpty(tmpData) ? 0 : Long.valueOf(tmpData.get(0)[0]); - if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { - totalItems = totalItems <= view.getResultCount() ? totalItems : view.getResultCount(); - } - totalPage = (totalItems / pageInfo.getPageSize()) + (totalItems % pageInfo.getPageSize() > 0 ? 1 : 0); - } - - querySql = SqlUtils.rebuildSQL(querySql, sqlMeta, crossDs, dsMap); - datasourceRequest.setQuery(querySql); - logger.info("calcite chart sql: " + querySql); - - data = (List) calciteProvider.fetchResultField(datasourceRequest).get("data"); - if (ObjectUtils.isNotEmpty(assistFields)) { - datasourceAssistRequest.setQuery(assistSQL(datasourceRequest.getQuery(), assistFields)); - assistData = (List) calciteProvider.fetchResultField(datasourceAssistRequest).get("data"); - } - - if (StringUtils.isNotBlank(detailFieldSql)) { - detailFieldSql = SqlUtils.rebuildSQL(detailFieldSql, sqlMeta, crossDs, dsMap); - datasourceRequest.setQuery(detailFieldSql); - detailData = (List) calciteProvider.fetchResultField(datasourceRequest).get("data"); - } - - // 请求正确过滤的data - if (isYOY) { - yoySql = SqlUtils.rebuildSQL(yoySql, sqlMeta, crossDs, dsMap); - datasourceRequest.setQuery(yoySql); - logger.info("calcite chart sql real yoy: " + yoySql); - yoyData = (List) calciteProvider.fetchResultField(datasourceRequest).get("data"); - } - } - // 自定义排序 - if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - List list = new ArrayList<>(); - list.addAll(xAxis); - list.addAll(extStack); - data = resultCustomSort(list, data); - } else { - data = resultCustomSort(xAxis, data); - } - // 如果是表格导出查询 则在此处直接就可以返回 - if (view.getIsExcelExport()) { - Map sourceInfo = ChartDataBuild.transTableNormal(xAxis, yAxis, view, data, extStack, desensitizationList); - sourceInfo.put("sourceData", data); - view.setData(sourceInfo); - return view; - } - // 同比/环比计算,通过对比类型和数据设置,计算出对应指标的结果,然后替换结果data数组中的对应元素 - // 如果因维度变化(如时间字段缺失,时间字段的展示格式变化)导致无法计算结果的,则结果data数组中的对应元素全置为null - // 根据不同图表类型,获得需要替换的指标index array - for (int i = 0; i < yAxis.size(); i++) { - ChartViewFieldDTO chartViewFieldDTO = yAxis.get(i); - ChartFieldCompareDTO compareCalc = chartViewFieldDTO.getCompareCalc(); - if (ObjectUtils.isEmpty(compareCalc)) { - continue; - } - if (StringUtils.isNotEmpty(compareCalc.getType()) - && !StringUtils.equalsIgnoreCase(compareCalc.getType(), "none")) { - Long compareFieldId = compareCalc.getField();// 选中字段 - // 计算指标对应的下标 - int dataIndex = 0;// 数据字段下标 - if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - dataIndex = xAxis.size() + extStack.size() + i; - } else { - dataIndex = xAxis.size() + i; - } - if (Arrays.asList(ChartConstants.M_Y).contains(compareCalc.getType())) { - String resultData = compareCalc.getResultData();// 数据设置 - // 获取选中字段以及下标 - List checkedField = new ArrayList<>(xAxis); - if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - checkedField.addAll(extStack); - } - int timeIndex = 0;// 时间字段下标 - ChartViewFieldDTO timeField = null; - for (int j = 0; j < checkedField.size(); j++) { - if (Objects.equals(checkedField.get(j).getId(), compareFieldId)) { - timeIndex = j; - timeField = checkedField.get(j); - } - } - // 无选中字段,或者选中字段已经不在维度list中,或者选中字段日期格式不符合对比类型的,直接将对应数据置为null - if (ObjectUtils.isEmpty(timeField) || !checkCalcType(timeField.getDateStyle(), compareCalc.getType())) { - // set null - for (String[] item : data) { - item[dataIndex] = null; - } - } else { - // 计算 同比/环比 - // 1,处理当期数据;2,根据type计算上一期数据;3,根据resultData计算结果 - Map currentMap = new LinkedHashMap<>(); - for (String[] item : data) { - String[] dimension = Arrays.copyOfRange(item, 0, checkedField.size()); - currentMap.put(StringUtils.join(dimension, "-"), item[dataIndex]); - } - - for (int index = 0; index < data.size(); index++) { - String[] item = data.get(index); - String cTime = item[timeIndex]; - String cValue = item[dataIndex]; - - // 获取计算后的时间,并且与所有维度拼接 - String lastTime = calcLastTime(cTime, compareCalc.getType(), timeField.getDateStyle(), timeField.getDatePattern()); - String[] dimension = Arrays.copyOfRange(item, 0, checkedField.size()); - dimension[timeIndex] = lastTime; - - String lastValue = currentMap.get(StringUtils.join(dimension, "-")); - if (StringUtils.isEmpty(cValue) || StringUtils.isEmpty(lastValue)) { - item[dataIndex] = null; - } else { - if (StringUtils.equalsIgnoreCase(resultData, "sub")) { - item[dataIndex] = new BigDecimal(cValue).subtract(new BigDecimal(lastValue)).toString(); - } else if (StringUtils.equalsIgnoreCase(resultData, "percent")) { - if (new BigDecimal(lastValue).compareTo(BigDecimal.ZERO) == 0) { - item[dataIndex] = null; - } else { - item[dataIndex] = new BigDecimal(cValue) - .divide(new BigDecimal(lastValue).abs(), 8, RoundingMode.HALF_UP) - .subtract(new BigDecimal(1)) - .setScale(8, RoundingMode.HALF_UP) - .toString(); - } - } - } - } - } - } else if (StringUtils.equalsIgnoreCase(compareCalc.getType(), "percent")) { - // 求和 - BigDecimal sum = new BigDecimal(0); - for (int index = 0; index < data.size(); index++) { - String[] item = data.get(index); - String cValue = item[dataIndex]; - if (StringUtils.isEmpty(cValue)) { - continue; - } - sum = sum.add(new BigDecimal(cValue)); - } - // 计算占比 - for (int index = 0; index < data.size(); index++) { - String[] item = data.get(index); - String cValue = item[dataIndex]; - if (StringUtils.isEmpty(cValue)) { - continue; - } - item[dataIndex] = new BigDecimal(cValue) - .divide(sum, 8, RoundingMode.HALF_UP) - .toString(); - } - } - } - } - - // 如果同环比有横轴日期过滤,过滤掉不要的数据 - if (isYOY) { - List resultData = new ArrayList<>(); - for (String[] res1 : data) { - StringBuilder x1 = new StringBuilder(); - for (int i = 0; i < xAxis.size(); i++) { - x1.append(res1[i]); - } - for (String[] res2 : yoyData) { - StringBuilder x2 = new StringBuilder(); - for (int i = 0; i < xAxis.size(); i++) { - x2.append(res2[i]); - } - if (StringUtils.equals(x1, x2)) { - resultData.add(res1); - break; - } - } - } - data.clear(); - data.addAll(resultData); - } - - // 构建结果 - Map map = new TreeMap<>(); - // 图表组件可再扩展 - Map mapChart = new HashMap<>(); - if (StringUtils.equalsIgnoreCase(view.getRender(), "echarts")) { - if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - mapChart = ChartDataBuild.transStackChartData(xAxis, yAxis, view, data, extStack, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) { - mapChart = ChartDataBuild.transScatterData(xAxis, yAxis, view, data, extBubble, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "radar")) { - mapChart = ChartDataBuild.transRadarChartData(xAxis, yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "indicator") - || StringUtils.containsIgnoreCase(view.getType(), "gauge") - || StringUtils.equalsIgnoreCase("liquid", view.getType())) { - mapChart = ChartDataBuild.transNormalChartData(xAxis, yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "chart-mix")) { - mapChart = ChartDataBuild.transMixChartData(xAxis, yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "label")) { - mapChart = ChartDataBuild.transLabelChartData(xAxis, yAxis, view, data, isDrill); - } else { - mapChart = ChartDataBuild.transChartData(xAxis, yAxis, view, data, isDrill); - } - } else if (StringUtils.equalsIgnoreCase(view.getRender(), "antv")) { - if (StringUtils.equalsAnyIgnoreCase(view.getType(), "bar-group", "line")) { - mapChart = ChartDataBuild.transBaseGroupDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill); - } else if (StringUtils.equalsIgnoreCase(view.getType(), "bar-group-stack")) { - mapChart = ChartDataBuild.transGroupStackDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, extStack, data, view, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "bar-stack")) { - mapChart = ChartDataBuild.transStackChartDataAntV(xAxis, yAxis, view, data, extStack, isDrill); - } else if (StringUtils.equalsAnyIgnoreCase(view.getType(), "line-stack", "area-stack")) { - mapChart = ChartDataBuild.transStackChartDataAntV(xAxis, yAxis, view, data, extStack, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) { - mapChart = ChartDataBuild.transScatterDataAntV(xAxis, yAxis, view, data, extBubble, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "radar")) { - mapChart = ChartDataBuild.transRadarChartDataAntV(xAxis, yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "indicator") - || StringUtils.containsIgnoreCase(view.getType(), "gauge") - || StringUtils.equalsIgnoreCase("liquid", view.getType())) { - mapChart = ChartDataBuild.transNormalChartData(xAxis, yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "bidirectional-bar") - || StringUtils.containsIgnoreCase(view.getType(), "progress-bar")) { - mapChart = ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, new ArrayList<>(), yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "chart-mix") && !StringUtils.containsIgnoreCase(view.getType(), "stack")) { - mapChart = ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "chart-mix") && StringUtils.containsIgnoreCase(view.getType(), "stack")) { - if (CollectionUtils.isNotEmpty(extStack)) { - mapChart = ChartDataBuild.transMixChartStackDataAntV(xAxisBase, xAxis, extStack, yAxis, view, data, isDrill); - } else { - //右轴还是走原逻辑 - mapChart = ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill); - } - } else if (StringUtils.containsIgnoreCase(view.getType(), "label")) { - mapChart = ChartDataBuild.transLabelChartData(xAxis, yAxis, view, data, isDrill); - } else if (StringUtils.containsIgnoreCase(view.getType(), "quadrant")) { - mapChart = ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, new ArrayList<>(), yAxis, view, data, isDrill); - } else if (StringUtils.equalsIgnoreCase(view.getType(), "bar-range")) { - mapChart = ChartDataBuild.transBarRangeDataAntV(skipBarRange, barRangeDate, xAxisBase, xAxis, yAxis, view, data, isDrill); - } else if (StringUtils.equalsIgnoreCase(view.getType(), "heat-map")) { - mapChart = ChartDataBuild.transHeatMapChartDataAntV(xAxisBase, xAxis, yAxis, view, data, isDrill); - } else { - mapChart = ChartDataBuild.transChartDataAntV(xAxis, yAxis, view, data, isDrill); - } - } else if (StringUtils.equalsIgnoreCase(view.getRender(), "custom")) { - if (StringUtils.containsIgnoreCase(view.getType(), "indicator")) { - mapChart = ChartDataBuild.transNormalChartData(xAxis, yAxis, view, data, isDrill); - } - } - // table组件,明细表,也用于导出数据 - Map mapTableNormal = null; - if (ObjectUtils.isNotEmpty(detailData)) { - mapTableNormal = ChartDataBuild.transTableNormalWithDetail(xAxis, yAxis, data, detailFieldList, detailData, desensitizationList); - } else { - mapTableNormal = ChartDataBuild.transTableNormal(xAxis, yAxis, view, data, extStack, desensitizationList); - } - ChartViewDTO chartViewDTO = uniteViewResult(datasourceRequest.getQuery(), mapChart, mapTableNormal, view, isDrill, drillFilters, dynamicAssistFields, assistData); - chartViewDTO.setTotalPage(totalPage); - chartViewDTO.setTotalItems(totalItems); - return chartViewDTO; - } - private List getSizeField(ChartViewDTO view) throws Exception { List list = new ArrayList<>(); Map customAttr = view.getCustomAttr(); @@ -1300,24 +411,6 @@ public class ChartDataManage { return dto; } - private boolean checkDrillExist(List xAxis, List extStack, Long fieldId, ChartViewDTO view) { - if (ObjectUtils.isNotEmpty(xAxis)) { - for (ChartViewFieldDTO x : xAxis) { - if (Objects.equals(x.getId(), fieldId)) { - return true; - } - } - } - if (StringUtils.containsIgnoreCase(view.getType(), "stack") && ObjectUtils.isNotEmpty(extStack)) { - for (ChartViewFieldDTO x : extStack) { - if (Objects.equals(x.getId(), fieldId)) { - return true; - } - } - } - return false; - } - private String getDrillSort(List xAxis, ChartViewFieldDTO field) { String res = ""; for (ChartViewFieldDTO f : xAxis) { @@ -1331,71 +424,6 @@ public class ChartDataManage { return res; } - private List getDynamicAssistFields(ChartViewDTO view) throws Exception { - List list = new ArrayList<>(); - - Map senior = view.getSenior(); - if (ObjectUtils.isEmpty(senior)) { - return list; - } - - ChartSeniorAssistCfgDTO assistLineCfg = JsonUtil.parseObject((String) JsonUtil.toJSONString(senior.get("assistLineCfg")), ChartSeniorAssistCfgDTO.class); - if (null == assistLineCfg || !assistLineCfg.isEnable()) { - return list; - } - List assistLines = assistLineCfg.getAssistLine(); - - if (ObjectUtils.isEmpty(assistLines)) { - return list; - } - - for (ChartSeniorAssistDTO dto : assistLines) { - if (StringUtils.equalsIgnoreCase(dto.getField(), "0")) { - continue; - } - Long fieldId = dto.getFieldId(); - String summary = dto.getSummary(); - if (ObjectUtils.isEmpty(fieldId) || StringUtils.isEmpty(summary)) { - continue; - } - - DatasetTableFieldDTO datasetTableFieldDTO = datasetTableFieldManage.selectById(fieldId); - - if (ObjectUtils.isEmpty(datasetTableFieldDTO)) { - continue; - } - list.add(dto); - } - return list; - } - - private List getAssistFields(List list, List yAxis) { - List res = new ArrayList<>(); - for (ChartSeniorAssistDTO dto : list) { - DatasetTableFieldDTO curField = dto.getCurField(); - ChartViewFieldDTO yField = null; - String alias = ""; - for (int i = 0; i < yAxis.size(); i++) { - ChartViewFieldDTO field = yAxis.get(i); - if (Objects.equals(field.getId(), curField.getId())) { - yField = field; - alias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i); - break; - } - } - if (ObjectUtils.isEmpty(yField)) { - continue; - } - - ChartViewFieldDTO chartViewFieldDTO = new ChartViewFieldDTO(); - BeanUtils.copyBean(chartViewFieldDTO, curField); - chartViewFieldDTO.setSummary(dto.getSummary()); - chartViewFieldDTO.setOriginName(alias);// yAxis的字段别名,就是查找的字段名 - res.add(chartViewFieldDTO); - } - return res; - } - private List transFields(List list) { return list.stream().map(ele -> { DatasetTableFieldDTO dto = new DatasetTableFieldDTO(); @@ -1404,25 +432,6 @@ public class ChartDataManage { }).collect(Collectors.toList()); } - public Boolean containDetailField(ChartViewDTO view) { - List detailFieldViewTypes = new ArrayList<>(); - detailFieldViewTypes.add("map"); - return detailFieldViewTypes.contains(view.getType()); - } - - public String assistSQL(String sql, List assistFields) { - StringBuilder stringBuilder = new StringBuilder(); - for (int i = 0; i < assistFields.size(); i++) { - ChartViewFieldDTO dto = assistFields.get(i); - if (i == (assistFields.size() - 1)) { - stringBuilder.append(dto.getSummary() + "(" + dto.getOriginName() + ")"); - } else { - stringBuilder.append(dto.getSummary() + "(" + dto.getOriginName() + "),"); - } - } - return "SELECT " + stringBuilder + " FROM (" + sql + ") tmp"; - } - // 对结果排序 public List resultCustomSort(List xAxis, List data) { List res = new ArrayList<>(data); @@ -1501,133 +510,6 @@ public class ChartDataManage { return res; } - private boolean checkCalcType(String dateStyle, String calcType) { - switch (dateStyle) { - case "y": - return StringUtils.equalsIgnoreCase(calcType, "year_mom"); - case "y_M": - return StringUtils.equalsIgnoreCase(calcType, "month_mom") - || StringUtils.equalsIgnoreCase(calcType, "year_yoy"); - case "y_M_d": - return StringUtils.equalsIgnoreCase(calcType, "day_mom") - || StringUtils.equalsIgnoreCase(calcType, "month_yoy") - || StringUtils.equalsIgnoreCase(calcType, "year_yoy"); - } - return false; - } - - private String calcLastTime(String cTime, String type, String dateStyle, String datePattern) { - try { - String lastTime = null; - Calendar calendar = Calendar.getInstance(); - if (StringUtils.equalsIgnoreCase(type, ChartConstants.YEAR_MOM)) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); - Date date = simpleDateFormat.parse(cTime); - calendar.setTime(date); - calendar.add(Calendar.YEAR, -1); - lastTime = simpleDateFormat.format(calendar.getTime()); - } else if (StringUtils.equalsIgnoreCase(type, ChartConstants.MONTH_MOM)) { - SimpleDateFormat simpleDateFormat = null; - if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { - simpleDateFormat = new SimpleDateFormat("yyyy/MM"); - } else { - simpleDateFormat = new SimpleDateFormat("yyyy-MM"); - } - Date date = simpleDateFormat.parse(cTime); - calendar.setTime(date); - calendar.add(Calendar.MONTH, -1); - lastTime = simpleDateFormat.format(calendar.getTime()); - } else if (StringUtils.equalsIgnoreCase(type, ChartConstants.YEAR_YOY)) { - SimpleDateFormat simpleDateFormat = null; - if (StringUtils.equalsIgnoreCase(dateStyle, "y_M")) { - if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { - simpleDateFormat = new SimpleDateFormat("yyyy/MM"); - } else { - simpleDateFormat = new SimpleDateFormat("yyyy-MM"); - } - } else if (StringUtils.equalsIgnoreCase(dateStyle, "y_M_d")) { - if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { - simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); - } else { - simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - } - } - Date date = simpleDateFormat.parse(cTime); - calendar.setTime(date); - calendar.add(Calendar.YEAR, -1); - lastTime = simpleDateFormat.format(calendar.getTime()); - } else if (StringUtils.equalsIgnoreCase(type, ChartConstants.DAY_MOM)) { - SimpleDateFormat simpleDateFormat = null; - if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { - simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); - } else { - simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - } - Date date = simpleDateFormat.parse(cTime); - calendar.setTime(date); - calendar.add(Calendar.DAY_OF_MONTH, -1); - lastTime = simpleDateFormat.format(calendar.getTime()); - } else if (StringUtils.equalsIgnoreCase(type, ChartConstants.MONTH_YOY)) { - SimpleDateFormat simpleDateFormat = null; - if (StringUtils.equalsIgnoreCase(dateStyle, "y_M")) { - if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { - simpleDateFormat = new SimpleDateFormat("yyyy/MM"); - } else { - simpleDateFormat = new SimpleDateFormat("yyyy-MM"); - } - } else if (StringUtils.equalsIgnoreCase(dateStyle, "y_M_d")) { - if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { - simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); - } else { - simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - } - } - Date date = simpleDateFormat.parse(cTime); - calendar.setTime(date); - calendar.add(Calendar.MONTH, -1); - lastTime = simpleDateFormat.format(calendar.getTime()); - } - return lastTime; - } catch (Exception e) { - return cTime; - } - } - - public ChartViewDTO uniteViewResult(String sql, Map chartData, Map tableData, ChartViewDTO view, Boolean isDrill, List drillFilters, List dynamicAssistFields, List assistData) { - - Map map = new HashMap<>(); - map.putAll(chartData); - map.putAll(tableData); - - // get all fields - List allFields = getAllChartFields(view); - map.put("sourceFields", allFields); - // merge assist result - mergeAssistField(dynamicAssistFields, assistData); - map.put("dynamicAssistLines", dynamicAssistFields); - - ChartViewDTO dto = new ChartViewDTO(); - BeanUtils.copyBean(dto, view); - dto.setData(map); - dto.setSql(java.util.Base64.getEncoder().encodeToString(sql.getBytes())); - dto.setDrill(isDrill); - dto.setDrillFilters(drillFilters); - return dto; - } - - private void mergeAssistField(List dynamicAssistFields, List assistData) { - if (ObjectUtils.isEmpty(assistData)) { - return; - } - String[] strings = assistData.get(0); - for (int i = 0; i < dynamicAssistFields.size(); i++) { - if (i < strings.length) { - ChartSeniorAssistDTO chartSeniorAssistDTO = dynamicAssistFields.get(i); - chartSeniorAssistDTO.setValue(strings[i]); - } - } - } - public List getFieldData(ChartViewDTO view, Long fieldId, String fieldType) throws Exception { ChartExtRequest requestList = view.getChartExtRequest(); List sqlData = sqlData(view, requestList, fieldId); @@ -1828,10 +710,6 @@ public class ChartDataManage { return data; } - private boolean enableExtData(String type) { - return StringUtils.containsAnyIgnoreCase(type, "bar", "line", "area", "pie", "radar", "map", "scatter", "funnel", "word-cloud", "waterfall"); - } - private List getAllChartFields(ChartViewDTO view) { // get all fields Map> stringListMap = chartViewManege.listByDQ(view.getTableId(), view.getId(), view); diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartFilterTreeService.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartFilterTreeService.java index a07279775a..e31a4de3fd 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartFilterTreeService.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartFilterTreeService.java @@ -1,10 +1,10 @@ package io.dataease.chart.manage; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.view.filter.FilterTreeItem; import io.dataease.extensions.view.filter.FilterTreeObj; import io.dataease.dataset.dao.auto.entity.CoreDatasetTableField; import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; import io.dataease.engine.utils.SQLUtils; import io.dataease.utils.BeanUtils; import jakarta.annotation.Resource; diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java index 0408db8c06..0b6aac79a8 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java @@ -3,7 +3,7 @@ package io.dataease.chart.manage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import io.dataease.api.chart.dto.*; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.filter.FilterTreeObj; import io.dataease.api.chart.vo.ViewSelectorVO; diff --git a/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java b/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java index 1a234691eb..b5db131c82 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java +++ b/core/core-backend/src/main/java/io/dataease/chart/utils/ChartDataBuild.java @@ -1,9 +1,7 @@ package io.dataease.chart.utils; import io.dataease.api.chart.dto.*; -import io.dataease.extensions.view.dto.ChartDimensionDTO; -import io.dataease.extensions.view.dto.ChartViewDTO; -import io.dataease.extensions.view.dto.ChartViewFieldDTO; +import io.dataease.extensions.view.dto.*; import io.dataease.i18n.Lang; import io.dataease.i18n.Translator; import io.dataease.utils.IDUtils; @@ -1383,7 +1381,7 @@ public class ChartDataBuild { axisChartDataDTO.setName(xField.toString()); List dimensionList = new ArrayList<>(); - List quotaList = new ArrayList<>(); + List quotaList = new ArrayList<>(); for (int j = 0; j < xAxis.size(); j++) { ChartDimensionDTO chartDimensionDTO = new ChartDimensionDTO(); diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java index 562f3f5b3f..2c222fa503 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java @@ -1,6 +1,5 @@ package io.dataease.dataset.manage; -import io.dataease.api.chart.dto.ColumnPermissionItem; import io.dataease.api.chart.dto.DeSortField; import io.dataease.api.dataset.dto.BaseTreeNodeDTO; import io.dataease.api.dataset.dto.EnumValueRequest; @@ -31,13 +30,11 @@ import io.dataease.engine.trans.*; import io.dataease.engine.utils.SQLUtils; import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; -import io.dataease.extensions.datasource.dto.DatasetTableDTO; -import io.dataease.extensions.datasource.dto.DatasourceRequest; -import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; -import io.dataease.extensions.datasource.dto.TableField; +import io.dataease.extensions.datasource.dto.*; import io.dataease.extensions.view.dto.ChartExtFilterDTO; import io.dataease.extensions.view.dto.ChartExtRequest; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; +import io.dataease.extensions.view.dto.ColumnPermissionItem; import io.dataease.extensions.view.dto.SqlVariableDetails; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.i18n.Translator; diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java index 3abbef8e48..2fb6c13528 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java @@ -20,8 +20,8 @@ import io.dataease.datasource.dao.auto.mapper.CoreDatasourceMapper; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.exception.DEException; import io.dataease.extensions.datasource.dto.DatasetTableDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceDTO; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; import io.dataease.extensions.view.dto.SqlVariableDetails; import io.dataease.i18n.Translator; import io.dataease.license.config.XpackInteract; diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java index 863bebaba1..c97b0c8701 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java @@ -1,6 +1,7 @@ package io.dataease.dataset.manage; import io.dataease.extensions.datasource.dto.DatasetTableDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.view.dto.ChartExtFilterDTO; import io.dataease.extensions.view.dto.ChartExtRequest; @@ -18,7 +19,6 @@ import io.dataease.dataset.utils.TableUtils; import io.dataease.datasource.dao.auto.entity.CoreDatasource; import io.dataease.datasource.dao.auto.mapper.CoreDatasourceMapper; import io.dataease.datasource.manage.EngineManage; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; import io.dataease.exception.DEException; diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java index d597484d43..4be21d5759 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java @@ -1,7 +1,6 @@ package io.dataease.dataset.manage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import io.dataease.api.chart.dto.ColumnPermissionItem; import io.dataease.dataset.dao.auto.entity.CoreDatasetTableField; import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupMapper; import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper; @@ -11,7 +10,8 @@ import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.func.FunctionConstant; import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; +import io.dataease.extensions.view.dto.ColumnPermissionItem; import io.dataease.extensions.view.model.SQLObj; import io.dataease.i18n.Translator; import io.dataease.utils.AuthUtils; diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/PermissionManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/PermissionManage.java index 32675a6289..0477ea743e 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/PermissionManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/PermissionManage.java @@ -2,8 +2,6 @@ package io.dataease.dataset.manage; import com.fasterxml.jackson.core.type.TypeReference; -import io.dataease.api.chart.dto.ColumnPermissionItem; -import io.dataease.api.chart.dto.ColumnPermissions; import io.dataease.api.permissions.dataset.api.ColumnPermissionsApi; import io.dataease.api.permissions.dataset.api.RowPermissionsApi; import io.dataease.api.permissions.dataset.dto.*; @@ -11,9 +9,11 @@ import io.dataease.api.permissions.user.vo.UserFormVO; import io.dataease.api.permissions.variable.dto.SysVariableValueDto; import io.dataease.api.permissions.variable.dto.SysVariableValueItem; import io.dataease.constant.ColumnPermissionConstants; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; +import io.dataease.extensions.view.dto.ColumnPermissionItem; +import io.dataease.extensions.view.dto.ColumnPermissions; import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeItem; import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; import io.dataease.utils.AuthUtils; import io.dataease.utils.JsonUtil; import jakarta.annotation.Resource; diff --git a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetDataServer.java b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetDataServer.java index 23eff7f023..3f28f8a20a 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetDataServer.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetDataServer.java @@ -7,7 +7,7 @@ import io.dataease.api.dataset.dto.PreviewSqlDTO; import io.dataease.api.dataset.union.DatasetGroupInfoDTO; import io.dataease.dataset.manage.DatasetDataManage; import io.dataease.extensions.datasource.dto.DatasetTableDTO; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.utils.LogUtil; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java index 1e3159bd4d..fbab37b117 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java @@ -6,7 +6,7 @@ import io.dataease.api.dataset.engine.SQLFunctionDTO; import io.dataease.api.dataset.engine.SQLFunctionsEnum; import io.dataease.dataset.manage.DatasetDataManage; import io.dataease.dataset.manage.DatasetTableFieldManage; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java index 5380f62202..93deca75d4 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java @@ -5,7 +5,7 @@ import io.dataease.extensions.view.filter.FilterTreeItem; import io.dataease.extensions.view.filter.FilterTreeObj; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.model.SQLObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.constant.SqlPlaceholderConstants; import io.dataease.engine.utils.Utils; diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java index ef5053a022..78e0228d48 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java @@ -4,7 +4,7 @@ import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.view.dto.ChartViewFieldDTO; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.model.SQLObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.DeTypeConstants; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java index 4c20971d48..0e9b96d1b9 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java @@ -4,7 +4,7 @@ import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.view.dto.ChartExtFilterDTO; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.model.SQLObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.constant.SqlPlaceholderConstants; import io.dataease.engine.utils.Utils; diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java index 57831ae409..0ce210f0fb 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java @@ -3,7 +3,7 @@ package io.dataease.engine.trans; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.model.SQLObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.DeTypeConstants; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java index c66b149161..7e99ab4ce5 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java @@ -4,7 +4,7 @@ import io.dataease.api.chart.dto.DeSortField; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.model.SQLObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.DeTypeConstants; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java index 7e4d14837e..fbeb62179b 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java @@ -4,7 +4,7 @@ import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.view.dto.ChartViewFieldDTO; import io.dataease.extensions.view.model.SQLMeta; import io.dataease.extensions.view.model.SQLObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.DeTypeConstants; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java index 60a14c3d9e..4ad2424618 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java @@ -6,7 +6,7 @@ import io.dataease.extensions.view.model.SQLObj; import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO; import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeItem; import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeObj; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.constant.SqlPlaceholderConstants; diff --git a/core/core-backend/src/main/java/io/dataease/engine/utils/Utils.java b/core/core-backend/src/main/java/io/dataease/engine/utils/Utils.java index 9cf4ea3924..97a1add85e 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/utils/Utils.java +++ b/core/core-backend/src/main/java/io/dataease/engine/utils/Utils.java @@ -5,8 +5,8 @@ import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.constant.SqlPlaceholderConstants; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; import io.dataease.extensions.view.model.SQLObj; import io.dataease.i18n.Translator; import org.apache.commons.lang3.ObjectUtils; diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkageMapper.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkageMapper.java index d409448d9c..9a0b05f6c4 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkageMapper.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkageMapper.java @@ -2,7 +2,7 @@ package io.dataease.visualization.dao.ext.mapper; import io.dataease.api.visualization.dto.LinkageInfoDTO; import io.dataease.api.visualization.dto.VisualizationLinkageDTO; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.visualization.dao.auto.entity.VisualizationLinkage; import io.dataease.visualization.dao.auto.entity.VisualizationLinkageField; import org.apache.ibatis.annotations.Mapper; diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java index ad76d753e8..9ab5b0cf13 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java @@ -9,7 +9,7 @@ import io.dataease.api.visualization.response.VisualizationLinkJumpBaseResponse; import io.dataease.api.visualization.vo.VisualizationViewTableVO; import io.dataease.chart.dao.auto.entity.CoreChartView; import io.dataease.chart.dao.auto.mapper.CoreChartViewMapper; -import io.dataease.extensions.view.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.utils.AuthUtils; import io.dataease.utils.BeanUtils; import io.dataease.utils.IDUtils; diff --git a/core/core-backend/src/main/resources/i18n/core_en_US.properties b/core/core-backend/src/main/resources/i18n/core_en_US.properties index 0b4235dc34..3edec8805e 100644 --- a/core/core-backend/src/main/resources/i18n/core_en_US.properties +++ b/core/core-backend/src/main/resources/i18n/core_en_US.properties @@ -36,6 +36,7 @@ i18n_not_full=Full join not support. i18n_field_circular_ref=Field has Circular Reference +i18n_chart_not_handler=Cannot handle chart: i18n_chart_delete=Chart is not exists i18n_no_ds=Dataset is deleted or no permission i18n_datasource_delete=Datasource is deleted diff --git a/core/core-backend/src/main/resources/i18n/core_zh_CN.properties b/core/core-backend/src/main/resources/i18n/core_zh_CN.properties index c8da7ea921..1abc90ad56 100644 --- a/core/core-backend/src/main/resources/i18n/core_zh_CN.properties +++ b/core/core-backend/src/main/resources/i18n/core_zh_CN.properties @@ -47,6 +47,7 @@ i18n_not_full=\u5F53\u524D\u6570\u636E\u6E90\u4E0D\u652F\u6301\u5168\u8FDE\u63A5 i18n_field_circular_ref=\u5B57\u6BB5\u5B58\u5728\u5FAA\u73AF\u5F15\u7528 +i18n_chart_not_handler=\u65E0\u6CD5\u5904\u7406\u8BE5\u56FE\u8868\u7C7B\u578B i18n_chart_delete=\u56FE\u8868\u4E0D\u5B58\u5728 i18n_no_ds=\u6570\u636E\u96C6\u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u6743\u9650 i18n_datasource_delete=\u6570\u636E\u6E90\u4E0D\u5B58\u5728 diff --git a/core/core-backend/src/main/resources/i18n/core_zh_TW.properties b/core/core-backend/src/main/resources/i18n/core_zh_TW.properties index 9aefb5272c..575f1f21a1 100644 --- a/core/core-backend/src/main/resources/i18n/core_zh_TW.properties +++ b/core/core-backend/src/main/resources/i18n/core_zh_TW.properties @@ -17,7 +17,7 @@ i18n_menu.datasource=\u6578\u64DA\u6E90 i18n_menu.user=\u7528\u6236\u7BA1\u7406 i18n_menu.org=\u7D44\u7E54\u7BA1\u7406 i18n_menu.auth=\u6B0A\u9650\u914D\u7F6E -i18n_menu.sysVariable=\u7cfb\u7edf\u53d8\u91cf +i18n_menu.sysVariable=\u7CFB\u7EDF\u53D8\u91CF i18n_field_name_repeat=\u5177\u6709\u91CD\u8907\u7684\u6B04\u4F4D\u540D\u7A31\uFF1A i18n_pid_not_eq_id=\u79FB\u52D5\u76EE\u6A19\u4E0D\u80FD\u662F\u81EA\u5DF1\u6216\u5B50\u76EE\u9304 i18n_ds_name_exists=\u8A72\u5206\u7D44\u4E0B\u540D\u7A31\u91CD\u5FA9 @@ -33,10 +33,11 @@ i18n_table_duplicate=\u76F8\u540C\u7BC0\u9EDE\u9700\u91CD\u65B0\u62D6\u5165\u624 i18n_no_column_permission=\u6C92\u6709\u5217\u6B0A\u9650 i18n_fetch_error=SQL\u57F7\u884C\u5931\u6557\uFF0C\u8ACB\u6AA2\u67E5\u8868\u3001\u5B57\u6BB5\u3001\u95DC\u806F\u95DC\u7CFB\u7B49\u4FE1\u606F\u662F\u5426\u6B63\u78BA\u4E26\u91CD\u65B0\u7DE8\u8F2F\u3002 i18n_no_datasource_permission=\u65E0\u6570\u636E\u6E90\u8BBF\u95EE\u6743\u9650 -i18n_not_full=\u7576\u524d\u6578\u64da\u6e90\u4e0d\u652f\u6301\u5168\u9023\u63a5 +i18n_not_full=\u7576\u524D\u6578\u64DA\u6E90\u4E0D\u652F\u6301\u5168\u9023\u63A5 i18n_field_circular_ref=\u5B57\u6BB5\u5B58\u5728\u5FAA\u74B0\u5F15\u7528 +i18n_chart_not_handler=\u7121\u6CD5\u8655\u7406\u8A72\u5716\u8868\u985E\u578B i18n_chart_delete=\u8996\u5716\u4E0D\u5B58\u5728 i18n_no_ds=\u6578\u64DA\u96C6\u4E0D\u5B58\u5728\u6216\u6C92\u6709\u6B0A\u9650 i18n_datasource_delete=\u6578\u64DA\u6E90\u4E0D\u5B58\u5728 diff --git a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml index 07d6558cf8..deee3d6678 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml @@ -379,7 +379,7 @@ - + diff --git a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml index d3bdad20fd..552eafae01 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml @@ -53,7 +53,7 @@ + ofType="io.dataease.extensions.datasource.dto.DatasetTableFieldDTO"> diff --git a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkageMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkageMapper.xml index c9775897d9..585a32d560 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkageMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkageMapper.xml @@ -2,7 +2,7 @@ - + @@ -17,7 +17,7 @@ - diff --git a/core/core-frontend/src/views/chart/components/editor/chart-type/ChartType.vue b/core/core-frontend/src/views/chart/components/editor/chart-type/ChartType.vue index 9426e07466..62bb077b39 100644 --- a/core/core-frontend/src/views/chart/components/editor/chart-type/ChartType.vue +++ b/core/core-frontend/src/views/chart/components/editor/chart-type/ChartType.vue @@ -94,7 +94,16 @@ const groupActiveChange = category => { :class="props.type === chartInfo.value ? 'item-active' : ''" :data-id="'UserView&' + chartInfo.value" > - + +
{{ chartInfo.title }} diff --git a/core/core-frontend/src/views/chart/components/editor/index.vue b/core/core-frontend/src/views/chart/components/editor/index.vue index 2668478576..b8e2406b94 100644 --- a/core/core-frontend/src/views/chart/components/editor/index.vue +++ b/core/core-frontend/src/views/chart/components/editor/index.vue @@ -10,7 +10,9 @@ import { onBeforeMount, provide, h, - unref + unref, + getCurrentInstance, + onMounted } from 'vue' import Icon from '@/components/icon-custom/src/Icon.vue' import type { FormInstance, FormRules } from 'element-plus-secondary' @@ -559,7 +561,7 @@ const showAggregate = computed(() => { const addAxis = (e, axis: AxisType) => { recordSnapshotInfo('calcData') - const axisSpec = chartViewInstance.value.axisConfig[axis] + const axisSpec = chartViewInstance.value?.axisConfig[axis] if (!axisSpec) { return } @@ -761,9 +763,7 @@ const calcData = (view, resetDrill = false, updateQuery = '') => { }) } } -const updateChartDataTest = arg => { - updateChartData(arg) -} + const updateChartData = view => { curComponent.value['state'] = 'ready' calcData(view, true, 'updateQuery') @@ -780,6 +780,18 @@ const onAreaChange = val => { } const onTypeChange = (render, type) => { + const viewConf = getViewConfig(type) + console.log(view.value) + if (viewConf.isPlugin) { + view.value.plugin = { + isPlugin: true, + staticMap: viewConf.staticMap + } + view.value.isPlugin = true + } else { + view.value.isPlugin = false + delete view.value.plugin + } view.value.render = render view.value.type = type emitter.emit('chart-type-change') @@ -1568,6 +1580,16 @@ const deleteChartFieldItem = id => { fieldLoading.value = false }) } + +const callMethod = (method, ...args) => { + editorInstance?.setupState[method](...args) +} + +let editorInstance = null +onMounted(() => { + editorInstance = getCurrentInstance() + console.log(editorInstance) +})