diff --git a/backend/pom.xml b/backend/pom.xml
index cf9bf9be59..0c1bd80ccd 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -207,7 +207,7 @@
io.dataease
dataease-plugin-interface
- 1.5
+ 1.6
cn.hutool
@@ -387,34 +387,34 @@
-
- org.apache.maven.plugins
- maven-antrun-plugin
-
-
-
- main-class-placement
- generate-resources
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- run
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java
index 5261a66430..bca5c5202b 100644
--- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java
+++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.java
@@ -9,4 +9,5 @@ public interface ExtDataSetTableMapper {
List search(DataSetTableRequest request);
DataSetTableDTO searchOne(DataSetTableRequest request);
+
}
diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml
index d64322478b..91abf6daea 100644
--- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml
+++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml
@@ -7,6 +7,12 @@
+
+
+
+
+
+
+
diff --git a/backend/src/main/java/io/dataease/commons/license/DefaultLicenseService.java b/backend/src/main/java/io/dataease/commons/license/DefaultLicenseService.java
index 4ec131a818..d4b8224600 100644
--- a/backend/src/main/java/io/dataease/commons/license/DefaultLicenseService.java
+++ b/backend/src/main/java/io/dataease/commons/license/DefaultLicenseService.java
@@ -19,7 +19,7 @@ public class DefaultLicenseService {
private InnerLicenseService innerLicenseService;
private static final String LICENSE_ID = "fit2cloud_license";
- private static final String validatorUtil = "/usr/bin/validator";
+ private static final String validatorUtil = "/usr/local/bin/validator";
private static final String product = "DataEase";
public F2CLicenseResponse validateLicense(String product, String licenseKey) {
diff --git a/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java b/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java
new file mode 100644
index 0000000000..378429c9b0
--- /dev/null
+++ b/backend/src/main/java/io/dataease/plugins/server/RowPermissionsController.java
@@ -0,0 +1,39 @@
+package io.dataease.plugins.server;
+
+import io.dataease.plugins.config.SpringContextUtil;
+import io.dataease.plugins.xpack.auth.dto.request.DataSetRowPermissionsDTO;
+import io.dataease.plugins.xpack.auth.dto.request.DatasetRowPermissions;
+import io.dataease.plugins.xpack.auth.dto.response.XpackSysAuthDetailDTO;
+import io.dataease.plugins.xpack.auth.service.RowPermissionService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+@RestController
+@RequestMapping("plugin/dataset/rowPermissions")
+public class RowPermissionsController {
+
+ @ApiOperation("保存")
+ @PostMapping("save")
+ public void save(@RequestBody DatasetRowPermissions datasetRowPermissions) throws Exception {
+ RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
+ rowPermissionService.save(datasetRowPermissions);
+ }
+
+ @ApiOperation("分页查询")
+ @PostMapping("/list")
+ public List rowPermissions(@RequestBody XpackSysAuthDetailDTO request) {
+ RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
+ return rowPermissionService.searchRowPermissions(request);
+ }
+
+ @ApiOperation("删除")
+ @GetMapping("/delete/{id}")
+ public void dataSetRowPermissionInfo(@PathVariable String id) {
+ RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
+ rowPermissionService.delete(id);
+ }
+
+}
diff --git a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java
index 9121d531d1..9282d72b88 100644
--- a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java
+++ b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java
@@ -41,7 +41,15 @@ public class XAuthServer {
@I18n
public ListauthDetailsModel(@PathVariable String authType){
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
- return sysAuthService.searchAuthDetailsModel(authType);
+ List authDetails = sysAuthService.searchAuthDetailsModel(authType);
+ if(authType.equalsIgnoreCase("dataset")){
+ XpackSysAuthDetail xpackSysAuthDetail = new XpackSysAuthDetail();
+ xpackSysAuthDetail.setPrivilegeName("i18n_auth_row_permission");
+ xpackSysAuthDetail.setPrivilegeType(20);
+ xpackSysAuthDetail.setPrivilegeValue(1);
+ authDetails.add(0,xpackSysAuthDetail);
+ }
+ return authDetails;
}
@PostMapping("/authChange")
diff --git a/backend/src/main/java/io/dataease/provider/query/QueryProvider.java b/backend/src/main/java/io/dataease/provider/query/QueryProvider.java
index 9dc0bfeef3..8deeaf3d67 100644
--- a/backend/src/main/java/io/dataease/provider/query/QueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/QueryProvider.java
@@ -23,17 +23,17 @@ public abstract class QueryProvider {
public abstract String createSQLPreview(String sql, String orderBy);
- public abstract String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds);
+ public abstract String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter);
- public abstract String createQuerySQLAsTmp(String sql, List fields, boolean isGroup);
+ public abstract String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter);
- public abstract String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds);
+ public abstract String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter);
- public abstract String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup);
+ public abstract String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter);
- public abstract String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds);
+ public abstract String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter);
- public abstract String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup);
+ public abstract String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter);
public abstract String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view);
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 a2e9738d55..ac61b70b7e 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
@@ -107,7 +107,7 @@ public class CKQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -170,32 +170,36 @@ public class CKQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
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 b580d5f4e1..7cf3aac5d0 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
@@ -76,7 +76,7 @@ public class Db2QueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(Db2Constants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -139,30 +139,30 @@ public class Db2QueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
Integer size = (page - 1) * pageSize + realSize;
- return createQuerySQL(table, fields, isGroup, null) + String.format(" fetch first %s rows only; ", size);
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + String.format(" fetch first %s rows only; ", size);
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + String.format(" fetch first %s rows only; ", limit);
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + String.format(" fetch first %s rows only; ", limit);
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + String.format(" fetch first %s rows only; ", limit);
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + String.format(" fetch first %s rows only; ", limit);
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
Integer size = (page - 1) * pageSize + realSize;
- return createQuerySQLAsTmp(sql, fields, isGroup) + String.format(" fetch first %s rows only; ", size);
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + String.format(" fetch first %s rows only; ", size);
}
@Override
diff --git a/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java
index ab74c1a3d1..c4130e0015 100644
--- a/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java
+++ b/backend/src/main/java/io/dataease/provider/query/doris/DorisQueryProvider.java
@@ -78,7 +78,7 @@ public class DorisQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -140,6 +140,11 @@ public class DorisQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
+
if ((fields.size() > 0)) {
xOrders.add(SQLObj.builder()
.orderDirection("asc")
@@ -152,28 +157,28 @@ public class DorisQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sql + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sql + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
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 4c83334771..4e2f79bb9e 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
@@ -110,7 +110,7 @@ public class EsQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -169,32 +169,38 @@ public class EsQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
+
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null);
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null);
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter);
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup);
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter);
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup);
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter);
}
@Override
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 dbed986959..e59de722c7 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
@@ -71,7 +71,7 @@ public class HiveQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -130,32 +130,36 @@ public class HiveQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
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 f03a466497..8e932684e1 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
@@ -81,7 +81,7 @@ public class MongoQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -114,32 +114,36 @@ public class MongoQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
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 6db5c79d8d..84e0cb1e22 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
@@ -78,7 +78,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -137,32 +137,38 @@ public class MysqlQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
+
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
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 1979ed9058..334c59dcf7 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
@@ -93,7 +93,7 @@ public class OracleQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
@@ -107,6 +107,10 @@ public class OracleQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render();
}
@@ -182,33 +186,33 @@ public class OracleQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
List xFields = xFields(table, fields);
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
- sqlColumn(xFields), createQuerySQL(table, fields, isGroup, ds), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
+ sqlColumn(xFields), createQuerySQL(table, fields, isGroup, ds, customFilter), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
List xFields = xFields("(" + sqlFix(sql) + ")", fields);
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
- sqlColumn(xFields), createQuerySQLAsTmp(sql, fields, isGroup), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
+ sqlColumn(xFields), createQuerySQLAsTmp(sql, fields, isGroup, customFilter), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema();
return String.format("SELECT * from %s WHERE rownum <= %s ", schema + "." + String.format(OracleConstants.KEYWORD_TABLE, table), limit.toString());
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
return String.format("SELECT * from %s WHERE rownum <= %s ", "(" + sqlFix(sql) + ")", limit.toString());
}
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 a82cbef61b..1ace294670 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
@@ -97,7 +97,7 @@ public class PgQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -158,32 +158,36 @@ public class PgQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + limit + " offset 0";
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0";
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override
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 078f443178..5e1d380933 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
@@ -106,7 +106,7 @@ public class RedshiftQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@@ -167,32 +167,36 @@ public class RedshiftQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
- return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + limit + " offset 0";
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
+ return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
- return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0";
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
+ return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override
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 d68029c77b..807b0f893a 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
@@ -86,7 +86,7 @@ public class SqlserverQueryProvider extends QueryProvider {
}
@Override
- public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds) {
+ public String createQuerySQL(String table, List fields, boolean isGroup, Datasource ds, List customFilter) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
@@ -148,35 +148,39 @@ public class SqlserverQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
+ List customWheres = transCustomFilterList(tableObj, customFilter);
+ List wheres = new ArrayList<>();
+ if (customWheres != null) wheres.addAll(customWheres);
+ if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render();
}
@Override
- public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup) {
- return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
+ public String createQuerySQLAsTmp(String sql, List fields, boolean isGroup, List customFilter) {
+ return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
- public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
+ public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List customFilter) {
Integer size = (page - 1) * pageSize + realSize;
- return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQL(table, fields, isGroup, ds));
+ return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQL(table, fields, isGroup, ds, customFilter));
}
@Override
- public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds) {
+ public String createQueryTableWithLimit(String table, List fields, Integer limit, boolean isGroup, Datasource ds, List customFilter) {
String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema();
return String.format("SELECT top %s * from %s ", limit.toString(), schema + "." + table);
}
@Override
- public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
+ public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List customFilter) {
Integer size = (page - 1) * pageSize + realSize;
- return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQLAsTmp(sql, fields, isGroup));
+ return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQLAsTmp(sql, fields, isGroup, customFilter));
}
@Override
- public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup) {
+ public String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup, List customFilter) {
return String.format("SELECT top %s * from ( %s ) as DE_SQLSERVER_TMP ", limit.toString(), sqlFix(sql));
}
diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
index 284343fd47..436c3abf74 100644
--- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
+++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
@@ -1,7 +1,9 @@
package io.dataease.service.dataset;
+import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
+import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.base.domain.*;
import io.dataease.base.mapper.*;
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
@@ -16,19 +18,24 @@ import io.dataease.commons.utils.*;
import io.dataease.controller.request.dataset.DataSetGroupRequest;
import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.controller.request.dataset.DataSetTaskRequest;
-import io.dataease.controller.request.datasource.DatasourceRequest;
import io.dataease.controller.response.DataSetDetail;
+import io.dataease.dto.chart.ChartCustomFilterDTO;
+import io.dataease.dto.datasource.TableFiled;
+import io.dataease.plugins.config.SpringContextUtil;
+import io.dataease.plugins.xpack.auth.dto.request.DatasetRowPermissions;
+import io.dataease.plugins.xpack.auth.service.RowPermissionService;
+import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
+import io.dataease.provider.datasource.DatasourceProvider;
+import io.dataease.provider.datasource.JdbcProvider;
+import io.dataease.provider.ProviderFactory;
+import io.dataease.controller.request.datasource.DatasourceRequest;
import io.dataease.dto.dataset.*;
import io.dataease.dto.dataset.union.UnionDTO;
import io.dataease.dto.dataset.union.UnionItemDTO;
-import io.dataease.dto.dataset.union.UnionParamDTO;
-import io.dataease.dto.datasource.TableFiled;
+import io.dataease.dto.dataset.union.UnionParamDTO;;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.plugins.loader.ClassloaderResponsity;
-import io.dataease.provider.ProviderFactory;
-import io.dataease.provider.datasource.DatasourceProvider;
-import io.dataease.provider.datasource.JdbcProvider;
import io.dataease.provider.query.DDLProvider;
import io.dataease.provider.query.QueryProvider;
import org.apache.commons.collections4.CollectionUtils;
@@ -93,6 +100,7 @@ public class DataSetTableService {
private ExtDataSetGroupMapper extDataSetGroupMapper;
@Resource
private DatasetTableFieldMapper datasetTableFieldMapper;
+
private static final String lastUpdateTime = "${__last_update_time__}";
private static final String currentUpdateTime = "${__current_update_time__}";
@@ -431,11 +439,49 @@ public class DataSetTableService {
return map;
}
+ private List rowPermissions(String datasetId){
+ List datasetRowPermissions = new ArrayList<>();
+ Map beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((RowPermissionService.class));
+ if(beansOfType.keySet().size() == 0) {
+ return new ArrayList<>();
+ }
+ RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
+ datasetRowPermissions.addAll(rowPermissionService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getUserId()), "user"));
+ datasetRowPermissions.addAll(rowPermissionService.listDatasetRowPermissions(datasetId, AuthUtils.getUser().getRoles().stream().map(CurrentRoleDto::getId).collect(Collectors.toList()) , "role"));
+ datasetRowPermissions.addAll(rowPermissionService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getDeptId()), "dept"));
+ return datasetRowPermissions;
+ }
+
+ private DatasetTableField getFieldById(List fields, String fieldId){
+ DatasetTableField field = null;
+ for (DatasetTableField datasetTableField : fields) {
+ if(fieldId.equalsIgnoreCase(datasetTableField.getId())){
+ field = datasetTableField;
+ }
+ }
+ return field;
+ }
+
+
+ public List getCustomFilters(List fields, DatasetTable datasetTable) {
+ List customFilter = new ArrayList<>();
+ rowPermissions(datasetTable.getId()).forEach(datasetRowPermissions -> {
+ List