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 3f30beb3be..61a453e170 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 @@ -11,16 +11,20 @@ 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.exception.DEException; import io.dataease.extensions.datasource.api.PluginManageApi; 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; import io.dataease.extensions.datasource.provider.Provider; +import io.dataease.extensions.datasource.vo.DatasourceConfiguration; +import io.dataease.extensions.datasource.vo.XpackPluginsDatasourceVO; import io.dataease.extensions.view.dto.*; import io.dataease.extensions.view.plugin.AbstractChartPlugin; import io.dataease.extensions.view.util.ChartDataUtil; import io.dataease.extensions.view.util.FieldUtil; +import io.dataease.license.utils.LicenseUtil; import io.dataease.utils.BeanUtils; import io.dataease.utils.JsonUtil; import jakarta.annotation.PostConstruct; @@ -364,14 +368,45 @@ public class DefaultChartHandler extends AbstractChartPlugin { return conditionField; } - protected String assistSQL(String sql, List assistFields) { + protected String assistSQL(String sql, List assistFields, Map dsMap) { + // get datasource prefix and suffix + String dsType = dsMap.entrySet().iterator().next().getValue().getType(); + String prefix = ""; + String suffix = ""; + if (Arrays.stream(DatasourceConfiguration.DatasourceType.values()).map(DatasourceConfiguration.DatasourceType::getType).toList().contains(dsType)) { + DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(dsType); + prefix = datasourceType.getPrefix(); + suffix = datasourceType.getSuffix(); + } else { + if (LicenseUtil.licenseValid()) { + List xpackPluginsDatasourceVOS = pluginManage.queryPluginDs(); + List list = xpackPluginsDatasourceVOS.stream().filter(ele -> StringUtils.equals(ele.getType(), dsType)).toList(); + if (ObjectUtils.isNotEmpty(list)) { + XpackPluginsDatasourceVO first = list.getFirst(); + prefix = first.getPrefix(); + suffix = first.getSuffix(); + } else { + DEException.throwException("当前数据源插件不存在"); + } + } + } + + boolean crossDs = Utils.isCrossDs(dsMap); 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() + ")"); + if (crossDs) { + if (i == (assistFields.size() - 1)) { + stringBuilder.append(dto.getSummary() + "(" + dto.getOriginName() + ")"); + } else { + stringBuilder.append(dto.getSummary() + "(" + dto.getOriginName() + "),"); + } } else { - stringBuilder.append(dto.getSummary() + "(" + dto.getOriginName() + "),"); + if (i == (assistFields.size() - 1)) { + stringBuilder.append(dto.getSummary() + "(" + prefix + dto.getOriginName() + suffix + ")"); + } else { + stringBuilder.append(dto.getSummary() + "(" + prefix + dto.getOriginName() + suffix + "),"); + } } } return "SELECT " + stringBuilder + " FROM (" + sql + ") tmp"; 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 6e6a8beed6..455a4aa1cb 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 @@ -53,7 +53,7 @@ public class BarHandler extends YoyChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(originSql, assistFields); + var assistSql = assistSQL(originSql, assistFields, dsMap); req.setQuery(assistSql); logger.debug("calcite assistSql sql: " + assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); 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 653ee6a928..08cd818232 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 @@ -64,7 +64,7 @@ public class LineHandler extends YoyChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(originSql, assistFields); + var assistSql = assistSQL(originSql, assistFields, dsMap); req.setQuery(assistSql); logger.debug("calcite assistSql sql: " + assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); 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 a2df5f4627..4a12101edf 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 @@ -100,7 +100,7 @@ public class StackAreaHandler extends YoyChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(originSql, assistFields); + var assistSql = assistSQL(originSql, assistFields, dsMap); req.setQuery(assistSql); logger.debug("calcite assist sql: " + assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); 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 32dac3a981..5884849412 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 @@ -92,7 +92,7 @@ public class MixHandler extends YoyChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(originSql, assistFields); + var assistSql = assistSQL(originSql, assistFields, dsMap); req.setQuery(assistSql); logger.debug("calcite assistSql sql: " + assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); @@ -144,7 +144,7 @@ public class MixHandler extends YoyChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(originSql, assistFields); + var assistSql = assistSQL(originSql, assistFields, dsMap); req.setQuery(assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); rightResult.setAssistData(assistData); 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 94a6985fc0..b2baf4c754 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 @@ -154,7 +154,7 @@ public class TableInfoHandler extends DefaultChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(querySql, assistFields); + var assistSql = assistSQL(querySql, assistFields, dsMap); req.setQuery(assistSql); logger.debug("calcite assistSql sql: " + assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableNormalHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableNormalHandler.java index bc48648ea3..27f79136c8 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableNormalHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TableNormalHandler.java @@ -34,7 +34,7 @@ public class TableNormalHandler extends YoyChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(originSql, assistFields); + var assistSql = assistSQL(originSql, assistFields, dsMap); req.setQuery(assistSql); logger.debug("calcite assistSql sql: " + assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TablePivotHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TablePivotHandler.java index afd07ab49d..b497ee6858 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TablePivotHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/table/TablePivotHandler.java @@ -33,7 +33,7 @@ public class TablePivotHandler extends GroupChartHandler { @Override public T calcChartResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, Map sqlMap, SQLMeta sqlMeta, Provider provider) { - T result = super.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, provider); + T result = super.calcChartResult(view, formatResult, filterResult, sqlMap, sqlMeta, provider); Map customCalc = calcCustomExpr(view, filterResult, sqlMap, sqlMeta, provider); result.getData().put("customCalc", customCalc); try { @@ -45,7 +45,7 @@ public class TablePivotHandler extends GroupChartHandler { if (CollectionUtils.isNotEmpty(assistFields)) { var req = new DatasourceRequest(); req.setDsList(dsMap); - var assistSql = assistSQL(originSql, assistFields); + var assistSql = assistSQL(originSql, assistFields, dsMap); req.setQuery(assistSql); logger.debug("calcite assistSql sql: " + assistSql); var assistData = (List) provider.fetchResultField(req).get("data"); @@ -98,7 +98,7 @@ public class TablePivotHandler extends GroupChartHandler { var tmpData = new ArrayList>(); dataMap.put("rowSubTotal", tmpData); for (int i = 0; i < rowAxis.size(); i++) { - if ( i == rowAxis.size() - 1) { + if (i == rowAxis.size() - 1) { break; } var xAxis = new ArrayList<>(colAxis); @@ -137,7 +137,7 @@ public class TablePivotHandler extends GroupChartHandler { var tmpData = new ArrayList>(); dataMap.put("colSubTotal", tmpData); for (int i = 0; i < colAxis.size(); i++) { - if ( i == colAxis.size() - 1) { + if (i == colAxis.size() - 1) { break; } var xAxis = new ArrayList<>(rowAxis); @@ -181,7 +181,7 @@ public class TablePivotHandler extends GroupChartHandler { var tmpData = new ArrayList>(); dataMap.put("colSubInRowTotal", tmpData); for (int i = 0; i < colAxis.size(); i++) { - if ( i == colAxis.size() - 1) { + if (i == colAxis.size() - 1) { break; } var xAxis = colAxis.subList(0, i + 1); @@ -202,7 +202,7 @@ public class TablePivotHandler extends GroupChartHandler { var tmpData = new ArrayList>(); dataMap.put("rowSubInColTotal", tmpData); for (int i = 0; i < rowAxis.size(); i++) { - if ( i == rowAxis.size() - 1) { + if (i == rowAxis.size() - 1) { break; } var xAxis = rowAxis.subList(0, i + 1); @@ -223,7 +223,7 @@ public class TablePivotHandler extends GroupChartHandler { var tmpData = new ArrayList>>(); dataMap.put("rowSubInColSub", tmpData); for (int i = 0; i < rowAxis.size(); i++) { - if ( i == rowAxis.size() - 1) { + if (i == rowAxis.size() - 1) { break; } var tmpList = new ArrayList>(); @@ -231,7 +231,7 @@ public class TablePivotHandler extends GroupChartHandler { var subRow = rowAxis.subList(0, i + 1); var xAxis = new ArrayList<>(subRow); for (int j = 0; j < colAxis.size(); j++) { - if ( j == colAxis.size() - 1) { + if (j == colAxis.size() - 1) { break; } var subCol = colAxis.subList(0, j + 1); @@ -284,8 +284,8 @@ public class TablePivotHandler extends GroupChartHandler { } private Tuple2> getData(SQLMeta sqlMeta, List xAxis, List yAxis, - List allFields, boolean crossDs, Map dsMap, - ChartViewDTO view, Provider provider, boolean needOrder) { + List allFields, boolean crossDs, Map dsMap, + ChartViewDTO view, Provider provider, boolean needOrder) { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDsList(dsMap); Dimension2SQLObj.dimension2sqlObj(sqlMeta, xAxis, FieldUtil.transFields(allFields), crossDs, dsMap, Utils.getParams(FieldUtil.transFields(allFields)), view.getCalParams(), pluginManage); @@ -298,6 +298,7 @@ public class TablePivotHandler extends GroupChartHandler { nullToBlank(data); return Tuples.of(querySql, data); } + private void nullToBlank(List data) { data.forEach(r -> { for (int i = 0; i < r.length; i++) { @@ -315,7 +316,7 @@ public class TablePivotHandler extends GroupChartHandler { if (!quotaIds.contains(totalCfg.getDataeaseName())) { continue; } - if (StringUtils.equalsIgnoreCase(totalCfg.getAggregation(), "CUSTOM")){ + if (StringUtils.equalsIgnoreCase(totalCfg.getAggregation(), "CUSTOM")) { var field = new ChartViewFieldDTO(); field.setDeType(DeTypeConstants.DE_FLOAT); BeanUtils.copyBean(field, totalCfg);