fix(过滤器): 树过滤器在sqlserver和ck数据源不能选择单字段过滤

This commit is contained in:
taojinlong 2023-04-14 16:24:08 +08:00
parent cb1aa6a1a3
commit 73c14748b8
3 changed files with 62 additions and 19 deletions

View File

@ -1208,16 +1208,29 @@ public class OracleQueryProvider extends QueryProvider {
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
if (field.getDeType() == 1) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
whereName = String.format(OracleConstants.TO_DATE, originName, format);
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereName = String.format(OracleConstants.TO_CHAR, String.format(OracleConstants.TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT), format);
}else {
whereName = String.format(OracleConstants.TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT);
}
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
String cast = String.format(OracleConstants.CAST, originName, OracleConstants.DEFAULT_INT_FORMAT) + "/1000";
whereName = String.format(OracleConstants.FROM_UNIXTIME, cast, format);
}else {
String cast = String.format(OracleConstants.CAST, originName, OracleConstants.DEFAULT_INT_FORMAT) + "/1000";
whereName = String.format(OracleConstants.FROM_UNIXTIME, cast, OracleConstants.DEFAULT_DATE_FORMAT);
}
}
if (field.getDeExtractType() == 1) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereName = String.format(OracleConstants.TO_CHAR, originName, format);
}else {
whereName = originName;
// whereName = String.format(OracleConstants.TO_CHAR, originName, format);
}
}
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
whereName = String.format(OracleConstants.CAST, originName, OracleConstants.DEFAULT_FLOAT_FORMAT);

View File

@ -1074,16 +1074,30 @@ public class PgQueryProvider extends QueryProvider {
if (field.getDeType() == 1) {
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
String timestamp = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT);
whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format);
} else {
whereName = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT);
}
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
String cast = String.format(PgConstants.CAST, originName, "bigint");
String timestamp = String.format(PgConstants.FROM_UNIXTIME, cast);
whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format);
} else {
String cast = String.format(PgConstants.CAST, originName, "bigint");
whereName = String.format(PgConstants.FROM_UNIXTIME, cast);
}
}
if (field.getDeExtractType() == 1) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereName = String.format(PgConstants.DATE_FORMAT, originName, format);
} else {
whereName = originName;
}
}
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {

View File

@ -1080,12 +1080,28 @@ public class SqlserverQueryProvider extends QueryProvider {
}
if (field.getDeType() == 1) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), originName);
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), String.format(SqlServerSQLConstants.STRING_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT));
}else {
whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT);
}
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000");
whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), cast);;
whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), cast);
}else {
String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000");
whereName = String.format(SqlServerSQLConstants.FROM_UNIXTIME, cast);
}
}
if (field.getDeExtractType() == 1) {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), originName);
}else {
whereName = originName;
}
}
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {