diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java index 77e64a5e83..37602a3f99 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetGroupManage.java @@ -9,7 +9,8 @@ import io.dataease.api.dataset.union.UnionDTO; import io.dataease.api.dataset.vo.DataSetBarVO; import io.dataease.api.permissions.relation.api.RelationApi; import io.dataease.commons.constants.OptConstants; -import io.dataease.dao.auto.entity.*; +import io.dataease.dao.auto.entity.CoreDatasetGroup; +import io.dataease.dao.auto.entity.CoreDatasetTable; import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupRepository; import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableRepository; import io.dataease.dataset.dao.ext.po.DataSetNodePO; @@ -19,10 +20,14 @@ import io.dataease.dataset.utils.FieldUtils; import io.dataease.dataset.utils.TableUtils; import io.dataease.datasource.dao.auto.repository.CoreDatasourceRepository; import io.dataease.engine.constant.ExtFieldConstant; +import io.dataease.engine.func.FunctionConstant; +import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.api.PluginManageApi; import io.dataease.extensions.datasource.dto.DatasetTableDTO; import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceDTO; +import io.dataease.extensions.datasource.model.SQLObj; import io.dataease.extensions.view.dto.SqlVariableDetails; import io.dataease.i18n.Translator; import io.dataease.license.config.XpackInteract; @@ -73,6 +78,8 @@ public class DatasetGroupManage { private RelationApi relationManage; @Autowired private CoreDatasourceRepository coreDatasourceRepository; + @Autowired(required = false) + private PluginManageApi pluginManage; private final JPAQueryFactory queryFactory; @@ -609,12 +616,27 @@ public class DatasetGroupManage { if (CollectionUtils.isNotEmpty(ids)) { var dsList = coreDatasetGroupRepository.findAllById(ids); if (CollectionUtils.isNotEmpty(dsList)) { + SQLObj tableObj = new SQLObj(); + tableObj.setTableAlias(""); dsList.forEach(ds -> { DatasetTableDTO dto = new DatasetTableDTO(); BeanUtils.copyBean(dto, ds); var fields = datasetTableFieldManage.listFieldsWithPermissions(ds.getId()); - List dimensionList = fields.stream().filter(ele -> StringUtils.equalsIgnoreCase(ele.getGroupType(), "d")).toList(); - List quotaList = fields.stream().filter(ele -> StringUtils.equalsIgnoreCase(ele.getGroupType(), "q")).toList(); + var p_fields = fields.stream().filter(ele -> { + boolean flag = true; + if (Objects.equals(ele.getExtField(), ExtFieldConstant.EXT_CALC)) { + String originField = Utils.calcFieldRegex(ele, tableObj, fields, true, null, Utils.mergeParam(Utils.getParams(fields), null), pluginManage); + for (String func : FunctionConstant.AGG_FUNC) { + if (Utils.matchFunction(func, originField)) { + flag = false; + break; + } + } + } + return flag; + }).toList(); + List dimensionList = p_fields.stream().filter(ele -> StringUtils.equalsIgnoreCase(ele.getGroupType(), "d")).toList(); + List quotaList = p_fields.stream().filter(ele -> StringUtils.equalsIgnoreCase(ele.getGroupType(), "q")).toList(); Map> map = new LinkedHashMap<>(); DatasetUtils.listEncode(dimensionList); DatasetUtils.listEncode(quotaList);