forked from github/dataease
feat: 过滤器枚举值排序
This commit is contained in:
parent
54d8d59c0a
commit
fbd0d39002
@ -34,6 +34,7 @@ import javax.annotation.Resource;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author gin
|
* @Author gin
|
||||||
@ -159,13 +160,14 @@ public class DataSetTableFieldController {
|
|||||||
public List<Object> multFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
|
public List<Object> multFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
|
||||||
List<Object> results = new ArrayList<>();
|
List<Object> results = new ArrayList<>();
|
||||||
for (String fieldId : multFieldValuesRequest.getFieldIds()) {
|
for (String fieldId : multFieldValuesRequest.getFieldIds()) {
|
||||||
List<Object> fieldValues = dataSetFieldService.fieldValues(fieldId, multFieldValuesRequest.getUserId(), true, false);
|
List<Object> fieldValues = dataSetFieldService.fieldValues(fieldId, multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, false);
|
||||||
if (CollectionUtil.isNotEmpty(fieldValues)) {
|
if (CollectionUtil.isNotEmpty(fieldValues)) {
|
||||||
results.addAll(fieldValues);
|
results.addAll(fieldValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
ArrayList<Object> list = results.stream().collect(
|
List<Object> list = results.stream().distinct().collect(Collectors.toList());
|
||||||
|
/*ArrayList<Object> list = results.stream().collect(
|
||||||
Collectors.collectingAndThen(
|
Collectors.collectingAndThen(
|
||||||
Collectors.toCollection(
|
Collectors.toCollection(
|
||||||
() -> new TreeSet<>(Comparator.comparing(t -> {
|
() -> new TreeSet<>(Comparator.comparing(t -> {
|
||||||
@ -173,7 +175,7 @@ public class DataSetTableFieldController {
|
|||||||
return "";
|
return "";
|
||||||
return t.toString();
|
return t.toString();
|
||||||
}))),
|
}))),
|
||||||
ArrayList::new));
|
ArrayList::new));*/
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,13 +187,13 @@ public class DataSetTableFieldController {
|
|||||||
DecodedJWT jwt = JWT.decode(linkToken);
|
DecodedJWT jwt = JWT.decode(linkToken);
|
||||||
Long userId = jwt.getClaim("userId").asLong();
|
Long userId = jwt.getClaim("userId").asLong();
|
||||||
multFieldValuesRequest.setUserId(userId);
|
multFieldValuesRequest.setUserId(userId);
|
||||||
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getUserId(), true, true,false);
|
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, true,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiIgnore
|
@ApiIgnore
|
||||||
@PostMapping("mappingFieldValues")
|
@PostMapping("mappingFieldValues")
|
||||||
public List<Object> mappingFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
|
public List<Object> mappingFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
|
||||||
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getUserId(), true, true, false);
|
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiIgnore
|
@ApiIgnore
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package io.dataease.controller.request.dataset;
|
package io.dataease.controller.request.dataset;
|
||||||
|
|
||||||
|
import io.dataease.dto.dataset.DeSortDTO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -9,4 +10,7 @@ import java.util.List;
|
|||||||
public class MultFieldValuesRequest {
|
public class MultFieldValuesRequest {
|
||||||
List<String> fieldIds = new ArrayList<>();
|
List<String> fieldIds = new ArrayList<>();
|
||||||
Long userId= null;
|
Long userId= null;
|
||||||
|
|
||||||
|
private DeSortDTO sort;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
18
backend/src/main/java/io/dataease/dto/dataset/DeSortDTO.java
Normal file
18
backend/src/main/java/io/dataease/dto/dataset/DeSortDTO.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package io.dataease.dto.dataset;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DeSortDTO implements Serializable {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String sort;
|
||||||
|
|
||||||
|
private List<String> custom;
|
||||||
|
}
|
@ -10,6 +10,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -83,6 +84,11 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -149,9 +155,71 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int i) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(DorisConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getDataeaseName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(DorisConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getDataeaseName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == 1) {
|
||||||
|
if (f.getDeType() == 2 || f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(DorisConstants.UNIX_TIMESTAMP, originField) + "*1000";
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == 0) {
|
||||||
|
if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 1) {
|
||||||
|
fieldName = String.format(DorisConstants.STR_TO_DATE, originField, DorisConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == 1) {
|
||||||
|
String cast = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
fieldName = String.format(DorisConstants.FROM_UNIXTIME, cast, DorisConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -10,6 +10,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -83,6 +84,11 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MysqlConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MysqlConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -149,9 +155,71 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int i) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(MysqlConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getDataeaseName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(MysqlConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getDataeaseName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == 1) {
|
||||||
|
if (f.getDeType() == 2 || f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(MysqlConstants.UNIX_TIMESTAMP, originField) + "*1000";
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == 0) {
|
||||||
|
if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(MysqlConstants.CAST, originField, MysqlConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(MysqlConstants.CAST, originField, MysqlConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 1) {
|
||||||
|
fieldName = String.format(MysqlConstants.STR_TO_DATE, originField, MysqlConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == 1) {
|
||||||
|
String cast = String.format(MysqlConstants.CAST, originField, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
fieldName = String.format(MysqlConstants.FROM_UNIXTIME, cast, MysqlConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(MysqlConstants.CAST, originField, MysqlConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(MysqlConstants.CAST, originField, MysqlConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -5,6 +5,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableField;
|
|||||||
import io.dataease.plugins.common.base.domain.Datasource;
|
import io.dataease.plugins.common.base.domain.Datasource;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -71,6 +72,16 @@ public class ApiProvider extends QueryProvider {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String s, List<DatasetTableField> list, boolean b, Datasource datasource, List<ChartFieldCustomFilterDTO> list1, List<DeSortField> list2) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String s, List<DatasetTableField> list, boolean b, List<ChartFieldCustomFilterDTO> list1, List<DeSortField> list2) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSQLAsTmp(String s, List<ChartViewFieldDTO> list, List<ChartViewFieldDTO> list1, List<ChartFieldCustomFilterDTO> list2, List<ChartExtFilterRequest> list3, ChartViewWithBLOBs chartViewWithBLOBs) {
|
public String getSQLAsTmp(String s, List<ChartViewFieldDTO> list, List<ChartViewFieldDTO> list1, List<ChartFieldCustomFilterDTO> list2, List<ChartExtFilterRequest> list3, ChartViewWithBLOBs chartViewWithBLOBs) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -12,6 +12,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -113,6 +114,11 @@ public class CKQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -179,9 +185,75 @@ public class CKQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int i) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(CKConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(CKConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
if (f.getType().equalsIgnoreCase("DATE")) {
|
||||||
|
fieldName = String.format(CKConstants.toInt32, String.format(CKConstants.toDateTime, originField)) + "*1000";
|
||||||
|
} else {
|
||||||
|
fieldName = String.format(CKConstants.toInt32, originField) + "*1000";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(CKConstants.toInt64, originField);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(CKConstants.toFloat64, originField);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
fieldName = String.format(CKConstants.toDateTime, originField);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
String cast = String.format(CKConstants.toFloat64, originField);
|
||||||
|
fieldName = String.format(CKConstants.toDateTime, cast);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(CKConstants.toInt64, originField);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -14,6 +14,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -84,6 +85,11 @@ public class Db2QueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(Db2Constants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(Db2Constants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -153,9 +159,74 @@ public class Db2QueryProvider extends QueryProvider {
|
|||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int i) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(Db2Constants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(Db2Constants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(Db2Constants.UNIX_TIMESTAMP, originField);
|
||||||
|
} else {
|
||||||
|
if(f.getType().equalsIgnoreCase("TIME")){
|
||||||
|
fieldName = String.format(Db2Constants.FORMAT_TIME, originField, Db2Constants.DEFAULT_DATE_FORMAT);
|
||||||
|
}else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(Db2Constants.CAST, originField, Db2Constants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(Db2Constants.CAST, originField, Db2Constants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
fieldName = String.format(Db2Constants.DATE_FORMAT, originField, Db2Constants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
String cast = String.format(Db2Constants.CAST, originField, Db2Constants.DEFAULT_INT_FORMAT);
|
||||||
|
fieldName = String.format(Db2Constants.FROM_UNIXTIME, cast, Db2Constants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(Db2Constants.CAST, originField, Db2Constants.DEFAULT_INT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -12,6 +12,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -116,6 +117,11 @@ public class EsQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -180,9 +186,71 @@ public class EsQueryProvider extends QueryProvider {
|
|||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int i) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == DeTypeConstants.DE_INT) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == DeTypeConstants.DE_TIME) {
|
||||||
|
originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(EsSqlLConstants.CAST, originField, "bigint");
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(EsSqlLConstants.CAST, originField, "bigint");
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(EsSqlLConstants.CAST, originField, "double");
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
fieldName = String.format(EsSqlLConstants.CAST, originField, "timestamp");
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
String cast = String.format(EsSqlLConstants.CAST, originField, "timestamp");
|
||||||
|
fieldName = String.format(EsSqlLConstants.DATETIME_FORMAT, cast, EsSqlLConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(EsSqlLConstants.CAST, originField, "bigint");
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -12,6 +12,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -77,6 +78,11 @@ public class HiveQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -139,9 +145,71 @@ public class HiveQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int i) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(HiveConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(HiveConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||||
|
if (f.getDeType() == 2 || f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(HiveConstants.UNIX_TIMESTAMP, originField) + "*1000";
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(HiveConstants.CAST, originField, HiveConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(HiveConstants.CAST, originField, HiveConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
fieldName = String.format(HiveConstants.STR_TO_DATE, originField, HiveConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
String cast = String.format(HiveConstants.CAST, originField, HiveConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
fieldName = String.format(HiveConstants.FROM_UNIXTIME, cast, HiveConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(HiveConstants.CAST, originField, HiveConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -12,6 +12,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -74,6 +75,11 @@ public class ImpalaQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(ImpalaConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(ImpalaConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -136,14 +142,76 @@ public class ImpalaQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(ImpalaConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(ImpalaConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, index);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) { //时间转数值
|
||||||
|
if (f.getDeType() == 2 || f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(ImpalaConstants.UNIX_TIMESTAMP, originField) + "*1000";
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) { //字符串转时间
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(ImpalaConstants.CAST, originField, ImpalaConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(ImpalaConstants.CAST, originField, ImpalaConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
fieldName = String.format(ImpalaConstants.DATE_FORMAT, originField, ImpalaConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) {//数值转时间
|
||||||
|
String cast = String.format(ImpalaConstants.CAST, originField, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
fieldName = String.format(ImpalaConstants.FROM_UNIXTIME, cast, ImpalaConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(ImpalaConstants.CAST, originField, ImpalaConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL(table, fields, isGroup, null, fieldCustomFilter) + " LIMIT " + realSize;
|
return createQuerySQL(table, fields, isGroup, null, fieldCustomFilter) + " LIMIT " + realSize;
|
||||||
|
@ -12,6 +12,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -86,6 +87,11 @@ public class MongoQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -125,14 +131,50 @@ public class MongoQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == DeTypeConstants.DE_INT) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == DeTypeConstants.DE_TIME) {
|
||||||
|
originField = String.format(MongoConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(MongoConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, index);
|
||||||
|
String fieldName = "";
|
||||||
|
fieldName = originField;
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL(table, fields, isGroup, null, fieldCustomFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
|
return createQuerySQL(table, fields, isGroup, null, fieldCustomFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
|
||||||
|
@ -11,6 +11,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -84,6 +85,60 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, index);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == 1) {
|
||||||
|
if (f.getDeType() == 2 || f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(MySQLConstants.UNIX_TIMESTAMP, originField) + "*1000";
|
||||||
|
} else {
|
||||||
|
fieldName = String.format(MySQLConstants.DATE_FORMAT, originField, MySQLConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == 0) {
|
||||||
|
if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(MySQLConstants.CAST, originField, MySQLConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(MySQLConstants.CAST, originField, MySQLConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 1) {
|
||||||
|
fieldName = String.format(MySQLConstants.STR_TO_DATE, originField, MySQLConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == 1) {
|
||||||
|
String cast = String.format(MySQLConstants.CAST, originField, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
fieldName = String.format(MySQLConstants.FROM_UNIXTIME, cast, MySQLConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(MySQLConstants.CAST, originField, MySQLConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -137,6 +192,8 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
|
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
|
||||||
ST st_sql = stg.getInstanceOf("previewSql");
|
ST st_sql = stg.getInstanceOf("previewSql");
|
||||||
st_sql.add("isGroup", isGroup);
|
st_sql.add("isGroup", isGroup);
|
||||||
@ -148,12 +205,25 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -13,6 +13,7 @@ import io.dataease.plugins.common.constants.SQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||||
@ -98,7 +99,7 @@ public class OracleQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
|
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
|
||||||
@ -107,6 +108,8 @@ public class OracleQueryProvider extends QueryProvider {
|
|||||||
setSchema(tableObj, ds);
|
setSchema(tableObj, ds);
|
||||||
List<SQLObj> xFields = xFields(table, fields);
|
List<SQLObj> xFields = xFields(table, fields);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
|
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
|
||||||
ST st_sql = stg.getInstanceOf("previewSql");
|
ST st_sql = stg.getInstanceOf("previewSql");
|
||||||
st_sql.add("isGroup", isGroup);
|
st_sql.add("isGroup", isGroup);
|
||||||
@ -116,9 +119,34 @@ public class OracleQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
public void setSchema(SQLObj tableObj, Datasource ds) {
|
public void setSchema(SQLObj tableObj, Datasource ds) {
|
||||||
if (ds != null && !tableObj.getTableName().startsWith("(") && !tableObj.getTableName().endsWith(")")) {
|
if (ds != null && !tableObj.getTableName().startsWith("(") && !tableObj.getTableName().endsWith(")")) {
|
||||||
String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema();
|
String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema();
|
||||||
@ -127,6 +155,49 @@ public class OracleQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(OracleConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(OracleConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(OracleConstants.ALIAS_FIX, String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, index));
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == 1) {
|
||||||
|
if (f.getDeType() == 2 || f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(OracleConstants.UNIX_TIMESTAMP, originField) + "*1000";
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == 0) {
|
||||||
|
if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(OracleConstants.CAST, originField, OracleConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 3) {
|
||||||
|
fieldName = String.format(OracleConstants.CAST, originField, OracleConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == 1) {
|
||||||
|
fieldName = String.format(OracleConstants.DATE_FORMAT, originField, OracleConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == 1) {
|
||||||
|
String cast = String.format(OracleConstants.CAST, originField, OracleConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
fieldName = String.format(OracleConstants.FROM_UNIXTIME, cast, OracleConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
} else if (f.getDeType() == 2) {
|
||||||
|
fieldName = String.format(OracleConstants.CAST, originField, OracleConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private List<SQLObj> xFields(String table, List<DatasetTableField> fields) {
|
private List<SQLObj> xFields(String table, List<DatasetTableField> fields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
|
||||||
|
@ -10,6 +10,7 @@ import io.dataease.plugins.common.constants.*;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||||
@ -99,6 +100,11 @@ public class PgQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -163,9 +169,70 @@ public class PgQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(PgConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(PgConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, index);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(PgConstants.UNIX_TIMESTAMP, originField);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, "timestamp");
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
String cast = String.format(PgConstants.CAST, originField, "bigint");
|
||||||
|
fieldName = String.format(PgConstants.FROM_UNIXTIME, cast);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -10,6 +10,7 @@ import io.dataease.plugins.common.constants.*;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||||
@ -107,6 +108,11 @@ public class RedshiftQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -171,9 +177,71 @@ public class RedshiftQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
|
||||||
|
String originField;
|
||||||
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(PgConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(PgConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, index);
|
||||||
|
String fieldName = "";
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(PgConstants.UNIX_TIMESTAMP, originField);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_FLOAT_FORMAT);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, "timestamp");
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) {
|
||||||
|
String cast = String.format(PgConstants.CAST, originField, "bigint");
|
||||||
|
fieldName = String.format(PgConstants.FROM_UNIXTIME, cast);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_INT_FORMAT);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
@ -13,6 +13,7 @@ import io.dataease.plugins.common.constants.SqlServerSQLConstants;
|
|||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
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;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
import io.dataease.plugins.common.dto.sqlObj.SQLObj;
|
||||||
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
|
||||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||||
@ -93,6 +94,21 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
@Override
|
@Override
|
||||||
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
|
||||||
|
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
|
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, sortFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DeSortField> sortFields) {
|
||||||
SQLObj tableObj = SQLObj.builder()
|
SQLObj tableObj = SQLObj.builder()
|
||||||
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
|
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
|
||||||
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
|
||||||
@ -157,12 +173,62 @@ public class SqlserverQueryProvider extends QueryProvider {
|
|||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
List<SQLObj> xOrders = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(sortFields)) {
|
||||||
|
int step = fields.size();
|
||||||
|
for (int i = step; i < (step + sortFields.size()); i++) {
|
||||||
|
DeSortField deSortField = sortFields.get(i - step);
|
||||||
|
SQLObj order = buildSortField(deSortField, tableObj, i);
|
||||||
|
xOrders.add(order);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(xOrders)) {
|
||||||
|
st_sql.add("orders", xOrders);
|
||||||
|
}
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
|
||||||
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter) {
|
String originField;
|
||||||
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter);
|
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
|
||||||
|
// 解析origin name中有关联的字段生成sql表达式
|
||||||
|
originField = calcFieldRegex(f.getOriginName(), tableObj);
|
||||||
|
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
|
||||||
|
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
} else {
|
||||||
|
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
|
||||||
|
}
|
||||||
|
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, index);
|
||||||
|
String fieldName;
|
||||||
|
// 处理横轴字段
|
||||||
|
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) { // 时间 转为 数值
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_INT_FORMAT, originField);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
|
||||||
|
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_TIME) { //字符串转时间
|
||||||
|
fieldName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (f.getDeType() == DeTypeConstants.DE_TIME) { // 数值转时间
|
||||||
|
String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originField + "/1000");
|
||||||
|
fieldName = String.format(SqlServerSQLConstants.FROM_UNIXTIME, cast);
|
||||||
|
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
|
||||||
|
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_INT_FORMAT, originField);
|
||||||
|
} else {
|
||||||
|
fieldName = originField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SQLObj result = SQLObj.builder().orderField(originField).orderAlias(originField).orderDirection(f.getOrderDirection()).build();
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,11 +1,17 @@
|
|||||||
package io.dataease.service.dataset;
|
package io.dataease.service.dataset;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import io.dataease.dto.dataset.DeSortDTO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface DataSetFieldService {
|
public interface DataSetFieldService {
|
||||||
|
|
||||||
List<Object> fieldValues(String fieldId, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception;
|
List<Object> fieldValues(String fieldId, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception;
|
||||||
|
|
||||||
List<Object> fieldValues(List<String> fieldIds, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception;
|
List<Object> fieldValues(String fieldId, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception;
|
||||||
|
|
||||||
|
List<Object> fieldValues(List<String> fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception;
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,16 @@ package io.dataease.service.dataset.impl.direct;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import io.dataease.commons.exception.DEException;
|
import io.dataease.commons.exception.DEException;
|
||||||
import io.dataease.commons.model.BaseTreeNode;
|
import io.dataease.commons.model.BaseTreeNode;
|
||||||
|
import io.dataease.commons.utils.BeanUtils;
|
||||||
import io.dataease.commons.utils.TreeUtils;
|
import io.dataease.commons.utils.TreeUtils;
|
||||||
|
import io.dataease.dto.dataset.DeSortDTO;
|
||||||
import io.dataease.plugins.common.base.domain.DatasetTable;
|
import io.dataease.plugins.common.base.domain.DatasetTable;
|
||||||
import io.dataease.plugins.common.base.domain.DatasetTableField;
|
import io.dataease.plugins.common.base.domain.DatasetTableField;
|
||||||
import io.dataease.plugins.common.base.domain.Datasource;
|
import io.dataease.plugins.common.base.domain.Datasource;
|
||||||
import io.dataease.commons.constants.ColumnPermissionConstants;
|
import io.dataease.commons.constants.ColumnPermissionConstants;
|
||||||
import io.dataease.i18n.Translator;
|
import io.dataease.i18n.Translator;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
|
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
|
||||||
|
import io.dataease.plugins.common.dto.datasource.DeSortField;
|
||||||
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
|
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
|
||||||
import io.dataease.plugins.datasource.provider.Provider;
|
import io.dataease.plugins.datasource.provider.Provider;
|
||||||
import io.dataease.plugins.datasource.query.QueryProvider;
|
import io.dataease.plugins.datasource.query.QueryProvider;
|
||||||
@ -48,11 +51,28 @@ public class DirectFieldService implements DataSetFieldService {
|
|||||||
public List<Object> fieldValues(String fieldId, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception {
|
public List<Object> fieldValues(String fieldId, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception {
|
||||||
List<String> filedIds = new ArrayList<>();
|
List<String> filedIds = new ArrayList<>();
|
||||||
filedIds.add(fieldId);
|
filedIds.add(fieldId);
|
||||||
return fieldValues(filedIds, userId, userPermissions, false, rowAndColumnMgm);
|
return fieldValues(filedIds, null, userId, userPermissions, false, rowAndColumnMgm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Object> fieldValues(List<String> fieldIds, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception {
|
public List<Object> fieldValues(String fieldId, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception {
|
||||||
|
List<String> filedIds = new ArrayList<>();
|
||||||
|
filedIds.add(fieldId);
|
||||||
|
return fieldValues(filedIds, sortDTO, userId, userPermissions, false, rowAndColumnMgm);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<DeSortField> buildSorts(List<DatasetTableField> allFields, DeSortDTO sortDTO) {
|
||||||
|
if (ObjectUtils.isEmpty(sortDTO) || StringUtils.isBlank(sortDTO.getId()) || StringUtils.isBlank(sortDTO.getSort()))
|
||||||
|
return null;
|
||||||
|
return allFields.stream().filter(field -> StringUtils.equals(sortDTO.getId(), field.getId())).map(field -> {
|
||||||
|
DeSortField deSortField = BeanUtils.copyBean(new DeSortField(), field);
|
||||||
|
deSortField.setOrderDirection(sortDTO.getSort());
|
||||||
|
return deSortField;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Object> fieldValues(List<String> fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception {
|
||||||
String fieldId = fieldIds.get(0);
|
String fieldId = fieldIds.get(0);
|
||||||
DatasetTableField field = dataSetTableFieldsService.selectByPrimaryKey(fieldId);
|
DatasetTableField field = dataSetTableFieldsService.selectByPrimaryKey(fieldId);
|
||||||
if (field == null || StringUtils.isEmpty(field.getTableId())) return null;
|
if (field == null || StringUtils.isEmpty(field.getTableId())) return null;
|
||||||
@ -62,6 +82,9 @@ public class DirectFieldService implements DataSetFieldService {
|
|||||||
|
|
||||||
DatasetTableField datasetTableField = DatasetTableField.builder().tableId(field.getTableId()).checked(Boolean.TRUE).build();
|
DatasetTableField datasetTableField = DatasetTableField.builder().tableId(field.getTableId()).checked(Boolean.TRUE).build();
|
||||||
List<DatasetTableField> fields = dataSetTableFieldsService.list(datasetTableField);
|
List<DatasetTableField> fields = dataSetTableFieldsService.list(datasetTableField);
|
||||||
|
|
||||||
|
List<DeSortField> deSortFields = buildSorts(fields, sortDTO);
|
||||||
|
|
||||||
final List<String> allTableFieldIds = fields.stream().map(DatasetTableField::getId).collect(Collectors.toList());
|
final List<String> allTableFieldIds = fields.stream().map(DatasetTableField::getId).collect(Collectors.toList());
|
||||||
boolean multi = fieldIds.stream().anyMatch(item -> !allTableFieldIds.contains(item));
|
boolean multi = fieldIds.stream().anyMatch(item -> !allTableFieldIds.contains(item));
|
||||||
if (multi && needMapping) {
|
if (multi && needMapping) {
|
||||||
@ -95,6 +118,8 @@ public class DirectFieldService implements DataSetFieldService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
Provider datasourceProvider = null;
|
Provider datasourceProvider = null;
|
||||||
if (datasetTable.getMode() == 0) {// 直连
|
if (datasetTable.getMode() == 0) {// 直连
|
||||||
@ -110,18 +135,18 @@ public class DirectFieldService implements DataSetFieldService {
|
|||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
|
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
|
||||||
datasourceRequest.setTable(dataTableInfoDTO.getTable());
|
datasourceRequest.setTable(dataTableInfoDTO.getTable());
|
||||||
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), permissionFields, true, ds, customFilter));
|
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), permissionFields, true, ds, customFilter, deSortFields));
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), permissionFields, true, customFilter));
|
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), permissionFields, true, customFilter, deSortFields));
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
||||||
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
|
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
|
||||||
List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
|
List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
|
||||||
String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds);
|
String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds);
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter));
|
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter, deSortFields));
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "union")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "union")) {
|
||||||
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
|
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
|
||||||
String sql = (String) dataSetTableService.getUnionSQLDatasource(dt, ds).get("sql");
|
String sql = (String) dataSetTableService.getUnionSQLDatasource(dt, ds).get("sql");
|
||||||
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter));
|
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter, deSortFields));
|
||||||
}
|
}
|
||||||
} else if (datasetTable.getMode() == 1) {// 抽取
|
} else if (datasetTable.getMode() == 1) {// 抽取
|
||||||
// 连接doris,构建doris数据源查询
|
// 连接doris,构建doris数据源查询
|
||||||
|
@ -6,8 +6,82 @@
|
|||||||
{{ item.name }}<i class="el-icon-arrow-down el-icon--right" />
|
{{ item.name }}<i class="el-icon-arrow-down el-icon--right" />
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-item icon="el-icon-delete" :command="beforeClickItem('remove')">
|
|
||||||
<span>{{ $t('chart.delete') }}</span>
|
<el-dropdown-item v-if="isSortWidget" :disabled="disabledSort" :command="beforeClickItem('none')">
|
||||||
|
<span class="de-sort-menu" :class="!disabledSort && (!sortNode || sortNode.sort === 'none') ? 'de-active-li': ''">{{ $t('chart.none') }}</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
|
||||||
|
<el-dropdown-item v-if="isSortWidget" :disabled="disabledSort" :command="beforeClickItem('asc')">
|
||||||
|
|
||||||
|
<span v-popover:popoverasc class="el-dropdown-link inner-dropdown-menu de-sort-menu" :class="!disabledSort && sortNode.sort === 'asc' ? 'de-active-li': ''">
|
||||||
|
<span>
|
||||||
|
<span>{{ $t('chart.asc') }}</span>
|
||||||
|
</span>
|
||||||
|
<i class="el-icon-arrow-right el-icon--right" />
|
||||||
|
</span>
|
||||||
|
<el-popover
|
||||||
|
ref="popoverasc"
|
||||||
|
v-model="ascFieldsShow"
|
||||||
|
placement="right-start"
|
||||||
|
width="120"
|
||||||
|
:close-delay="500"
|
||||||
|
trigger="hover"
|
||||||
|
>
|
||||||
|
<ul class="de-ul">
|
||||||
|
|
||||||
|
<li
|
||||||
|
v-for="(node, i) in allFields"
|
||||||
|
:key="node.id"
|
||||||
|
:index="i"
|
||||||
|
class="de-sort-field-span"
|
||||||
|
:class="sortNode.sort === 'asc' && sortNode.id === node.id ? 'de-active-li': ''"
|
||||||
|
@click="saveAscField(node)"
|
||||||
|
>
|
||||||
|
<span>{{ node.name }}</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</el-popover>
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item v-if="isSortWidget" :disabled="disabledSort" :command="beforeClickItem('desc')">
|
||||||
|
|
||||||
|
<span v-popover:popoverdesc class="el-dropdown-link inner-dropdown-menu de-sort-menu" :class="!disabledSort && sortNode.sort === 'desc' ? 'de-active-li': ''">
|
||||||
|
<span>
|
||||||
|
<span>{{ $t('chart.desc') }}</span>
|
||||||
|
</span>
|
||||||
|
<i class="el-icon-arrow-right el-icon--right" />
|
||||||
|
</span>
|
||||||
|
<el-popover
|
||||||
|
ref="popoverdesc"
|
||||||
|
v-model="descFieldsShow"
|
||||||
|
placement="right-start"
|
||||||
|
width="120"
|
||||||
|
:close-delay="500"
|
||||||
|
trigger="hover"
|
||||||
|
>
|
||||||
|
<ul class="de-ul">
|
||||||
|
|
||||||
|
<li
|
||||||
|
v-for="(node, i) in allFields"
|
||||||
|
:key="node.id"
|
||||||
|
:index="i"
|
||||||
|
class="de-sort-field-span"
|
||||||
|
:class="sortNode.sort === 'desc' && sortNode.id === node.id ? 'de-active-li': ''"
|
||||||
|
@click="saveDescField(node)"
|
||||||
|
>
|
||||||
|
<span>{{ node.name }}</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</el-popover>
|
||||||
|
</el-dropdown-item>
|
||||||
|
<!-- <el-dropdown-item :disabled="index" :command="beforeClickItem('customSort')">
|
||||||
|
<span class="de-sort-menu" :class="sortNode.sort === 'custom' ? 'de-active-li': ''">{{ $t('chart.custom_sort') }}</span>
|
||||||
|
</el-dropdown-item> -->
|
||||||
|
<el-dropdown-item :divided="isSortWidget" icon="el-icon-delete" :command="beforeClickItem('remove')">
|
||||||
|
<span class="de-delete-field">{{ $t('chart.delete') }}</span>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<slot />
|
<slot />
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
@ -27,22 +101,59 @@ export default {
|
|||||||
index: {
|
index: {
|
||||||
type: Number,
|
type: Number,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
allFields: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
sort: {
|
||||||
|
type: Object,
|
||||||
|
default: () => null
|
||||||
|
},
|
||||||
|
isSortWidget: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
radio: 0,
|
||||||
|
ascFieldsShow: false,
|
||||||
|
descFieldsShow: false,
|
||||||
|
defaultSortProp: {
|
||||||
|
|
||||||
|
sort: 'none'
|
||||||
|
},
|
||||||
|
sortNode: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
disabledSort() {
|
||||||
|
return this.index > 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
if (!this.sortNode) {
|
||||||
|
this.sortNode = this.sort && this.sort.id ? JSON.parse(JSON.stringify(this.sort)) : JSON.parse(JSON.stringify(this.defaultSortProp))
|
||||||
|
// this.sortChange('none')
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
clickItem(param) {
|
clickItem(param) {
|
||||||
if (!param) {
|
if (!param) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch (param.type) {
|
switch (param.type) {
|
||||||
case 'rename':
|
case 'none':
|
||||||
this.showRename()
|
this.sortChange('none')
|
||||||
|
break
|
||||||
|
case 'asc':
|
||||||
|
this.sortChange('asc')
|
||||||
|
break
|
||||||
|
case 'desc':
|
||||||
|
this.sortChange('desc')
|
||||||
break
|
break
|
||||||
case 'remove':
|
case 'remove':
|
||||||
this.removeItem()
|
this.removeItem()
|
||||||
@ -56,20 +167,38 @@ export default {
|
|||||||
type: type
|
type: type
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
showRename() {
|
|
||||||
this.item.index = this.index
|
|
||||||
this.item.renameType = 'dimension'
|
|
||||||
this.$emit('onNameEdit', this.item)
|
|
||||||
},
|
|
||||||
removeItem() {
|
removeItem() {
|
||||||
this.item.index = this.index
|
this.item.index = this.index
|
||||||
this.$emit('closeItem', this.item)
|
this.$emit('closeItem', this.item)
|
||||||
|
},
|
||||||
|
|
||||||
|
saveAscField({ id, name }) {
|
||||||
|
this.ascFieldsShow = false
|
||||||
|
const sort = 'asc'
|
||||||
|
this.sortNode = { id, name, sort }
|
||||||
|
this.$emit('sort-change', this.sortNode)
|
||||||
|
},
|
||||||
|
|
||||||
|
saveDescField({ id, name }) {
|
||||||
|
this.descFieldsShow = false
|
||||||
|
const sort = 'desc'
|
||||||
|
this.sortNode = { id, name, sort }
|
||||||
|
this.$emit('sort-change', this.sortNode)
|
||||||
|
},
|
||||||
|
sortChange(type) {
|
||||||
|
this.sortNode.sort = type
|
||||||
|
if (type === 'none') {
|
||||||
|
this.sortNode = { sort: 'none' }
|
||||||
|
}
|
||||||
|
this.$emit('sort-change', this.sortNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped lang="scss">
|
||||||
.item-axis {
|
.item-axis {
|
||||||
padding: 1px 6px;
|
padding: 1px 6px;
|
||||||
margin: 0 3px 2px 3px;
|
margin: 0 3px 2px 3px;
|
||||||
@ -90,4 +219,47 @@ export default {
|
|||||||
span {
|
span {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
.de-ul li {
|
||||||
|
margin: 5px 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
color: #409EFF;
|
||||||
|
border-color: rgb(198, 226, 255);
|
||||||
|
background-color: rgb(236, 245, 255);
|
||||||
|
}
|
||||||
|
&:before {
|
||||||
|
content: "";
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 50%;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.de-active-li {
|
||||||
|
&:before {
|
||||||
|
background: #409EFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.de-sort-menu::before {
|
||||||
|
content: "";
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 50%;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.de-delete-field {
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.de-sort-field-span {
|
||||||
|
/* width: 80px;
|
||||||
|
max-width: 80px; */
|
||||||
|
display: inline-flexbox;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -100,7 +100,7 @@ export default {
|
|||||||
if (!token && linkToken) {
|
if (!token && linkToken) {
|
||||||
method = linkMultFieldValues
|
method = linkMultFieldValues
|
||||||
}
|
}
|
||||||
const param = { fieldIds: this.element.options.attrs.fieldId.split(',') }
|
const param = { fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }
|
||||||
if (this.panelInfo.proxy) {
|
if (this.panelInfo.proxy) {
|
||||||
param.userId = this.panelInfo.proxy
|
param.userId = this.panelInfo.proxy
|
||||||
}
|
}
|
||||||
@ -121,10 +121,33 @@ export default {
|
|||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.show = true
|
this.show = true
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
'element.options.attrs.sort': function(value, old) {
|
||||||
|
if (value === null || typeof value === 'undefined' || value === old) return
|
||||||
|
this.datas = []
|
||||||
|
|
||||||
|
let method = multFieldValues
|
||||||
|
const token = this.$store.getters.token || getToken()
|
||||||
|
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||||
|
if (!token && linkToken) {
|
||||||
|
method = linkMultFieldValues
|
||||||
|
}
|
||||||
|
const param = { fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }
|
||||||
|
if (this.panelInfo.proxy) {
|
||||||
|
param.userId = this.panelInfo.proxy
|
||||||
|
}
|
||||||
|
this.element.options.attrs.fieldId &&
|
||||||
|
this.element.options.attrs.fieldId.length > 0 &&
|
||||||
|
method(param).then(res => {
|
||||||
|
this.datas = this.optionDatas(res.data)
|
||||||
|
}) || (this.element.options.value = '')
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
if (!this.element.options.attrs.sort) {
|
||||||
|
this.element.options.attrs.sort = {}
|
||||||
|
}
|
||||||
this.initLoad()
|
this.initLoad()
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -155,7 +178,7 @@ export default {
|
|||||||
if (!token && linkToken) {
|
if (!token && linkToken) {
|
||||||
method = linkMultFieldValues
|
method = linkMultFieldValues
|
||||||
}
|
}
|
||||||
method({ fieldIds: this.element.options.attrs.fieldId.split(',') }).then(res => {
|
method({ fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }).then(res => {
|
||||||
this.datas = this.optionDatas(res.data)
|
this.datas = this.optionDatas(res.data)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ export default {
|
|||||||
if (!token && linkToken) {
|
if (!token && linkToken) {
|
||||||
method = linkMultFieldValues
|
method = linkMultFieldValues
|
||||||
}
|
}
|
||||||
const param = { fieldIds: this.element.options.attrs.fieldId.split(',') }
|
const param = { fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }
|
||||||
if (this.panelInfo.proxy) {
|
if (this.panelInfo.proxy) {
|
||||||
param.userId = this.panelInfo.proxy
|
param.userId = this.panelInfo.proxy
|
||||||
}
|
}
|
||||||
@ -149,9 +149,31 @@ export default {
|
|||||||
this.isIndeterminate = this.value.length > 0 && this.value.length < this.datas.length
|
this.isIndeterminate = this.value.length > 0 && this.value.length < this.datas.length
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
'element.options.attrs.sort': function(value, old) {
|
||||||
|
if (typeof value === 'undefined' || value === old) return
|
||||||
|
this.datas = []
|
||||||
|
let method = multFieldValues
|
||||||
|
const token = this.$store.getters.token || getToken()
|
||||||
|
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||||
|
if (!token && linkToken) {
|
||||||
|
method = linkMultFieldValues
|
||||||
|
}
|
||||||
|
const param = { fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }
|
||||||
|
if (this.panelInfo.proxy) {
|
||||||
|
param.userId = this.panelInfo.proxy
|
||||||
|
}
|
||||||
|
this.element.options.attrs.fieldId &&
|
||||||
|
this.element.options.attrs.fieldId.length > 0 &&
|
||||||
|
method(param).then(res => {
|
||||||
|
this.datas = this.optionDatas(res.data)
|
||||||
|
}) || (this.element.options.value = '')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
if (!this.element.options.attrs.sort) {
|
||||||
|
this.element.options.attrs.sort = {}
|
||||||
|
}
|
||||||
this.initLoad()
|
this.initLoad()
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -178,7 +200,7 @@ export default {
|
|||||||
if (!token && linkToken) {
|
if (!token && linkToken) {
|
||||||
method = linkMultFieldValues
|
method = linkMultFieldValues
|
||||||
}
|
}
|
||||||
method({ fieldIds: this.element.options.attrs.fieldId.split(',') }).then(res => {
|
method({ fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }).then(res => {
|
||||||
this.datas = this.optionDatas(res.data)
|
this.datas = this.optionDatas(res.data)
|
||||||
if (this.element.options.attrs.multiple) {
|
if (this.element.options.attrs.multiple) {
|
||||||
this.checkAll = this.value.length === this.datas.length
|
this.checkAll = this.value.length === this.datas.length
|
||||||
|
@ -118,7 +118,7 @@ export default {
|
|||||||
if (!token && linkToken) {
|
if (!token && linkToken) {
|
||||||
method = linkMappingFieldValues
|
method = linkMappingFieldValues
|
||||||
}
|
}
|
||||||
const param = { fieldIds: this.element.options.attrs.fieldId.split(',') }
|
const param = { fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }
|
||||||
if (this.panelInfo.proxy) {
|
if (this.panelInfo.proxy) {
|
||||||
param.userId = this.panelInfo.proxy
|
param.userId = this.panelInfo.proxy
|
||||||
}
|
}
|
||||||
@ -162,10 +162,37 @@ export default {
|
|||||||
this.$refs.deSelectTree && this.$refs.deSelectTree.treeDataUpdateFun(this.datas)
|
this.$refs.deSelectTree && this.$refs.deSelectTree.treeDataUpdateFun(this.datas)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
'element.options.attrs.sort': function(value, old) {
|
||||||
|
if (value === null || typeof value === 'undefined' || value === old) return
|
||||||
|
this.datas = []
|
||||||
|
|
||||||
|
let method = mappingFieldValues
|
||||||
|
const token = this.$store.getters.token || getToken()
|
||||||
|
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||||
|
if (!token && linkToken) {
|
||||||
|
method = linkMappingFieldValues
|
||||||
|
}
|
||||||
|
const param = { fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }
|
||||||
|
if (this.panelInfo.proxy) {
|
||||||
|
param.userId = this.panelInfo.proxy
|
||||||
|
}
|
||||||
|
this.element.options.attrs.fieldId &&
|
||||||
|
this.element.options.attrs.fieldId.length > 0 &&
|
||||||
|
method(param).then(res => {
|
||||||
|
this.datas = this.optionDatas(res.data)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.deSelectTree && this.$refs.deSelectTree.treeDataUpdateFun(this.datas)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
this.element.options.value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
if (!this.element.options.attrs.sort) {
|
||||||
|
this.element.options.attrs.sort = {}
|
||||||
|
}
|
||||||
this.initLoad()
|
this.initLoad()
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -206,7 +233,7 @@ export default {
|
|||||||
if (!token && linkToken) {
|
if (!token && linkToken) {
|
||||||
method = linkMappingFieldValues
|
method = linkMappingFieldValues
|
||||||
}
|
}
|
||||||
method({ fieldIds: this.element.options.attrs.fieldId.split(',') }).then(res => {
|
method({ fieldIds: this.element.options.attrs.fieldId.split(','), sort: this.element.options.attrs.sort }).then(res => {
|
||||||
this.datas = this.optionDatas(res.data)
|
this.datas = this.optionDatas(res.data)
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.deSelectTree && this.$refs.deSelectTree.treeDataUpdateFun(this.datas)
|
this.$refs.deSelectTree && this.$refs.deSelectTree.treeDataUpdateFun(this.datas)
|
||||||
|
@ -18,7 +18,8 @@ const dialogPanel = {
|
|||||||
label: 'text',
|
label: 'text',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
fieldId: '',
|
fieldId: '',
|
||||||
dragItems: []
|
dragItems: [],
|
||||||
|
sort: {}
|
||||||
},
|
},
|
||||||
value: '',
|
value: '',
|
||||||
manualModify: false
|
manualModify: false
|
||||||
@ -90,6 +91,10 @@ class NumberSelectGridServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
return param
|
return param
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isSortWidget() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
fillValueDerfault(element) {
|
fillValueDerfault(element) {
|
||||||
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
||||||
if (element.options.attrs.multiple) {
|
if (element.options.attrs.multiple) {
|
||||||
|
@ -18,7 +18,8 @@ const dialogPanel = {
|
|||||||
label: 'text',
|
label: 'text',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
fieldId: '',
|
fieldId: '',
|
||||||
dragItems: []
|
dragItems: [],
|
||||||
|
sort: {}
|
||||||
},
|
},
|
||||||
value: '',
|
value: '',
|
||||||
manualModify: false
|
manualModify: false
|
||||||
@ -91,6 +92,10 @@ class NumberSelectServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
return param
|
return param
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isSortWidget() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
fillValueDerfault(element) {
|
fillValueDerfault(element) {
|
||||||
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
||||||
if (element.options.attrs.multiple) {
|
if (element.options.attrs.multiple) {
|
||||||
|
@ -18,7 +18,8 @@ const dialogPanel = {
|
|||||||
label: 'text',
|
label: 'text',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
fieldId: '',
|
fieldId: '',
|
||||||
dragItems: []
|
dragItems: [],
|
||||||
|
sort: {}
|
||||||
},
|
},
|
||||||
value: '',
|
value: '',
|
||||||
manualModify: false
|
manualModify: false
|
||||||
@ -90,6 +91,10 @@ class TextSelectGridServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
return param
|
return param
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isSortWidget() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
fillValueDerfault(element) {
|
fillValueDerfault(element) {
|
||||||
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
||||||
if (element.options.attrs.multiple) {
|
if (element.options.attrs.multiple) {
|
||||||
|
@ -17,7 +17,8 @@ const dialogPanel = {
|
|||||||
label: 'text',
|
label: 'text',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
fieldId: '',
|
fieldId: '',
|
||||||
dragItems: []
|
dragItems: [],
|
||||||
|
sort: {}
|
||||||
},
|
},
|
||||||
value: '',
|
value: '',
|
||||||
manualModify: false
|
manualModify: false
|
||||||
@ -92,6 +93,9 @@ class TextSelectServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
return param
|
return param
|
||||||
}
|
}
|
||||||
|
isSortWidget() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
fillValueDerfault(element) {
|
fillValueDerfault(element) {
|
||||||
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
||||||
|
@ -17,7 +17,8 @@ const dialogPanel = {
|
|||||||
label: 'text',
|
label: 'text',
|
||||||
value: 'id',
|
value: 'id',
|
||||||
fieldId: '',
|
fieldId: '',
|
||||||
dragItems: []
|
dragItems: [],
|
||||||
|
sort: {}
|
||||||
},
|
},
|
||||||
value: '',
|
value: '',
|
||||||
manualModify: false
|
manualModify: false
|
||||||
@ -96,6 +97,9 @@ class TextSelectTreeServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
return param
|
return param
|
||||||
}
|
}
|
||||||
|
isSortWidget() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
fillValueDerfault(element) {
|
fillValueDerfault(element) {
|
||||||
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
const defaultV = element.options.value === null ? '' : element.options.value.toString()
|
||||||
|
@ -181,7 +181,7 @@
|
|||||||
|
|
||||||
<de-main-container class="ms-main-container">
|
<de-main-container class="ms-main-container">
|
||||||
<div v-if="currentElement.options && currentElement.options.attrs">
|
<div v-if="currentElement.options && currentElement.options.attrs">
|
||||||
<filter-head :element="currentElement" />
|
<filter-head :element="currentElement" :all-fields="allFields" :widget="widget" />
|
||||||
|
|
||||||
<filter-control :element="currentElement" :widget="widget" :control-attrs="myAttrs" :child-views="childViews" />
|
<filter-control :element="currentElement" :widget="widget" :control-attrs="myAttrs" :child-views="childViews" />
|
||||||
|
|
||||||
@ -294,7 +294,8 @@ export default {
|
|||||||
childViews: {
|
childViews: {
|
||||||
viewInfos: []
|
viewInfos: []
|
||||||
},
|
},
|
||||||
currentElement: null
|
currentElement: null,
|
||||||
|
allFields: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -318,6 +319,7 @@ export default {
|
|||||||
}
|
}
|
||||||
this.enableSureButton()
|
this.enableSureButton()
|
||||||
},
|
},
|
||||||
|
|
||||||
keyWord(val) {
|
keyWord(val) {
|
||||||
this.expandedArray = []
|
this.expandedArray = []
|
||||||
if (this.showDomType === 'field') {
|
if (this.showDomType === 'field') {
|
||||||
@ -546,6 +548,7 @@ export default {
|
|||||||
loadField(tableId) {
|
loadField(tableId) {
|
||||||
fieldListWithPermission(tableId).then(res => {
|
fieldListWithPermission(tableId).then(res => {
|
||||||
let datas = res.data
|
let datas = res.data
|
||||||
|
this.allFields = JSON.parse(JSON.stringify(datas))
|
||||||
if (this.widget && this.widget.filterFieldMethod) {
|
if (this.widget && this.widget.filterFieldMethod) {
|
||||||
datas = this.widget.filterFieldMethod(datas)
|
datas = this.widget.filterFieldMethod(datas)
|
||||||
}
|
}
|
||||||
@ -556,6 +559,7 @@ export default {
|
|||||||
comLoadField(tableId) {
|
comLoadField(tableId) {
|
||||||
fieldListWithPermission(tableId).then(res => {
|
fieldListWithPermission(tableId).then(res => {
|
||||||
let datas = res.data
|
let datas = res.data
|
||||||
|
this.allFields = JSON.parse(JSON.stringify(datas))
|
||||||
if (this.widget && this.widget.filterFieldMethod) {
|
if (this.widget && this.widget.filterFieldMethod) {
|
||||||
datas = this.widget.filterFieldMethod(datas)
|
datas = this.widget.filterFieldMethod(datas)
|
||||||
}
|
}
|
||||||
|
@ -16,28 +16,12 @@
|
|||||||
style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;overflow-x: auto;display: flex;align-items: center;"
|
style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;overflow-x: auto;display: flex;align-items: center;"
|
||||||
@end="end2"
|
@end="end2"
|
||||||
>
|
>
|
||||||
<!-- <div class="list-group-container">
|
|
||||||
<drag-item
|
|
||||||
v-for="(item,index) in element.options.attrs.dragItems"
|
|
||||||
:key="item.id"
|
|
||||||
:item="item"
|
|
||||||
:index="index"
|
|
||||||
@closeItem="closeItem"
|
|
||||||
/>
|
|
||||||
</div> -->
|
|
||||||
<v-flex v-for="(item,index) in element.options.attrs.dragItems" :key="item.id">
|
<v-flex v-for="(item,index) in element.options.attrs.dragItems" :key="item.id">
|
||||||
|
|
||||||
<drag-item :key="item.id" :item="item" :index="index" @closeItem="closeItem" />
|
<drag-item :key="item.id" :is-sort-widget="isSortWidget" :item="item" :index="index" :sort="element.options.attrs.sort" :all-fields="index ? [] : allFields" @closeItem="closeItem" @sort-change="sortChange" />
|
||||||
</v-flex>
|
</v-flex>
|
||||||
<!-- <transition-group class="list-group" :data-value="$t('panel.drag_here')">
|
|
||||||
<drag-item
|
|
||||||
v-for="(item,index) in element.options.attrs.dragItems"
|
|
||||||
:key="item.id"
|
|
||||||
:item="item"
|
|
||||||
:index="index"
|
|
||||||
@closeItem="closeItem"
|
|
||||||
/>
|
|
||||||
</transition-group> -->
|
|
||||||
<span solt="footer">{{ $t('panel.drag_here') }}</span>
|
<span solt="footer">{{ $t('panel.drag_here') }}</span>
|
||||||
</draggable>
|
</draggable>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -61,6 +45,14 @@ export default {
|
|||||||
element: {
|
element: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => {}
|
default: () => {}
|
||||||
|
},
|
||||||
|
allFields: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
widget: {
|
||||||
|
type: Object,
|
||||||
|
default: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@ -68,11 +60,17 @@ export default {
|
|||||||
targets: []
|
targets: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
isSortWidget() {
|
||||||
|
return this.widget && this.widget.isSortWidget && this.widget.isSortWidget()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onMove(e, originalEvent) {
|
onMove(e, originalEvent) {
|
||||||
@ -84,6 +82,13 @@ export default {
|
|||||||
closeItem(tag) {
|
closeItem(tag) {
|
||||||
const index = tag.index
|
const index = tag.index
|
||||||
this.element.options.attrs.dragItems.splice(index, 1)
|
this.element.options.attrs.dragItems.splice(index, 1)
|
||||||
|
if (!index) {
|
||||||
|
this.element.options.attrs.sort = null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sortChange(param) {
|
||||||
|
this.element.options.attrs.sort = param
|
||||||
|
// this.$emit('sort-change', param)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user