Merge pull request #10955 from dataease/pr@dev-v2@feat_filter

feat: 下拉组件的下拉选择展示支持全部和默认两种选择 #10770
This commit is contained in:
Junjun 2024-07-15 14:11:02 +08:00 committed by GitHub
commit 938afc0ac7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 35 additions and 18 deletions

View File

@ -1,10 +1,7 @@
package io.dataease.dataset.manage;
import io.dataease.api.chart.dto.DeSortField;
import io.dataease.api.dataset.dto.BaseTreeNodeDTO;
import io.dataease.api.dataset.dto.EnumValueRequest;
import io.dataease.api.dataset.dto.PreviewSqlDTO;
import io.dataease.api.dataset.dto.SqlLogDTO;
import io.dataease.api.dataset.dto.*;
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
import io.dataease.api.dataset.union.DatasetTableInfoDTO;
import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO;
@ -435,10 +432,10 @@ public class DatasetDataManage {
}
}
public List<String> getFieldEnum(List<Long> ids) throws Exception {
public List<String> getFieldEnum(MultFieldValuesRequest multFieldValuesRequest) throws Exception {
// 根据前端传的查询组件field ids获取所有字段枚举值并去重合并
List<List<String>> list = new ArrayList<>();
for (Long id : ids) {
for (Long id : multFieldValuesRequest.getFieldIds()) {
DatasetTableFieldDTO field = datasetTableFieldManage.selectById(id);
if (field == null) {
DEException.throwException(Translator.get("i18n_no_field"));
@ -497,7 +494,12 @@ public class DatasetDataManage {
Field2SQLObj.field2sqlObj(sqlMeta, fields, allFields, crossDs, dsMap);
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap);
Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap);
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, true, 0, 1000);
String querySQL;
if (multFieldValuesRequest.getResultMode() == 0) {
querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, true, 0, 1000);
} else {
querySQL = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, true);
}
querySQL = provider.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
logger.info("calcite data enum sql: " + querySQL);
@ -730,7 +732,12 @@ public class DatasetDataManage {
ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, allFields, crossDs, dsMap);
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap);
Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap);
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, sortDistinct && ids.size() == 1, 0, 1000);
String querySQL;
if (request.getResultMode() == 0) {
querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, sortDistinct && ids.size() == 1, 0, 1000);
} else {
querySQL = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, sortDistinct && ids.size() == 1);
}
querySQL = provider.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
logger.info("calcite data enum sql: " + querySQL);
@ -785,7 +792,8 @@ public class DatasetDataManage {
return previewData;
}
public List<BaseTreeNodeDTO> getFieldValueTree(List<Long> ids) throws Exception {
public List<BaseTreeNodeDTO> getFieldValueTree(MultFieldValuesRequest multFieldValuesRequest) throws Exception {
List<Long> ids = multFieldValuesRequest.getFieldIds();
if (ids.isEmpty()) {
DEException.throwException("no field selected.");
}
@ -855,7 +863,12 @@ public class DatasetDataManage {
Field2SQLObj.field2sqlObj(sqlMeta, fields, allFields, crossDs, dsMap);
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap);
Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap);
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, false, 0, 1000);
String querySQL;
if (multFieldValuesRequest.getResultMode() == 0) {
querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, false, 0, 1000);
} else {
querySQL = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, false);
}
querySQL = provider.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
logger.info("filter tree sql: " + querySQL);

View File

@ -3,6 +3,7 @@ package io.dataease.dataset.server;
import io.dataease.api.dataset.DatasetDataApi;
import io.dataease.api.dataset.dto.BaseTreeNodeDTO;
import io.dataease.api.dataset.dto.EnumValueRequest;
import io.dataease.api.dataset.dto.MultFieldValuesRequest;
import io.dataease.api.dataset.dto.PreviewSqlDTO;
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
import io.dataease.dataset.manage.DatasetDataManage;
@ -46,9 +47,9 @@ public class DatasetDataServer implements DatasetDataApi {
}
@Override
public List<String> getFieldEnum(List<Long> ids) {
public List<String> getFieldEnum(MultFieldValuesRequest multFieldValuesRequest) {
try {
return datasetDataManage.getFieldEnum(ids);
return datasetDataManage.getFieldEnum(multFieldValuesRequest);
} catch (Exception e) {
e.printStackTrace();
LogUtil.error(e);
@ -73,9 +74,9 @@ public class DatasetDataServer implements DatasetDataApi {
}
@Override
public List<BaseTreeNodeDTO> getFieldValueTree(List<Long> ids) throws Exception {
public List<BaseTreeNodeDTO> getFieldValueTree(MultFieldValuesRequest multFieldValuesRequest) throws Exception {
try {
return datasetDataManage.getFieldValueTree(ids);
return datasetDataManage.getFieldValueTree(multFieldValuesRequest);
} catch (Exception e) {
e.printStackTrace();
LogUtil.error(e);

View File

@ -70,7 +70,7 @@ public class DatasetFieldServer implements DatasetTableApi {
@Override
public List<String> multFieldValuesForPermissions(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
return datasetDataManage.getFieldEnum(multFieldValuesRequest.getFieldIds());
return datasetDataManage.getFieldEnum(multFieldValuesRequest);
}
@Override

View File

@ -3,6 +3,7 @@ package io.dataease.api.dataset;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.api.dataset.dto.BaseTreeNodeDTO;
import io.dataease.api.dataset.dto.EnumValueRequest;
import io.dataease.api.dataset.dto.MultFieldValuesRequest;
import io.dataease.api.dataset.dto.PreviewSqlDTO;
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
import io.dataease.extensions.datasource.dto.DatasetTableDTO;
@ -39,7 +40,7 @@ public interface DatasetDataApi {
@Operation(summary = "获取字段枚举值")
@PostMapping("enumValue")
List<String> getFieldEnum(@RequestBody List<Long> ids) throws Exception;
List<String> getFieldEnum(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception;
@Operation(summary = "获取字段枚举值(多字段)")
@PostMapping("enumValueObj")
@ -51,5 +52,5 @@ public interface DatasetDataApi {
@Operation(summary = "获取下拉树数据", hidden = true)
@PostMapping("getFieldTree")
List<BaseTreeNodeDTO> getFieldValueTree(@RequestBody List<Long> ids) throws Exception;
List<BaseTreeNodeDTO> getFieldValueTree(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception;
}

View File

@ -16,4 +16,5 @@ public class EnumValueRequest {
private String sort;// 排序 asc||desc
private String searchText;// 搜索内容 field like '%text%' 拼接到SQL
private List<ChartExtFilterDTO> filter;// 级联查询条件多个条件之间用and拼接到SQL
private Integer resultMode = 0;// 请求条数0-默认1-全部
}

View File

@ -9,8 +9,9 @@ import java.util.List;
@Data
public class MultFieldValuesRequest {
List<Long> fieldIds = new ArrayList<>();
Long userId= null;
Long userId = null;
private DeSortDTO sort;
private Integer resultMode = 0;
}