feat(REQ-2300):数据权限返回数据处理Advice功能,增加对每个子field的递归处理
This commit is contained in:
parent
202c577007
commit
0e9801177c
@ -60,17 +60,25 @@ public class DataPermissionResponseExecutor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 根据karma数据列的校验结果,处理api结果的数据对象
|
// 根据karma数据列的校验结果,处理api结果的数据对象
|
||||||
recursiveGetOrgNodeIdAndPersonIds(dataPermissionPrepare, dataNode, examineDpColumnsResp.getAttributeDpResultMap());
|
recursiveProcessOrgNodeIdAndPersonIds(dataPermissionPrepare, dataNode, examineDpColumnsResp.getAttributeDpResultMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recursiveGetOrgNodeIdAndPersonIds(DataPermissionPrepare dataPermissionPrepare, JsonNode dataNode, List<ExamineDpColumnsReq.OrgNodeIdAndPersonId> orgNodeIdAndPersonIds) {
|
private void recursiveGetOrgNodeIdAndPersonIds(DataPermissionPrepare dataPermissionPrepare, JsonNode dataNode, List<ExamineDpColumnsReq.OrgNodeIdAndPersonId> orgNodeIdAndPersonIds) {
|
||||||
if (dataNode.isObject()) {
|
if (dataNode.isObject()) {
|
||||||
Long resultOrganizationalNodeId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_organizationalNodeId())) ? dataNode.get(dataPermissionPrepare.key_organizationalNodeId()).asLong() : 0L;
|
Long resultOrganizationalNodeId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_organizationalNodeId())) ? dataNode.get(dataPermissionPrepare.key_organizationalNodeId()).asLong() : 0L;
|
||||||
Long resultPersonId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_personId())) ? dataNode.get(dataPermissionPrepare.key_personId()).asLong() : 0L;
|
Long resultPersonId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_personId())) ? dataNode.get(dataPermissionPrepare.key_personId()).asLong() : 0L;
|
||||||
if (resultOrganizationalNodeId.equals(0L) && resultPersonId.equals(0L)) {
|
if (!resultOrganizationalNodeId.equals(0L) || !resultPersonId.equals(0L)) {
|
||||||
return;
|
orgNodeIdAndPersonIds.add(ExamineDpColumnsReq.OrgNodeIdAndPersonId.builder().organizationalNodeId(resultOrganizationalNodeId).personId(resultPersonId).build());
|
||||||
|
}
|
||||||
|
// 循环处理子field
|
||||||
|
Iterator<Map.Entry<String, JsonNode>> fields = dataNode.fields();
|
||||||
|
while (fields.hasNext()) {
|
||||||
|
Map.Entry<String, JsonNode> entry = fields.next();
|
||||||
|
JsonNode value = entry.getValue();
|
||||||
|
if (value.isContainerNode()) {
|
||||||
|
recursiveGetOrgNodeIdAndPersonIds(dataPermissionPrepare, value, orgNodeIdAndPersonIds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
orgNodeIdAndPersonIds.add(ExamineDpColumnsReq.OrgNodeIdAndPersonId.builder().organizationalNodeId(resultOrganizationalNodeId).personId(resultPersonId).build());
|
|
||||||
}
|
}
|
||||||
if (dataNode.isArray()) {
|
if (dataNode.isArray()) {
|
||||||
ArrayNode arrayNode = (ArrayNode) dataNode;
|
ArrayNode arrayNode = (ArrayNode) dataNode;
|
||||||
@ -82,31 +90,36 @@ public class DataPermissionResponseExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recursiveGetOrgNodeIdAndPersonIds(DataPermissionPrepare dataPermissionPrepare, JsonNode dataNode,
|
private void recursiveProcessOrgNodeIdAndPersonIds(DataPermissionPrepare dataPermissionPrepare, JsonNode dataNode,
|
||||||
Map<String, Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO>> attributeDpResultMap) {
|
Map<String, Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO>> attributeDpResultMap) {
|
||||||
if (dataNode.isObject()) {
|
if (dataNode.isObject()) {
|
||||||
Long resultOrganizationalNodeId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_organizationalNodeId())) ? dataNode.get(dataPermissionPrepare.key_organizationalNodeId()).asLong() : 0L;
|
Long resultOrganizationalNodeId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_organizationalNodeId())) ? dataNode.get(dataPermissionPrepare.key_organizationalNodeId()).asLong() : 0L;
|
||||||
Long resultPersonId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_personId())) ? dataNode.get(dataPermissionPrepare.key_personId()).asLong() : 0L;
|
Long resultPersonId = Objects.nonNull(dataNode.get(dataPermissionPrepare.key_personId())) ? dataNode.get(dataPermissionPrepare.key_personId()).asLong() : 0L;
|
||||||
if (resultOrganizationalNodeId.equals(0L) && resultPersonId.equals(0L)) {
|
if (!resultOrganizationalNodeId.equals(0L) || !resultPersonId.equals(0L)) {
|
||||||
return;
|
Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> attributeMap = attributeDpResultMap.get(resultOrganizationalNodeId + "_" + resultPersonId);
|
||||||
|
if (MapUtils.isNotEmpty(attributeMap)) {
|
||||||
|
for (Map.Entry<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> entry : attributeMap.entrySet()) {
|
||||||
|
ExamineDpColumnsResp.AttributePermissionBasicDTO basic = entry.getValue();
|
||||||
|
if (dataNode.has(basic.getAttrCode())) {
|
||||||
|
ObjectNode objectNode = (ObjectNode) dataNode;
|
||||||
|
if (!ATTRIBUTE_ISUNMASKABLE.equals(basic.getIsUnmaskable())) {
|
||||||
|
objectNode.remove(basic.getAttrCode());
|
||||||
|
}
|
||||||
|
if (Objects.nonNull(basic.getIsEditable())) {
|
||||||
|
objectNode.put(ATTRIBUTE_ADD_ALLOW_EDIT_PREFIX + basic.getAttrCode(), ATTRIBUTE_ISEDITABLE.equals(basic.getIsEditable()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> attributeMap = attributeDpResultMap.get(resultOrganizationalNodeId + "_" + resultPersonId);
|
// 循环处理子field
|
||||||
if (MapUtils.isEmpty(attributeMap)) {
|
Iterator<Map.Entry<String, JsonNode>> fields = dataNode.fields();
|
||||||
return;
|
while (fields.hasNext()) {
|
||||||
}
|
Map.Entry<String, JsonNode> entry = fields.next();
|
||||||
|
JsonNode value = entry.getValue();
|
||||||
for (Map.Entry<String, ExamineDpColumnsResp.AttributePermissionBasicDTO> entry : attributeMap.entrySet()) {
|
if (value.isContainerNode()) {
|
||||||
ExamineDpColumnsResp.AttributePermissionBasicDTO basic = entry.getValue();
|
recursiveProcessOrgNodeIdAndPersonIds(dataPermissionPrepare, value, attributeDpResultMap);
|
||||||
if (dataNode.has(basic.getAttrCode())) {
|
|
||||||
if (!ATTRIBUTE_ISUNMASKABLE.equals(basic.getIsUnmaskable())) {
|
|
||||||
ObjectNode objectNode = (ObjectNode) dataNode;
|
|
||||||
objectNode.remove(basic.getAttrCode());
|
|
||||||
}
|
|
||||||
if (Objects.nonNull(basic.getIsEditable())) {
|
|
||||||
ObjectNode objectNode = (ObjectNode) dataNode;
|
|
||||||
objectNode.put(ATTRIBUTE_ADD_ALLOW_EDIT_PREFIX + basic.getAttrCode(), ATTRIBUTE_ISEDITABLE.equals(basic.getIsEditable()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,7 +129,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();
|
||||||
recursiveGetOrgNodeIdAndPersonIds(dataPermissionPrepare, element, attributeDpResultMap);
|
recursiveProcessOrgNodeIdAndPersonIds(dataPermissionPrepare, element, attributeDpResultMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user