mirror of
https://github.com/dataease/dataease.git
synced 2025-02-25 20:42:55 +08:00
feat(视图): 辅助线支持动态值
This commit is contained in:
parent
15f6ccde14
commit
efac2b381a
@ -33,6 +33,7 @@ import io.dataease.plugins.common.base.mapper.ChartViewMapper;
|
|||||||
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
|
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
|
||||||
import io.dataease.plugins.common.base.mapper.PanelViewMapper;
|
import io.dataease.plugins.common.base.mapper.PanelViewMapper;
|
||||||
import io.dataease.plugins.common.constants.DatasetType;
|
import io.dataease.plugins.common.constants.DatasetType;
|
||||||
|
import io.dataease.plugins.common.constants.datasource.SQLConstants;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartFieldCompareDTO;
|
import io.dataease.plugins.common.dto.chart.ChartFieldCompareDTO;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
|
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
|
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
|
||||||
@ -659,7 +660,8 @@ public class ChartViewService {
|
|||||||
}
|
}
|
||||||
boolean hasParameters = false;
|
boolean hasParameters = false;
|
||||||
if (StringUtils.isNotEmpty(table.getSqlVariableDetails())) {
|
if (StringUtils.isNotEmpty(table.getSqlVariableDetails())) {
|
||||||
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {}.getType());
|
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {
|
||||||
|
}.getType());
|
||||||
for (String parameter : Optional.ofNullable(request.getParameters()).orElse(new ArrayList<>())) {
|
for (String parameter : Optional.ofNullable(request.getParameters()).orElse(new ArrayList<>())) {
|
||||||
if (sqlVariables.stream().map(SqlVariableDetails::getVariableName).collect(Collectors.toList()).contains(parameter)) {
|
if (sqlVariables.stream().map(SqlVariableDetails::getVariableName).collect(Collectors.toList()).contains(parameter)) {
|
||||||
hasParameters = true;
|
hasParameters = true;
|
||||||
@ -816,7 +818,7 @@ public class ChartViewService {
|
|||||||
|| StringUtils.containsIgnoreCase(view.getType(), "scatter")
|
|| StringUtils.containsIgnoreCase(view.getType(), "scatter")
|
||||||
|| StringUtils.containsIgnoreCase(view.getType(), "mix")
|
|| StringUtils.containsIgnoreCase(view.getType(), "mix")
|
||||||
) {
|
) {
|
||||||
assistFields = getAssistFields(dynamicAssistFields);
|
assistFields = getAssistFields(dynamicAssistFields, yAxis);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果是插件视图 走插件内部的逻辑
|
// 如果是插件视图 走插件内部的逻辑
|
||||||
@ -866,9 +868,6 @@ public class ChartViewService {
|
|||||||
} else {
|
} else {
|
||||||
datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, ds, view));
|
datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, ds, view));
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(assistFields)) {
|
|
||||||
datasourceAssistRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), assistFields, null, null, null, view, ds));
|
|
||||||
}
|
|
||||||
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) {
|
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) {
|
||||||
String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql();
|
String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql();
|
||||||
sql = handleVariable(sql, requestList, qp, table);
|
sql = handleVariable(sql, requestList, qp, table);
|
||||||
@ -883,9 +882,6 @@ public class ChartViewService {
|
|||||||
} else {
|
} else {
|
||||||
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(assistFields)) {
|
|
||||||
datasourceAssistRequest.setQuery(qp.getSQLSummaryAsTmp(sql, assistFields, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
|
||||||
}
|
|
||||||
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.CUSTOM.name())) {
|
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.CUSTOM.name())) {
|
||||||
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
|
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
|
||||||
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
|
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
|
||||||
@ -901,9 +897,6 @@ public class ChartViewService {
|
|||||||
} else {
|
} else {
|
||||||
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(assistFields)) {
|
|
||||||
datasourceAssistRequest.setQuery(qp.getSQLSummaryAsTmp(sql, assistFields, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
|
||||||
}
|
|
||||||
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.UNION.name())) {
|
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.UNION.name())) {
|
||||||
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
|
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
|
||||||
Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds);
|
Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds);
|
||||||
@ -920,12 +913,10 @@ public class ChartViewService {
|
|||||||
} else {
|
} else {
|
||||||
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(assistFields)) {
|
|
||||||
datasourceAssistRequest.setQuery(qp.getSQLSummaryAsTmp(sql, assistFields, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
data = datasourceProvider.getData(datasourceRequest);
|
data = datasourceProvider.getData(datasourceRequest);
|
||||||
if (CollectionUtils.isNotEmpty(assistFields)) {
|
if (CollectionUtils.isNotEmpty(assistFields)) {
|
||||||
|
datasourceAssistRequest.setQuery(assistSQL(datasourceRequest.getQuery(), assistFields));
|
||||||
assistData = datasourceProvider.getData(datasourceAssistRequest);
|
assistData = datasourceProvider.getData(datasourceAssistRequest);
|
||||||
}
|
}
|
||||||
} else if (table.getMode() == 1) {// 抽取
|
} else if (table.getMode() == 1) {// 抽取
|
||||||
@ -946,7 +937,7 @@ public class ChartViewService {
|
|||||||
datasourceRequest.setQuery(qp.getSQL(tableName, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, ds, view));
|
datasourceRequest.setQuery(qp.getSQL(tableName, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, ds, view));
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(assistFields)) {
|
if (CollectionUtils.isNotEmpty(assistFields)) {
|
||||||
datasourceAssistRequest.setQuery(qp.getSQLSummary(tableName, assistFields, fieldCustomFilter, rowPermissionsTree, extFilterList, view, ds));
|
datasourceAssistRequest.setQuery(assistSQL(datasourceRequest.getQuery(), assistFields));
|
||||||
assistData = datasourceProvider.getData(datasourceAssistRequest);
|
assistData = datasourceProvider.getData(datasourceAssistRequest);
|
||||||
}
|
}
|
||||||
// 仪表板有参数不使用缓存
|
// 仪表板有参数不使用缓存
|
||||||
@ -1143,6 +1134,19 @@ public class ChartViewService {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String assistSQL(String sql, List<ChartViewFieldDTO> 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 ChartViewDTO uniteViewResult(String sql, Map<String, Object> chartData, Map<String, Object> tabelData, ChartViewDTO view, Boolean isDrill, List<ChartExtFilterRequest> drillFilters, List<ChartSeniorAssistDTO> dynamicAssistFields, List<String[]> assistData) {
|
public ChartViewDTO uniteViewResult(String sql, Map<String, Object> chartData, Map<String, Object> tabelData, ChartViewDTO view, Boolean isDrill, List<ChartExtFilterRequest> drillFilters, List<ChartSeniorAssistDTO> dynamicAssistFields, List<String[]> assistData) {
|
||||||
|
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
@ -1563,7 +1567,8 @@ public class ChartViewService {
|
|||||||
|
|
||||||
private String handleVariable(String sql, ChartExtRequest requestList, QueryProvider qp, DataSetTableDTO table) throws Exception {
|
private String handleVariable(String sql, ChartExtRequest requestList, QueryProvider qp, DataSetTableDTO table) throws Exception {
|
||||||
|
|
||||||
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {}.getType());
|
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {
|
||||||
|
}.getType());
|
||||||
|
|
||||||
if (requestList != null && CollectionUtils.isNotEmpty(requestList.getFilter())) {
|
if (requestList != null && CollectionUtils.isNotEmpty(requestList.getFilter())) {
|
||||||
for (ChartExtFilterRequest chartExtFilterRequest : requestList.getFilter()) {
|
for (ChartExtFilterRequest chartExtFilterRequest : requestList.getFilter()) {
|
||||||
@ -1687,13 +1692,28 @@ public class ChartViewService {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ChartViewFieldDTO> getAssistFields(List<ChartSeniorAssistDTO> list) {
|
private List<ChartViewFieldDTO> getAssistFields(List<ChartSeniorAssistDTO> list, List<ChartViewFieldDTO> yAxis) {
|
||||||
List<ChartViewFieldDTO> res = new ArrayList<>();
|
List<ChartViewFieldDTO> res = new ArrayList<>();
|
||||||
for (ChartSeniorAssistDTO dto : list) {
|
for (ChartSeniorAssistDTO dto : list) {
|
||||||
DatasetTableField curField = dto.getCurField();
|
DatasetTableField curField = dto.getCurField();
|
||||||
|
ChartViewFieldDTO yField = null;
|
||||||
|
String alias = "";
|
||||||
|
for (int i = 0; i < yAxis.size(); i++) {
|
||||||
|
ChartViewFieldDTO field = yAxis.get(i);
|
||||||
|
if (StringUtils.equalsIgnoreCase(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();
|
ChartViewFieldDTO chartViewFieldDTO = new ChartViewFieldDTO();
|
||||||
BeanUtils.copyBean(chartViewFieldDTO, curField);
|
BeanUtils.copyBean(chartViewFieldDTO, curField);
|
||||||
chartViewFieldDTO.setSummary(dto.getSummary());
|
chartViewFieldDTO.setSummary(dto.getSummary());
|
||||||
|
chartViewFieldDTO.setOriginName(alias);// yAxis的字段别名,就是查找的字段名
|
||||||
res.add(chartViewFieldDTO);
|
res.add(chartViewFieldDTO);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
@ -803,7 +803,7 @@
|
|||||||
:param="param"
|
:param="param"
|
||||||
class="attr-selector"
|
class="attr-selector"
|
||||||
:chart="chart"
|
:chart="chart"
|
||||||
:quota-data="quotaData"
|
:quota-data="view.yaxis"
|
||||||
@onAssistLineChange="onAssistLineChange"
|
@onAssistLineChange="onAssistLineChange"
|
||||||
/>
|
/>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
|
Loading…
Reference in New Issue
Block a user