mirror of
https://github.com/dataease/dataease.git
synced 2026-06-12 16:31:11 +08:00
feat(数据集): 数据集增加分组字段功能
This commit is contained in:
@@ -104,7 +104,7 @@ public class CustomWhere2Str {
|
||||
originName = String.format(SQLConstants.FIELD_NAME, tableObj.getTableAlias(), field.getDataeaseName());
|
||||
}
|
||||
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 3) {
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(field, originFields);
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(field, originFields, isCross, dsMap, pluginManage);
|
||||
// 给计算字段处加一个占位符,后续SQL方言转换后再替换
|
||||
originName = String.format(SqlPlaceholderConstants.CALC_FIELD_PLACEHOLDER, field.getId());
|
||||
fieldsDialect.put(originName, groupFieldExp);
|
||||
|
||||
@@ -60,7 +60,7 @@ public class Dimension2SQLObj {
|
||||
originField = String.format(SQLConstants.FIELD_NAME, tableObj.getTableAlias(), x.getDataeaseName());
|
||||
}
|
||||
} else if (ObjectUtils.isNotEmpty(x.getExtField()) && Objects.equals(x.getExtField(), ExtFieldConstant.EXT_GROUP)) {
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(x, originFields);
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(x, originFields, isCross, dsMap, pluginManage);
|
||||
// 给计算字段处加一个占位符,后续SQL方言转换后再替换
|
||||
originField = String.format(SqlPlaceholderConstants.CALC_FIELD_PLACEHOLDER, x.getId());
|
||||
fieldsDialect.put(originField, groupFieldExp);
|
||||
|
||||
@@ -74,7 +74,7 @@ public class ExtWhere2Str {
|
||||
originName = String.format(SQLConstants.FIELD_NAME, tableObj.getTableAlias(), field.getDataeaseName());
|
||||
}
|
||||
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 3) {
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(field, originFields);
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(field, originFields, isCross, dsMap, pluginManage);
|
||||
// 给计算字段处加一个占位符,后续SQL方言转换后再替换
|
||||
originName = String.format(SqlPlaceholderConstants.CALC_FIELD_PLACEHOLDER, field.getId());
|
||||
fieldsDialect.put(originName, groupFieldExp);
|
||||
|
||||
@@ -64,7 +64,7 @@ public class Field2SQLObj {
|
||||
originField = String.format(SQLConstants.FIELD_NAME, tableObj.getTableAlias(), x.getDataeaseName());
|
||||
}
|
||||
} else if (ObjectUtils.isNotEmpty(x.getExtField()) && Objects.equals(x.getExtField(), ExtFieldConstant.EXT_GROUP)) {
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(x, originFields);
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(x, originFields, isCross, dsMap, pluginManage);
|
||||
// 给计算字段处加一个占位符,后续SQL方言转换后再替换
|
||||
originField = String.format(SqlPlaceholderConstants.CALC_FIELD_PLACEHOLDER, x.getId());
|
||||
fieldsDialect.put(originField, groupFieldExp);
|
||||
|
||||
@@ -66,7 +66,7 @@ public class Order2SQLObj {
|
||||
originField = String.format(SQLConstants.FIELD_NAME, tableObj.getTableAlias(), f.getDataeaseName());
|
||||
}
|
||||
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && Objects.equals(f.getExtField(), ExtFieldConstant.EXT_GROUP)) {
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(f, originFields);
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(f, originFields, isCross, dsMap, pluginManage);
|
||||
// 给计算字段处加一个占位符,后续SQL方言转换后再替换
|
||||
originField = String.format(SqlPlaceholderConstants.CALC_FIELD_PLACEHOLDER, f.getId());
|
||||
fieldsDialect.put(originField, groupFieldExp);
|
||||
|
||||
@@ -60,7 +60,7 @@ public class Quota2SQLObj {
|
||||
originField = String.format(SQLConstants.FIELD_NAME, tableObj.getTableAlias(), y.getDataeaseName());
|
||||
}
|
||||
} else if (ObjectUtils.isNotEmpty(y.getExtField()) && Objects.equals(y.getExtField(), ExtFieldConstant.EXT_GROUP)) {
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(y, originFields);
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(y, originFields, isCross, dsMap, pluginManage);
|
||||
// 给计算字段处加一个占位符,后续SQL方言转换后再替换
|
||||
originField = String.format(SqlPlaceholderConstants.CALC_FIELD_PLACEHOLDER, y.getId());
|
||||
fieldsDialect.put(originField, groupFieldExp);
|
||||
|
||||
@@ -120,7 +120,7 @@ public class WhereTree2Str {
|
||||
originName = String.format(SQLConstants.FIELD_NAME, tableObj.getTableAlias(), field.getDataeaseName());
|
||||
}
|
||||
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && Objects.equals(field.getExtField(), ExtFieldConstant.EXT_GROUP)) {
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(field, originFields);
|
||||
String groupFieldExp = Utils.transGroupFieldToSql(field, originFields, isCross, dsMap, pluginManage);
|
||||
// 给计算字段处加一个占位符,后续SQL方言转换后再替换
|
||||
originName = String.format(SqlPlaceholderConstants.CALC_FIELD_PLACEHOLDER, field.getId());
|
||||
fieldsDialect.put(originName, groupFieldExp);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.dataease.engine.utils;
|
||||
|
||||
import io.dataease.engine.constant.ExtFieldConstant;
|
||||
import io.dataease.constant.SQLConstants;
|
||||
import io.dataease.engine.constant.ExtFieldConstant;
|
||||
import io.dataease.exception.DEException;
|
||||
import io.dataease.extensions.datasource.api.PluginManageApi;
|
||||
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;
|
||||
@@ -496,7 +496,7 @@ public class Utils {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String transGroupFieldToSql(DatasetTableFieldDTO dto, List<DatasetTableFieldDTO> fields) {
|
||||
public static String transGroupFieldToSql(DatasetTableFieldDTO dto, List<DatasetTableFieldDTO> fields, boolean isCross, Map<Long, DatasourceSchemaDTO> dsMap, PluginManageApi pluginManage) {
|
||||
// get origin field
|
||||
DatasetTableFieldDTO originField = null;
|
||||
for (DatasetTableFieldDTO ele : fields) {
|
||||
@@ -509,6 +509,22 @@ public class Utils {
|
||||
DEException.throwException("Field not exists");
|
||||
}
|
||||
|
||||
DsTypeDTO datasourceType = null;
|
||||
if (dsMap != null && dsMap.entrySet().iterator().hasNext()) {
|
||||
Map.Entry<Long, DatasourceSchemaDTO> next = dsMap.entrySet().iterator().next();
|
||||
datasourceType = getDs(pluginManage, next.getValue().getType());
|
||||
}
|
||||
if (datasourceType == null) {
|
||||
DEException.throwException("Datasource not exists");
|
||||
}
|
||||
|
||||
String fieldName;
|
||||
if (isCross) {
|
||||
fieldName = originField.getDataeaseName();
|
||||
} else {
|
||||
fieldName = datasourceType.getPrefix() + originField.getDataeaseName() + datasourceType.getSuffix();
|
||||
}
|
||||
|
||||
StringBuilder exp = new StringBuilder();
|
||||
exp.append(" (CASE ");
|
||||
if (originField.getDeType() == 0) {
|
||||
@@ -516,7 +532,7 @@ public class Utils {
|
||||
exp.append(" WHEN ");
|
||||
for (int i = 0; i < fieldGroupDTO.getText().size(); i++) {
|
||||
String value = fieldGroupDTO.getText().get(i);
|
||||
exp.append(originField.getDataeaseName()).append(" = ").append("'").append(transValue(value)).append("'");
|
||||
exp.append(fieldName).append(" = ").append("'").append(transValue(value)).append("'");
|
||||
if (i < fieldGroupDTO.getText().size() - 1) {
|
||||
exp.append(" OR ");
|
||||
}
|
||||
@@ -526,17 +542,17 @@ public class Utils {
|
||||
} else if (originField.getDeType() == 1) {
|
||||
for (FieldGroupDTO fieldGroupDTO : dto.getGroupList()) {
|
||||
exp.append(" WHEN ");
|
||||
exp.append(originField.getDataeaseName()).append(" >= ").append("'").append(fieldGroupDTO.getStartTime()).append("'");
|
||||
exp.append(fieldName).append(" >= ").append("'").append(fieldGroupDTO.getStartTime()).append("'");
|
||||
exp.append(" AND ");
|
||||
exp.append(originField.getDataeaseName()).append(" <= ").append("'").append(fieldGroupDTO.getEndTime()).append("'");
|
||||
exp.append(fieldName).append(" <= ").append("'").append(fieldGroupDTO.getEndTime()).append("'");
|
||||
exp.append(" THEN '").append(transValue(fieldGroupDTO.getName())).append("'");
|
||||
}
|
||||
} else if (originField.getDeType() == 2 || originField.getDeType() == 3 || originField.getDeType() == 4) {
|
||||
for (FieldGroupDTO fieldGroupDTO : dto.getGroupList()) {
|
||||
exp.append(" WHEN ");
|
||||
exp.append(originField.getDataeaseName()).append(StringUtils.equalsIgnoreCase(fieldGroupDTO.getMinTerm(), "le") ? " >= " : " > ").append(fieldGroupDTO.getMin());
|
||||
exp.append(fieldName).append(StringUtils.equalsIgnoreCase(fieldGroupDTO.getMinTerm(), "le") ? " >= " : " > ").append(fieldGroupDTO.getMin());
|
||||
exp.append(" AND ");
|
||||
exp.append(originField.getDataeaseName()).append(StringUtils.equalsIgnoreCase(fieldGroupDTO.getMaxTerm(), "le") ? " <= " : " < ").append(fieldGroupDTO.getMax());
|
||||
exp.append(fieldName).append(StringUtils.equalsIgnoreCase(fieldGroupDTO.getMaxTerm(), "le") ? " <= " : " < ").append(fieldGroupDTO.getMax());
|
||||
exp.append(" THEN '").append(transValue(fieldGroupDTO.getName())).append("'");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user