From 0dd419c7fea06949b40fc37e8dfd2950e6208bc9 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 26 May 2022 23:30:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A0=91=E5=BD=A2=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E5=AD=97=E6=AE=B5=E5=85=88=E5=90=8E=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F=E6=9E=84=E5=BB=BA=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/impl/direct/DirectFieldService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java index b0044def58..73ecc9f28f 100644 --- a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java +++ b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java @@ -1,6 +1,7 @@ package io.dataease.service.dataset.impl.direct; import com.google.gson.Gson; +import io.dataease.commons.exception.DEException; import io.dataease.commons.model.BaseTreeNode; import io.dataease.commons.utils.TreeUtils; import io.dataease.plugins.common.base.domain.DatasetTable; @@ -61,6 +62,11 @@ public class DirectFieldService implements DataSetFieldService { DatasetTableField datasetTableField = DatasetTableField.builder().tableId(field.getTableId()).checked(Boolean.TRUE).build(); List fields = dataSetTableFieldsService.list(datasetTableField); + final List allTableFieldIds = fields.stream().map(DatasetTableField::getId).collect(Collectors.toList()); + boolean multi = fieldIds.stream().anyMatch(item -> !allTableFieldIds.contains(item)); + if (multi && needMapping) { + DEException.throwException("Cross multiple dataset is not supported"); + } List permissionFields = fields; List customFilter = new ArrayList<>(); @@ -69,8 +75,9 @@ public class DirectFieldService implements DataSetFieldService { List desensitizationList = new ArrayList<>(); fields = permissionService.filterColumnPermissons(fields, desensitizationList, datasetTable.getId(), userId); - - permissionFields = fields.stream().filter(node -> fieldIds.stream().anyMatch(item -> StringUtils.equals(node.getId(), item))).collect(Collectors.toList()); + Map fieldMap = fields.stream().collect(Collectors.toMap(DatasetTableField::getId, node -> node)); + permissionFields = fieldIds.stream().map(fieldMap::get).collect(Collectors.toList()); + //permissionFields = fields.stream().filter(node -> fieldIds.stream().anyMatch(item -> StringUtils.equals(node.getId(), item))).collect(Collectors.toList()); if (CollectionUtils.isEmpty(permissionFields)) { return new ArrayList<>();