mirror of
https://github.com/dataease/dataease.git
synced 2026-05-24 06:18:10 +08:00
feat(X-Pack): [数据填报]表单数据支持字段过滤查询
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user