feat(REQ-2300):字段展示处理解析处理
This commit is contained in:
parent
bf3e2c71e1
commit
7879529f12
@ -9,16 +9,13 @@ import cn.axzo.karma.client.feign.tyr.response.ExamineDpColumnsResp;
|
|||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.collections4.MapUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author likunpeng
|
* @author likunpeng
|
||||||
@ -43,10 +40,10 @@ public class DataPermissionResponseExecutor {
|
|||||||
|
|
||||||
public void processNode(DataPermissionContextHolder.DataPermissionContext context, JsonNode dataNode) {
|
public void processNode(DataPermissionContextHolder.DataPermissionContext context, JsonNode dataNode) {
|
||||||
DataPermission dataPermission = context.getDataPermission();
|
DataPermission dataPermission = context.getDataPermission();
|
||||||
List<ExamineDpColumnsReq.OrgNodeIdAndPersonId> orgNodeIdAndPersonIds = Lists.newArrayList();
|
Set<Long> personIds = Sets.newHashSet();
|
||||||
recursiveGetOrgNodeIdAndPersonIds(dataPermission, dataNode, orgNodeIdAndPersonIds);
|
recursiveGetPersonIds(dataPermission, dataNode, personIds);
|
||||||
if (CollectionUtils.isEmpty(orgNodeIdAndPersonIds)) {
|
if (CollectionUtils.isEmpty(personIds)) {
|
||||||
log.warn("api result has no organizationalNodeId and personId, not examine data permission for result columns.");
|
log.warn("api result has no personId, not examine data permission for result columns.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ExamineDpColumnsReq request = ExamineDpColumnsReq.builder()
|
ExamineDpColumnsReq request = ExamineDpColumnsReq.builder()
|
||||||
@ -54,7 +51,7 @@ public class DataPermissionResponseExecutor {
|
|||||||
.ouId(context.getOuId())
|
.ouId(context.getOuId())
|
||||||
.personId(context.getPersonId())
|
.personId(context.getPersonId())
|
||||||
.workspaceId(context.getWorkspaceId())
|
.workspaceId(context.getWorkspaceId())
|
||||||
.resultOrgNodeIdAndPersonIds(orgNodeIdAndPersonIds)
|
.resultPersonIds(personIds)
|
||||||
.build();
|
.build();
|
||||||
// 调用karma获取数据列的校验结果
|
// 调用karma获取数据列的校验结果
|
||||||
ExamineDpColumnsResp examineDpColumnsResp = RpcInternalUtil.rpcProcessor(() -> dataObjectApi.examineDpColumns(request), "data permission processNode", request).getData();
|
ExamineDpColumnsResp examineDpColumnsResp = RpcInternalUtil.rpcProcessor(() -> dataObjectApi.examineDpColumns(request), "data permission processNode", request).getData();
|
||||||
@ -62,15 +59,13 @@ public class DataPermissionResponseExecutor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 根据karma数据列的校验结果,处理api结果的数据对象
|
// 根据karma数据列的校验结果,处理api结果的数据对象
|
||||||
recursiveProcessOrgNodeIdAndPersonIds(dataPermission, dataNode, examineDpColumnsResp.getAttributeDpResultMap());
|
recursiveProcessPersonIds(dataPermission, dataNode, examineDpColumnsResp.getAttributeDpResultMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recursiveGetOrgNodeIdAndPersonIds(DataPermission dataPermission, JsonNode dataNode, List<ExamineDpColumnsReq.OrgNodeIdAndPersonId> orgNodeIdAndPersonIds) {
|
private void recursiveGetPersonIds(DataPermission dataPermission, JsonNode dataNode, Set<Long> personIds) {
|
||||||
if (dataNode.isObject()) {
|
if (dataNode.isObject()) {
|
||||||
Long resultOrganizationalNodeId = Objects.nonNull(dataNode.get(dataPermission.key_organizationalNodeId())) ? dataNode.get(dataPermission.key_organizationalNodeId()).asLong() : 0L;
|
if (Objects.nonNull(dataNode.get(dataPermission.key_personId()))) {
|
||||||
Long resultPersonId = Objects.nonNull(dataNode.get(dataPermission.key_personId())) ? dataNode.get(dataPermission.key_personId()).asLong() : 0L;
|
personIds.add(dataNode.get(dataPermission.key_personId()).asLong());
|
||||||
if (!resultOrganizationalNodeId.equals(0L) || !resultPersonId.equals(0L)) {
|
|
||||||
orgNodeIdAndPersonIds.add(ExamineDpColumnsReq.OrgNodeIdAndPersonId.builder().organizationalNodeId(resultOrganizationalNodeId).personId(resultPersonId).build());
|
|
||||||
}
|
}
|
||||||
// 循环处理子field
|
// 循环处理子field
|
||||||
Iterator<Map.Entry<String, JsonNode>> fields = dataNode.fields();
|
Iterator<Map.Entry<String, JsonNode>> fields = dataNode.fields();
|
||||||
@ -78,7 +73,7 @@ public class DataPermissionResponseExecutor {
|
|||||||
Map.Entry<String, JsonNode> entry = fields.next();
|
Map.Entry<String, JsonNode> entry = fields.next();
|
||||||
JsonNode value = entry.getValue();
|
JsonNode value = entry.getValue();
|
||||||
if (value.isContainerNode()) {
|
if (value.isContainerNode()) {
|
||||||
recursiveGetOrgNodeIdAndPersonIds(dataPermission, value, orgNodeIdAndPersonIds);
|
recursiveGetPersonIds(dataPermission, value, personIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,18 +82,18 @@ public class DataPermissionResponseExecutor {
|
|||||||
Iterator<JsonNode> elements = arrayNode.elements();
|
Iterator<JsonNode> elements = arrayNode.elements();
|
||||||
while (elements.hasNext()) {
|
while (elements.hasNext()) {
|
||||||
JsonNode element = elements.next();
|
JsonNode element = elements.next();
|
||||||
recursiveGetOrgNodeIdAndPersonIds(dataPermission, element, orgNodeIdAndPersonIds);
|
recursiveGetPersonIds(dataPermission, element, personIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recursiveProcessOrgNodeIdAndPersonIds(DataPermission dataPermission, JsonNode dataNode,
|
private void recursiveProcessPersonIds(DataPermission dataPermission, JsonNode dataNode,
|
||||||
Map<String, Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO>> attributeDpResultMap) {
|
Map<Long, Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO>> attributeDpResultMap) {
|
||||||
if (dataNode.isObject()) {
|
if (dataNode.isObject()) {
|
||||||
Long resultOrganizationalNodeId = Objects.nonNull(dataNode.get(dataPermission.key_organizationalNodeId())) ? dataNode.get(dataPermission.key_organizationalNodeId()).asLong() : 0L;
|
Long resultPersonId = Objects.nonNull(dataNode.get(dataPermission.key_personId())) ? dataNode.get(dataPermission.key_personId()).asLong() : null;
|
||||||
Long resultPersonId = Objects.nonNull(dataNode.get(dataPermission.key_personId())) ? dataNode.get(dataPermission.key_personId()).asLong() : 0L;
|
|
||||||
if (!resultOrganizationalNodeId.equals(0L) || !resultPersonId.equals(0L)) {
|
if (Objects.nonNull(resultPersonId)) {
|
||||||
Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> attributeMap = attributeDpResultMap.get(resultOrganizationalNodeId + "_" + resultPersonId);
|
Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> attributeMap = attributeDpResultMap.get(resultPersonId);
|
||||||
if (MapUtils.isNotEmpty(attributeMap)) {
|
if (MapUtils.isNotEmpty(attributeMap)) {
|
||||||
for (Map.Entry<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> entry : attributeMap.entrySet()) {
|
for (Map.Entry<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> entry : attributeMap.entrySet()) {
|
||||||
ExamineDpColumnsResp.AttributePermissionBasicDTO basic = entry.getValue();
|
ExamineDpColumnsResp.AttributePermissionBasicDTO basic = entry.getValue();
|
||||||
@ -121,7 +116,7 @@ public class DataPermissionResponseExecutor {
|
|||||||
Map.Entry<String, JsonNode> entry = fields.next();
|
Map.Entry<String, JsonNode> entry = fields.next();
|
||||||
JsonNode value = entry.getValue();
|
JsonNode value = entry.getValue();
|
||||||
if (value.isContainerNode()) {
|
if (value.isContainerNode()) {
|
||||||
recursiveProcessOrgNodeIdAndPersonIds(dataPermission, value, attributeDpResultMap);
|
recursiveProcessPersonIds(dataPermission, value, attributeDpResultMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -131,7 +126,7 @@ public class DataPermissionResponseExecutor {
|
|||||||
Iterator<JsonNode> elements = arrayNode.elements();
|
Iterator<JsonNode> elements = arrayNode.elements();
|
||||||
while (elements.hasNext()) {
|
while (elements.hasNext()) {
|
||||||
JsonNode element = elements.next();
|
JsonNode element = elements.next();
|
||||||
recursiveProcessOrgNodeIdAndPersonIds(dataPermission, element, attributeDpResultMap);
|
recursiveProcessPersonIds(dataPermission, element, attributeDpResultMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user