diff --git a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java
index 83c73fc1ca..6729d39558 100644
--- a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java
+++ b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java
@@ -2,17 +2,16 @@ package io.dataease.auth.filter;
import io.dataease.auth.entity.ASKToken;
import io.dataease.auth.entity.JWTToken;
-
import io.dataease.auth.handler.ApiKeyHandler;
-
+import io.dataease.commons.license.DefaultLicenseService;
+import io.dataease.commons.license.F2CLicenseResponse;
+import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.commons.utils.LogUtil;
import io.dataease.commons.utils.TokenCacheUtils;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
-
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -26,6 +25,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
public final static String expireMessage = "Login token is expire.";
+ public final static String licMessage = "license invalid";
/**
@@ -49,6 +49,17 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
if (ApiKeyHandler.isApiKeyCall(httpServletRequest)) {
+ DefaultLicenseService licenseService = CommonBeanFactory.getBean(DefaultLicenseService.class);
+ F2CLicenseResponse licenseResponse = null;
+ try {
+ licenseResponse = licenseService.validateLicense();
+ } catch (Exception e) {
+ throw new AuthenticationException(licMessage);
+ }
+ if (licenseResponse.getStatus() != F2CLicenseResponse.Status.valid) {
+ throw new AuthenticationException(licMessage);
+ }
+
ASKToken askToken = ApiKeyHandler.buildToken(httpServletRequest);
getSubject(request, response).login(askToken);
@@ -87,6 +98,8 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
LogUtil.error(e);
if (e instanceof AuthenticationException && StringUtils.equals(e.getMessage(), expireMessage)) {
responseExpire(request, response, e);
+ } else if (StringUtils.equals(licMessage, e.getMessage())) {
+ responseLicError(request, response, e);
} else {
tokenError(request, response, e);
}
@@ -127,4 +140,10 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
httpServletResponse.setHeader("authentication-status", "login_expire");
}
+ private void responseLicError(ServletRequest req, ServletResponse resp, Exception e1) {
+ HttpServletResponse httpServletResponse = (HttpServletResponse) resp;
+ httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status");
+ httpServletResponse.setHeader("authentication-status", licMessage);
+ }
+
}
diff --git a/backend/src/main/java/io/dataease/controller/sys/MsgController.java b/backend/src/main/java/io/dataease/controller/sys/MsgController.java
index 9870df1a87..d68ba912bf 100644
--- a/backend/src/main/java/io/dataease/controller/sys/MsgController.java
+++ b/backend/src/main/java/io/dataease/controller/sys/MsgController.java
@@ -131,6 +131,9 @@ public class MsgController {
if (msgChannelId == 5L) {
return authUserService.supportLark();
}
+ if (msgChannelId == 6L) {
+ return authUserService.supportLarksuite();
+ }
return true;
}).collect(Collectors.toList());
}
diff --git a/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.java b/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.java
index a1fdf5af1a..8e62c241e3 100644
--- a/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.java
+++ b/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.java
@@ -17,6 +17,8 @@ public interface ExtPanelGroupMapper {
//会级联删除pid 下的所有数据
int deleteCircle(@Param("pid") String pid, @Param("nodeType") String nodeType);
+ int deleteLinkDefaultCircle(@Param("pid") String pid);
+
int deleteCircleView(@Param("pid") String pid, @Param("nodeType") String nodeType);
int deleteCircleViewCache(@Param("pid") String pid, @Param("nodeType") String nodeType);
diff --git a/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.xml b/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.xml
index 6b3d058df8..6e54ab20fb 100644
--- a/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.xml
+++ b/backend/src/main/java/io/dataease/ext/ExtPanelGroupMapper.xml
@@ -202,6 +202,10 @@
ORDER BY panel_group.node_type desc, CONVERT(panel_group.name using gbk)
+
+ delete from panel_group where FIND_IN_SET(panel_group.source, GET_PANEL_GROUP_WITH_CHILDREN(#{pid}))
+
+
delete
from panel_group
@@ -211,7 +215,6 @@
panel_group.source = #{pid}
or FIND_IN_SET(panel_group.id, GET_PANEL_GROUP_WITH_CHILDREN(#{pid}))
- or FIND_IN_SET(panel_group.source, GET_PANEL_GROUP_WITH_CHILDREN(#{pid}))
diff --git a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java
index d4b9f6ab49..5c6cc33712 100644
--- a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java
@@ -1109,7 +1109,9 @@ public class DorisQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java
index 8b18cb33ce..258c4254ca 100644
--- a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java
+++ b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlDDLProvider.java
@@ -39,8 +39,11 @@ public class MysqlDDLProvider extends DDLProviderImpl {
for (int i = 0; i < strings.length; i++) {
if (StringUtils.isEmpty(strings[i])) {
strings1[i] = null;
- } else {
- strings1[i] = strings[i].replace("'", "\\'");
+ continue;
+ }
+ strings1[i] = strings[i].replace("'", "\\'");
+ if(strings1[i].equals("/")){
+ strings1[i] = "//";
}
}
values.append("('").append(UUID.randomUUID())
diff --git a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java
index 4c8591d85b..070dc44f76 100644
--- a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java
@@ -1096,7 +1096,9 @@ public class MysqlQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
if (request.getDatasetTableField().getDeExtractType() == 2
diff --git a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java
index 733b7fcaea..bd791c3563 100644
--- a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java
@@ -1091,7 +1091,7 @@ public class CKQueryProvider extends QueryProvider {
return null;
}
- AtomicReference atomicReference = new AtomicReference<>();
+ List chartExtFilterRequests = new ArrayList<>();
requestList.forEach(request -> {
DatasetTableField datasetTableField = request.getDatasetTableField();
List requestValue = request.getValue();
@@ -1106,12 +1106,12 @@ public class CKQueryProvider extends QueryProvider {
requestCopy.setValue(new ArrayList() {{
add(String.format(toDateTime64, "'" + simpleDateFormat.format(new Date(Long.parseLong(requestValue.get(1)))) + "'"));
}});
- atomicReference.set(requestCopy);
+ chartExtFilterRequests.add(requestCopy);
}
});
- if (ObjectUtils.isNotEmpty(atomicReference.get())) {
- requestList.add(atomicReference.get());
+ if (CollectionUtils.isNotEmpty(chartExtFilterRequests)) {
+ requestList.addAll(chartExtFilterRequests);
}
List list = new ArrayList<>();
for (ChartExtFilterRequest request : requestList) {
@@ -1181,7 +1181,9 @@ public class CKQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java
index 80252527f8..4dd687b3de 100644
--- a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java
@@ -1169,7 +1169,9 @@ public class Db2QueryProvider extends QueryProvider {
whereValue = "('" + StringUtils.join(value, "','") + "')";
}
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java
index fd02228338..df01b29c0e 100644
--- a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java
@@ -1119,7 +1119,9 @@ public class EsQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java
index 8ec11f5649..c71832f84a 100644
--- a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java
@@ -1075,7 +1075,9 @@ public class HiveQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java
index 210ff42c02..1d09645722 100644
--- a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java
@@ -1077,7 +1077,9 @@ public class ImpalaQueryProvider extends QueryProvider {
whereValue = "('" + StringUtils.join(value, "','") + "')";
}
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java
index 34730987a4..73218b28d8 100644
--- a/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java
@@ -979,7 +979,9 @@ public class MongoQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java
index 6527c5b951..60249dd169 100644
--- a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java
@@ -1104,7 +1104,9 @@ public class MysqlQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
if (request.getDatasetTableField().getDeExtractType() == 2
diff --git a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java
index 4f97729539..9bc77ab309 100644
--- a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java
@@ -1259,7 +1259,9 @@ public class OracleQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
diff --git a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java
index 4a102bd3d8..b33dbb7190 100644
--- a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java
@@ -1127,7 +1127,9 @@ public class PgQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java
index 52636edbfd..33156e439d 100644
--- a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java
@@ -1108,7 +1108,9 @@ public class RedshiftQueryProvider extends QueryProvider {
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
diff --git a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java
index 8ab6fced1f..1ae1bf7049 100644
--- a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java
@@ -54,6 +54,7 @@ public class SqlserverQueryProvider extends QueryProvider {
case "NCHAR":
case "NTEXT":
case "VARCHAR":
+ case "NVARCHAR":
case "TEXT":
case "TINYTEXT":
case "MEDIUMTEXT":
@@ -898,11 +899,19 @@ public class SqlserverQueryProvider extends QueryProvider {
} else if (StringUtils.equalsIgnoreCase(item.getTerm(), "not_empty")) {
whereValue = "''";
} else if (StringUtils.containsIgnoreCase(item.getTerm(), "in") || StringUtils.containsIgnoreCase(item.getTerm(), "not in")) {
- whereValue = "('" + String.join("','", value.split(",")) + "')";
+ if(field.getType().equals("NVARCHAR")){
+ whereValue = Arrays.asList(value.split(",")).stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(","));
+ }else {
+ whereValue = "('" + String.join("','", value.split(",")) + "')";
+ }
} else if (StringUtils.containsIgnoreCase(item.getTerm(), "like")) {
whereValue = "'%" + value + "%'";
} else {
- whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value);
+ if(field.getType().equals("NVARCHAR")){
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, value);
+ }else {
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value);
+ }
}
SQLObj build = SQLObj.builder()
.whereField(whereName)
@@ -1025,11 +1034,19 @@ public class SqlserverQueryProvider extends QueryProvider {
} else if (StringUtils.equalsIgnoreCase(filterItemDTO.getTerm(), "not_empty")) {
whereValue = "''";
} else if (StringUtils.containsIgnoreCase(filterItemDTO.getTerm(), "in") || StringUtils.containsIgnoreCase(filterItemDTO.getTerm(), "not in")) {
- whereValue = "('" + String.join("','", value.split(",")) + "')";
+ if(field.getType().equals("NVARCHAR")){
+ whereValue = Arrays.asList(value.split(",")).stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(","));
+ }else {
+ whereValue = "('" + String.join("','", value.split(",")) + "')";
+ }
} else if (StringUtils.containsIgnoreCase(filterItemDTO.getTerm(), "like")) {
whereValue = "'%" + value + "%'";
} else {
- whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value);
+ if(field.getType().equals("NVARCHAR")){
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, value);
+ }else {
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value);
+ }
}
list.add(SQLObj.builder()
.whereField(whereName)
@@ -1129,9 +1146,15 @@ public class SqlserverQueryProvider extends QueryProvider {
String whereValue = "";
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
- whereValue = "('" + StringUtils.join(value, "','") + "')";
+ if(request.getDatasetTableField().getType().equals("NVARCHAR")){
+ whereValue = value.stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(","));
+ }else {
+ whereValue = "('" + StringUtils.join(value, "','") + "')";
+ }
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
- whereValue = "'%" + value.get(0) + "%'";
+ String keyword = value.get(0).toUpperCase();
+ whereValue = "'%" + keyword + "%'";
+ whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == DeTypeConstants.DE_TIME) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -1142,7 +1165,13 @@ public class SqlserverQueryProvider extends QueryProvider {
whereValue = String.format(SqlServerSQLConstants.WHERE_BETWEEN, value.get(0), value.get(1));
}
} else {
- whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value.get(0));
+
+ if(request.getDatasetTableField().getType().equals("NVARCHAR")){
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, value.get(0));
+ }else {
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, value.get(0));
+ }
+
}
list.add(SQLObj.builder()
.whereField(whereName)
@@ -1299,11 +1328,19 @@ public class SqlserverQueryProvider extends QueryProvider {
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) {
whereValue = "''";
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) {
- whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')";
+ if(y.getType().equals("NVARCHAR")){
+ whereValue = Arrays.asList(f.getValue().split(",")).stream().map(str ->{return "N"+ str;}).collect(Collectors.joining(","));
+ }else {
+ whereValue = "('" + String.join("','", f.getValue().split(",")) + "')";
+ }
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) {
whereValue = "'%" + f.getValue() + "%'";
} else {
- whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, f.getValue());
+ if(y.getType().equals("NVARCHAR")){
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE_CH, f.getValue());
+ }else {
+ whereValue = String.format(SqlServerSQLConstants.WHERE_VALUE_VALUE, f.getValue());
+ }
}
list.add(SQLObj.builder()
.whereField(fieldAlias)
diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java
index bc5239baa8..6077bbe9eb 100644
--- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java
+++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java
@@ -725,7 +725,9 @@ public class ChartViewService {
xAxis = xAxis.stream().filter(item -> chartViewFieldNameList.contains(item.getDataeaseName()) || (!desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName()))).collect(Collectors.toList());
yAxis = yAxis.stream().filter(item -> chartViewFieldNameList.contains(item.getDataeaseName()) || (!desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName()))).collect(Collectors.toList());
}
-
+ Map chartFieldMap = Stream.of(xAxisBase, xAxisExt, extStack)
+ .flatMap(Collection::stream)
+ .collect(Collectors.toMap(ChartViewFieldDTO::getId, o -> o, ((p, n) -> p)));
// 过滤来自仪表板的条件
List extFilterList = new ArrayList<>();
//组件过滤条件
@@ -834,6 +836,14 @@ public class ChartViewService {
if (!desensitizationList.keySet().contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())) {
request.setDatasetTableField(datasetTableField);
if (StringUtils.equalsIgnoreCase(datasetTableField.getTableId(), view.getTableId())) {
+// 设置日期格式,以视图字段设置的格式为准,先不处理组件的条件,因为格式无法统一。
+ if (request.getDatasetTableField() != null) {
+ ChartViewFieldDTO chartViewFieldDTO = chartFieldMap.get(request.getDatasetTableField().getId());
+ if (chartViewFieldDTO != null) {
+ request.setDatePattern(chartViewFieldDTO.getDatePattern());
+ request.setDateStyle(chartViewFieldDTO.getDateStyle());
+ }
+ }
if (CollectionUtils.isNotEmpty(request.getViewIds())) {
if (request.getViewIds().contains(view.getId())) {
extFilterList.add(request);
@@ -883,9 +893,6 @@ public class ChartViewService {
ChartDrillRequest head = drillRequestList.get(0);
Map dimValMap = new HashMap<>();
head.getDimensionList().forEach(item -> dimValMap.put(item.getId(), item.getValue()));
- Map fieldMap = Stream.of(xAxisBase, xAxisExt, extStack)
- .flatMap(Collection::stream)
- .collect(Collectors.toMap(ChartViewFieldDTO::getId, o -> o, ((p, n) -> p)));
for (int i = 0; i < drillRequestList.size(); i++) {
ChartDrillRequest request = drillRequestList.get(i);
ChartViewFieldDTO chartViewFieldDTO = drill.get(i);
@@ -896,7 +903,7 @@ public class ChartViewService {
fieldsToFilter.add(chartViewFieldDTO);
dimValMap.put(requestDimension.getId(), requestDimension.getValue());
if (!checkDrillExist(xAxis, extStack, requestDimension.getId(), view)) {
- fieldMap.put(chartViewFieldDTO.getId(), chartViewFieldDTO);
+ chartFieldMap.put(chartViewFieldDTO.getId(), chartViewFieldDTO);
xAxis.add(chartViewFieldDTO);
}
if (i == drillRequestList.size() - 1) {
@@ -916,8 +923,8 @@ public class ChartViewService {
DatasetTableField datasetTableField = dataSetTableFieldsService.get(tmpField.getId());
tmpFilter.setDatasetTableField(datasetTableField);
tmpFilter.setOperator("in");
- tmpFilter.setDateStyle(fieldMap.get(tmpField.getId()).getDateStyle());
- tmpFilter.setDatePattern(fieldMap.get(tmpField.getId()).getDatePattern());
+ tmpFilter.setDateStyle(chartFieldMap.get(tmpField.getId()).getDateStyle());
+ tmpFilter.setDatePattern(chartFieldMap.get(tmpField.getId()).getDatePattern());
tmpFilter.setFieldId(tmpField.getId());
tmpFilter.setValue(Collections.singletonList(dimValMap.get(tmpField.getId())));
extFilterList.add(tmpFilter);
diff --git a/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java b/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java
index 88646f5326..4df9247e53 100644
--- a/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java
+++ b/backend/src/main/java/io/dataease/service/chart/util/ChartDataBuild.java
@@ -1,8 +1,8 @@
package io.dataease.service.chart.util;
import cn.hutool.core.util.ArrayUtil;
-import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs;
import io.dataease.dto.chart.*;
+import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs;
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
import io.dataease.plugins.xpack.auth.dto.request.ColumnPermissionItem;
import org.apache.commons.collections4.CollectionUtils;
@@ -1071,11 +1071,11 @@ public class ChartDataBuild {
break;
}
if (originStr.length() >= columnPermissionItem.getDesensitizationRule().getM() && originStr.length() >= columnPermissionItem.getDesensitizationRule().getN()) {
- desensitizationStr = "***" + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, columnPermissionItem.getDesensitizationRule().getN()) + "***";
+ desensitizationStr = buildPrefix(columnPermissionItem.getDesensitizationRule().getM()) + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, columnPermissionItem.getDesensitizationRule().getN()) + "***";
break;
}
if (originStr.length() >= columnPermissionItem.getDesensitizationRule().getM() && originStr.length() < columnPermissionItem.getDesensitizationRule().getN()) {
- desensitizationStr = "***" + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, originStr.length());
+ desensitizationStr = buildPrefix(columnPermissionItem.getDesensitizationRule().getM()) + StringUtils.substring(originStr, columnPermissionItem.getDesensitizationRule().getM() - 1, originStr.length());
}
break;
default:
@@ -1086,6 +1086,18 @@ public class ChartDataBuild {
return desensitizationStr;
}
+
+ private static String buildPrefix(Integer integer) {
+ String prefix = "";
+ if (integer <= 1) {
+ return prefix;
+ }
+ for (int i = 0; i < integer - 1; i++) {
+ prefix = prefix + "*";
+ }
+ return prefix;
+ }
+
private static Map transTableNormal(List fields, ChartViewWithBLOBs view, List data, Map desensitizationList) {
Map map = new TreeMap<>();
List