From 9c3c579f0fa9185714fed9e5ad5076fd4b418cb9 Mon Sep 17 00:00:00 2001 From: jianneng-fit2cloud Date: Tue, 30 Jul 2024 09:53:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=9B=BE=E8=A1=A8-=E7=AC=A6=E5=8F=B7?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE):=20=E4=BF=AE=E5=A4=8D=E7=AC=A6=E5=8F=B7?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=AD=97=E6=AE=B5=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../charts/impl/map/SymbolicMapHandler.java | 34 +++++++++++++------ .../editor-style/components/LabelSelector.vue | 8 +++++ .../components/TooltipSelector.vue | 4 +++ 3 files changed, 36 insertions(+), 10 deletions(-) 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 5b280a844e..7641a5e66f 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 @@ -2,10 +2,14 @@ package io.dataease.chart.charts.impl.map; import io.dataease.chart.charts.impl.GroupChartHandler; import io.dataease.chart.utils.ChartDataBuild; +import io.dataease.dataset.manage.DatasetDataManage; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Dimension2SQLObj; +import io.dataease.engine.trans.Field2SQLObj; import io.dataease.engine.trans.Quota2SQLObj; +import io.dataease.engine.trans.Table2SQLObj; 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.model.SQLMeta; @@ -14,6 +18,7 @@ import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.util.ChartDataUtil; import io.dataease.extensions.view.util.FieldUtil; import io.dataease.utils.BeanUtils; +import jakarta.annotation.Resource; import lombok.Getter; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -24,6 +29,9 @@ import java.util.stream.Collectors; @Component public class SymbolicMapHandler extends GroupChartHandler { + @Resource + private DatasetDataManage datasetDataManage; + @Getter private String type = "symbolic-map"; @@ -80,16 +88,22 @@ public class SymbolicMapHandler extends GroupChartHandler { detailFields.addAll(xAxis); detailFields.addAll(allFields.stream().filter(field -> !xAxisIds.contains(field.getId())).toList()); if (ObjectUtils.isNotEmpty(detailFields)) { - Dimension2SQLObj.dimension2sqlObj(sqlMeta1, detailFields, FieldUtil.transFields(allFields), crossDs, dsMap); - // 为了不添加limit,要查所有数据,否则无法跟前面的数据对上,因为前面使用了group by - String defaultResultMode = view.getResultMode(); - view.setResultMode(""); - String originSql = SQLProvider.createQuerySQL(sqlMeta1, false, needOrder, view); - originSql = provider.rebuildSQL(originSql, sqlMeta, crossDs, dsMap); - datasourceRequest.setQuery(originSql); - logger.info("calcite detail field sql: " + querySql); - detailData = (List) provider.fetchResultField(datasourceRequest).get("data"); - view.setResultMode(defaultResultMode); + List allFieldsTmp = FieldUtil.transFields(detailFields); + datasetDataManage.buildFieldName(sqlMap, allFieldsTmp); + String sql = (String) sqlMap.get("sql"); + sql = Utils.replaceSchemaAlias(sql, dsMap); + SQLMeta sqlMeta2 = new SQLMeta(); + Table2SQLObj.table2sqlobj(sqlMeta2, null, "(" + sql + ")", crossDs); + Field2SQLObj.field2sqlObj(sqlMeta2, allFieldsTmp, allFieldsTmp, crossDs, dsMap); + String querySQL; + querySQL = SQLProvider.createQuerySQL(sqlMeta2, false, needOrder, false); + querySQL = provider.rebuildSQL(querySQL, sqlMeta2, crossDs, dsMap); + logger.info("calcite data preview sql: " + querySQL); + // 调用数据源的calcite获得data + DatasourceRequest datasourceRequest1 = new DatasourceRequest(); + datasourceRequest1.setQuery(querySQL); + datasourceRequest1.setDsList(dsMap); + detailData = (List) provider.fetchResultField(datasourceRequest1).get("data"); } //自定义排序 data = ChartDataUtil.resultCustomSort(xAxis, data); diff --git a/core/core-frontend/src/views/chart/components/editor/editor-style/components/LabelSelector.vue b/core/core-frontend/src/views/chart/components/editor/editor-style/components/LabelSelector.vue index cace66b637..ba2fdc43e1 100644 --- a/core/core-frontend/src/views/chart/components/editor/editor-style/components/LabelSelector.vue +++ b/core/core-frontend/src/views/chart/components/editor/editor-style/components/LabelSelector.vue @@ -10,6 +10,7 @@ import { fieldType } from '@/utils/attr' import { dvMainStoreWithOut } from '@/store/modules/data-visualization/dvMain' import { storeToRefs } from 'pinia' import Icon from '../../../../../../components/icon-custom/src/Icon.vue' +import { useEmitt } from '@/hooks/web/useEmitt' const { t } = useI18n() @@ -42,6 +43,12 @@ const dvMainStore = dvMainStoreWithOut() const toolTip = computed(() => { return props.themes === 'dark' ? 'ndark' : 'dark' }) +const changeDataset = () => { + if (showProperty('showFields')) { + state.labelForm.showFields = [] + emit('onLabelChange', { data: state.labelForm }, 'showFields') + } +} const { batchOptStatus } = storeToRefs(dvMainStore) watch( () => props.chart.customAttr.label, @@ -306,6 +313,7 @@ const defaultPlaceholder = computed(() => { }) onMounted(() => { init() + useEmitt({ name: 'dataset-change', callback: changeDataset }) }) const isGroupBar = computed(() => { return props.chart.type === 'bar-group' diff --git a/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue b/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue index a7c1ea9f21..2a54ab3a07 100644 --- a/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue +++ b/core/core-frontend/src/views/chart/components/editor/editor-style/components/TooltipSelector.vue @@ -94,6 +94,10 @@ const changeDataset = () => { }) } }) + if (showProperty('showFields')) { + state.tooltipForm.showFields = [] + emit('onTooltipChange', { data: state.tooltipForm }, 'showFields') + } } const AXIS_PROP: AxisType[] = ['yAxis', 'yAxisExt', 'extBubble']