feat(X-Pack): [数据填报]表单数据支持字段过滤查询

This commit is contained in:
ulleo
2025-02-13 18:23:44 +08:00
committed by dataeaseShu
parent 0e092ab66e
commit 870222c05d
30 changed files with 158 additions and 34 deletions

View File

@@ -6,7 +6,7 @@ import io.dataease.chart.manage.ChartDataManage;
import io.dataease.chart.manage.ChartViewManege;
import io.dataease.chart.utils.ChartDataBuild;
import io.dataease.dataset.manage.DatasetTableFieldManage;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Dimension2SQLObj;
import io.dataease.engine.trans.Quota2SQLObj;

View File

@@ -1,7 +1,7 @@
package io.dataease.chart.charts.impl.table;
import io.dataease.chart.charts.impl.GroupChartHandler;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Dimension2SQLObj;

View File

@@ -2,7 +2,7 @@ package io.dataease.chart.manage;
import io.dataease.api.chart.request.ThresholdCheckRequest;
import io.dataease.api.chart.vo.ThresholdCheckVO;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
import io.dataease.extensions.view.dto.ChartViewDTO;

View File

@@ -12,7 +12,7 @@ import io.dataease.constant.AuthConstant;
import io.dataease.constant.CommonConstants;
import io.dataease.dataset.manage.PermissionManage;
import io.dataease.dataset.server.DatasetFieldServer;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.exception.DEException;
import io.dataease.exportCenter.manage.ExportCenterManage;
import io.dataease.exportCenter.util.ExportCenterUtils;

View File

@@ -13,7 +13,7 @@ import io.dataease.dataset.manage.DatasetSQLManage;
import io.dataease.dataset.manage.DatasetTableFieldManage;
import io.dataease.dataset.manage.PermissionManage;
import io.dataease.dataset.utils.FieldUtils;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.engine.utils.Utils;
import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -22,7 +22,7 @@ import io.dataease.datasource.manage.DataSourceManage;
import io.dataease.datasource.manage.EngineManage;
import io.dataease.datasource.utils.DatasourceUtils;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.*;
import io.dataease.engine.utils.SQLUtils;

View File

@@ -15,7 +15,7 @@ import io.dataease.datasource.dao.auto.mapper.CoreDatasourceMapper;
import io.dataease.datasource.manage.DataSourceManage;
import io.dataease.datasource.manage.EngineManage;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.dto.DatasetTableDTO;

View File

@@ -9,7 +9,7 @@ import io.dataease.datasource.dao.auto.mapper.CoreDatasourceMapper;
import io.dataease.datasource.manage.EngineManage;
import io.dataease.datasource.request.EngineRequest;
import io.dataease.datasource.type.*;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.dto.*;
import io.dataease.extensions.datasource.provider.DriverShim;

View File

@@ -28,7 +28,7 @@ import io.dataease.datasource.manage.EngineManage;
import io.dataease.datasource.provider.ApiUtils;
import io.dataease.datasource.provider.CalciteProvider;
import io.dataease.datasource.provider.ExcelUtils;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.dto.*;

View File

@@ -1,6 +1,6 @@
package io.dataease.engine.sql;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.extensions.datasource.model.SQLMeta;
import io.dataease.extensions.datasource.model.SQLObj;
import io.dataease.extensions.view.dto.ChartViewDTO;

View File

@@ -1,6 +1,6 @@
package io.dataease.engine.trans;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -1,8 +1,8 @@
package io.dataease.engine.trans;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -1,6 +1,6 @@
package io.dataease.engine.trans;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -1,8 +1,8 @@
package io.dataease.engine.trans;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.func.FunctionConstant;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.api.PluginManageApi;

View File

@@ -1,9 +1,9 @@
package io.dataease.engine.trans;
import io.dataease.api.chart.dto.DeSortField;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -1,8 +1,8 @@
package io.dataease.engine.trans;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -1,6 +1,6 @@
package io.dataease.engine.trans;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;
import io.dataease.extensions.datasource.model.SQLMeta;
import io.dataease.extensions.datasource.model.SQLObj;

View File

@@ -2,7 +2,7 @@ package io.dataease.engine.trans;
import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -1,7 +1,7 @@
package io.dataease.engine.utils;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants;

View File

@@ -22,7 +22,7 @@ import io.dataease.dataset.dao.auto.entity.CoreDatasetGroup;
import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupMapper;
import io.dataease.dataset.manage.*;
import io.dataease.datasource.utils.DatasourceUtils;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Field2SQLObj;
import io.dataease.engine.trans.Order2SQLObj;
@@ -62,7 +62,6 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;

View File

@@ -7,7 +7,7 @@ import io.dataease.chart.manage.ChartDataManage;
import io.dataease.chart.manage.ChartViewManege;
import io.dataease.constant.CommonConstants;
import io.dataease.dataset.server.DatasetFieldServer;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.exception.DEException;
import io.dataease.exportCenter.util.ExportCenterUtils;
import io.dataease.extensions.view.dto.ChartExtFilterDTO;

View File

@@ -11,7 +11,7 @@ import io.dataease.api.visualization.response.VisualizationOuterParamsBaseRespon
import io.dataease.auth.DeLinkPermit;
import io.dataease.dataset.dao.auto.entity.CoreDatasetTable;
import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableMapper;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.extensions.view.dto.SqlVariableDetails;
import io.dataease.utils.BeanUtils;
import io.dataease.utils.JsonUtil;

View File

@@ -1,6 +1,6 @@
package io.dataease.visualization.utils;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.constant.DeTypeConstants;
import io.dataease.utils.ConfigUtils;
import io.dataease.utils.FileUtils;
import io.dataease.utils.LogUtil;

View File

@@ -28,4 +28,6 @@ public class DataFillFormTableDataRequest implements Serializable {
private List<String> primaryKeyValueList;
private List<DataFillFormTableDataSearchParam> searchParams;
}

View File

@@ -0,0 +1,28 @@
package io.dataease.api.xpack.dataFilling.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
@Data
@Accessors(chain = true)
public class DataFillFormTableDataSearchParam implements Serializable {
@Serial
private static final long serialVersionUID = -9094306073413857266L;
private String term;
private String field;
private Object value;
private List<Object> values;
private boolean multiple;
}

View File

@@ -1,4 +1,4 @@
package io.dataease.engine.constant;
package io.dataease.constant;
public class DeTypeConstants {

View File

@@ -1,4 +1,4 @@
package io.dataease.engine.constant;
package io.dataease.constant;
import java.util.ArrayList;
import java.util.List;

View File

@@ -5,7 +5,9 @@ import io.dataease.extensions.datasource.dto.TableField;
import io.dataease.extensions.datafilling.dto.ExtIndexField;
import io.dataease.extensions.datafilling.dto.ExtTableField;
import io.dataease.extensions.datasource.dto.TableFieldWithValue;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
@@ -23,13 +25,56 @@ public abstract class ExtDDLProvider {
public abstract String dropTableColumnSql(String table, List<ExtTableField> formFields);
public abstract String searchSql(String table, List<TableField> formFields, String whereSql, long limit, long offset);
@Deprecated
public String searchSql(String table, List<TableField> formFields, String whereSql, long limit, long offset) {
String baseSql = "SELECT $Column_Fields$ FROM `$TABLE_NAME$` $WHERE_SQL$ ;";
if (limit > 0) {
baseSql = "SELECT $Column_Fields$ FROM `$TABLE_NAME$` $WHERE_SQL$ LIMIT $OFFSET_COUNT$, $LIMIT_COUNT$ ;";
}
baseSql = baseSql.replace("$TABLE_NAME$", table)
.replace("$OFFSET_COUNT$", Long.toString(offset))
.replace("$LIMIT_COUNT$", Long.toString(limit));
if (StringUtils.isBlank(whereSql)) {
baseSql = baseSql.replace("$WHERE_SQL$", "");
} else {
baseSql = baseSql.replace("$WHERE_SQL$", whereSql);
}
baseSql = baseSql.replace("$Column_Fields$", convertSearchFields(formFields));
return baseSql;
}
private String convertSearchFields(List<TableField> formFields) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < formFields.size(); i++) {
TableField f = formFields.get(i);
if (StringUtils.equalsAnyIgnoreCase(f.getFieldType(), "datetime")) {
//特殊处理,全部使用统一格式输出
builder.append("DATE_FORMAT(`").append(f.getOriginName()).append("`,'%Y-%m-%d %H:%i:%S')");
} else {
builder.append("`").append(f.getOriginName()).append("`");
}
if (i < formFields.size() - 1) {
builder.append(", ");
}
}
return builder.toString();
}
public abstract String searchColumnData(String table, String column, String order);
public abstract String searchColumnRowDataOne(String table, List<TableField> searchFields, TableFieldWithValue tableFieldWithValue);
public abstract String countSql(String table, String whereSql);
@Deprecated
public String countSql(String table, String whereSql){
String baseSql = "SELECT COUNT(1) FROM `$TABLE_NAME$` $WHERE_SQL$ ;";
baseSql = baseSql.replace("$TABLE_NAME$", table);
if (StringUtils.isBlank(whereSql)) {
baseSql = baseSql.replace("$WHERE_SQL$", "");
} else {
baseSql = baseSql.replace("$WHERE_SQL$", whereSql);
}
return baseSql;
}
public abstract String dropTableSql(String table);
@@ -45,9 +90,54 @@ public abstract class ExtDDLProvider {
public abstract String checkUniqueValueSql(String tableName, TableFieldWithValue field, TableFieldWithValue pk);
public abstract String whereSql(String tableName, List<TableField> searchFields);
@Deprecated
public String whereSql(String tableName, List<TableField> searchFields) {
StringBuilder builder = new StringBuilder("WHERE 1 = 1 ");
for (TableField searchField : searchFields) {
if (searchField.getInCount() > 1) {
List<String> pList = new ArrayList<>();
for (int i = 0; i < searchField.getInCount(); i++) {
pList.add("?");
}
String str = "AND $Column_Field$ IN (" + String.join(", ", pList) + ")";
builder.append(str.replace("$Column_Field$", searchField.getOriginName()));
} else {
switch (searchField.getTerm()) {
case "not_eq":
builder.append(("AND $Column_Field$ " + "!=" + " ? ").replace("$Column_Field$", searchField.getOriginName()));
break;
case "lt":
builder.append(("AND $Column_Field$ " + "<" + " ? ").replace("$Column_Field$", searchField.getOriginName()));
break;
case "gt":
builder.append(("AND $Column_Field$ " + ">" + " ? ").replace("$Column_Field$", searchField.getOriginName()));
break;
case "le":
builder.append(("AND $Column_Field$ " + "<=" + " ? ").replace("$Column_Field$", searchField.getOriginName()));
break;
case "ge":
builder.append(("AND $Column_Field$ " + ">=" + " ? ").replace("$Column_Field$", searchField.getOriginName()));
break;
case "null":
builder.append("AND $Column_Field$ IS NULL ");
break;
case "not_null":
builder.append("AND $Column_Field$ IS NOT NULL ");
break;
default:
builder.append(("AND $Column_Field$ " + "=" + " ? ").replace("$Column_Field$", searchField.getOriginName()));
break;
}
public abstract String getLowerCaseTaleNames();
}
}
return builder.toString();
}
@Deprecated
public String getLowerCaseTaleNames() {
return "SHOW VARIABLES LIKE 'lower_case_table_names'";
}
public abstract Integer getColumnType(String name);

View File

@@ -26,5 +26,6 @@ public class TableField implements Serializable {
List<Object> value;
private int inCount;
private String term = "eq";
}

View File

@@ -19,6 +19,10 @@ public class TableFieldWithValue implements Serializable {
private String typeName;
private Integer type;
private String isDateTime;
private String dateFormat;
private String term = "eq";
public static TableFieldWithValue copy(TableFieldWithValue tableFieldWithValue) {
return new TableFieldWithValue()
.setValue(tableFieldWithValue.getValue())