mirror of
https://github.com/dataease/dataease.git
synced 2026-06-17 04:51:43 +08:00
feat: 数据集行权限增加“开始以”“结束以”的条件
This commit is contained in:
@@ -215,6 +215,24 @@ public class CustomWhere2Str {
|
||||
} else {
|
||||
whereValue = toLikeValue(value);
|
||||
}
|
||||
} else if (StringUtils.containsIgnoreCase(item.getTerm(), "start_with")) {
|
||||
if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(field.getType(), "NCHAR"))
|
||||
&& !isCross
|
||||
&& StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNStartValue(value);
|
||||
} else {
|
||||
whereValue = toStartValue(value);
|
||||
}
|
||||
} else if (StringUtils.containsIgnoreCase(item.getTerm(), "end_with")) {
|
||||
if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(field.getType(), "NCHAR"))
|
||||
&& !isCross
|
||||
&& StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNEndValue(value);
|
||||
} else {
|
||||
whereValue = toEndValue(value);
|
||||
}
|
||||
} else {
|
||||
// 如果是时间字段过滤,当条件是等于和不等于的时候转换成between和not between
|
||||
if (field.getDeType() == 1) {
|
||||
@@ -294,6 +312,14 @@ public class CustomWhere2Str {
|
||||
return "'%" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toStartValue(String value) {
|
||||
return "'" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toEndValue(String value) {
|
||||
return "'%" + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNQuotedValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
@@ -302,6 +328,14 @@ public class CustomWhere2Str {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + "%" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNStartValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNEndValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + "%" + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
|
||||
private static String sanitizeNumberLiteral(String value) {
|
||||
String normalized = StringUtils.trimToEmpty(value);
|
||||
if (!NUMBER_PATTERN.matcher(normalized).matches()) {
|
||||
|
||||
@@ -222,6 +222,60 @@ public class ExtWhere2Str {
|
||||
whereValue = toLikeValue(value.get(0));
|
||||
}
|
||||
}
|
||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "start_with")) {
|
||||
// tree的情况需额外处理
|
||||
if (request.getIsTree()) {
|
||||
List<DatasetTableFieldDTO> datasetTableFieldList = request.getDatasetTableFieldList();
|
||||
boolean hasN = false;
|
||||
for (DatasetTableFieldDTO dto : datasetTableFieldList) {
|
||||
if (StringUtils.containsIgnoreCase(dto.getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(dto.getType(), "NCHAR")) {
|
||||
hasN = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasN && !isCross && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNStartValue(value.get(0));
|
||||
} else {
|
||||
whereValue = toStartValue(value.get(0));
|
||||
}
|
||||
} else {
|
||||
if ((StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR"))
|
||||
&& !isCross
|
||||
&& StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNStartValue(value.get(0));
|
||||
} else {
|
||||
whereValue = toStartValue(value.get(0));
|
||||
}
|
||||
}
|
||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "end_with")) {
|
||||
// tree的情况需额外处理
|
||||
if (request.getIsTree()) {
|
||||
List<DatasetTableFieldDTO> datasetTableFieldList = request.getDatasetTableFieldList();
|
||||
boolean hasN = false;
|
||||
for (DatasetTableFieldDTO dto : datasetTableFieldList) {
|
||||
if (StringUtils.containsIgnoreCase(dto.getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(dto.getType(), "NCHAR")) {
|
||||
hasN = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasN && !isCross && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNEndValue(value.get(0));
|
||||
} else {
|
||||
whereValue = toEndValue(value.get(0));
|
||||
}
|
||||
} else {
|
||||
if ((StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR"))
|
||||
&& !isCross
|
||||
&& StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNEndValue(value.get(0));
|
||||
} else {
|
||||
whereValue = toEndValue(value.get(0));
|
||||
}
|
||||
}
|
||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
||||
if (request.getDatasetTableField().getDeType() == 1) {
|
||||
if (request.getDatasetTableField().getDeExtractType() == 2
|
||||
@@ -327,6 +381,14 @@ public class ExtWhere2Str {
|
||||
return "'%" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toStartValue(String value) {
|
||||
return "'" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toEndValue(String value) {
|
||||
return "'%" + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNQuotedValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
@@ -335,6 +397,14 @@ public class ExtWhere2Str {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + "%" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNStartValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNEndValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + "%" + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
|
||||
private static String sanitizeNumberLiteral(String value) {
|
||||
String normalized = StringUtils.trimToEmpty(value);
|
||||
if (!NUMBER_PATTERN.matcher(normalized).matches()) {
|
||||
|
||||
@@ -224,6 +224,24 @@ public class WhereTree2Str {
|
||||
} else {
|
||||
whereValue = toLikeValue(value);
|
||||
}
|
||||
} else if (StringUtils.containsIgnoreCase(item.getTerm(), "start_with")) {
|
||||
if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(field.getType(), "NCHAR"))
|
||||
&& !isCross
|
||||
&& StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNStartValue(value);
|
||||
} else {
|
||||
whereValue = toStartValue(value);
|
||||
}
|
||||
} else if (StringUtils.containsIgnoreCase(item.getTerm(), "end_with")) {
|
||||
if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR")
|
||||
|| StringUtils.containsIgnoreCase(field.getType(), "NCHAR"))
|
||||
&& !isCross
|
||||
&& StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) {
|
||||
whereValue = toSqlServerNEndValue(value);
|
||||
} else {
|
||||
whereValue = toEndValue(value);
|
||||
}
|
||||
} else {
|
||||
// 如果是时间字段过滤,当条件是等于和不等于的时候转换成between和not between
|
||||
if (field.getDeType() == 1) {
|
||||
@@ -292,6 +310,14 @@ public class WhereTree2Str {
|
||||
return "'%" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toStartValue(String value) {
|
||||
return "'" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toEndValue(String value) {
|
||||
return "'%" + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNQuotedValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
@@ -299,4 +325,12 @@ public class WhereTree2Str {
|
||||
private static String toSqlServerNLikeValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + "%" + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNStartValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + sanitizeSqlLiteral(value) + "%'";
|
||||
}
|
||||
|
||||
private static String toSqlServerNEndValue(String value) {
|
||||
return "'" + SQLConstants.MSSQL_N_PREFIX + "%" + sanitizeSqlLiteral(value) + "'";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user