Commit cf49bda4 authored by 雍欢's avatar 雍欢

完善流程图中配置的表单字段权限与审批规则中配置的字段权限合并逻辑

parent ed2fd9ca
...@@ -159,7 +159,7 @@ public class OperatorUIElementPermissionBuilderImp implements OperatorUIElementP ...@@ -159,7 +159,7 @@ public class OperatorUIElementPermissionBuilderImp implements OperatorUIElementP
} }
private BpmnModel getBpmnModelByProcessInstanceId(String processInstanceId) { private BpmnModel getBpmnModelByProcessInstanceId(String processInstanceId) {
if(processInstanceId == null) { if (processInstanceId == null) {
return null; return null;
} }
String deploymentId = null; String deploymentId = null;
...@@ -195,24 +195,25 @@ public class OperatorUIElementPermissionBuilderImp implements OperatorUIElementP ...@@ -195,24 +195,25 @@ public class OperatorUIElementPermissionBuilderImp implements OperatorUIElementP
* @param uiElementPermissions 审批规则中配置的字段权限 * @param uiElementPermissions 审批规则中配置的字段权限
*/ */
private List<Map<String, Object>> mergeFieldPermissions(List<Map<String, Object>> flowElementFieldPermissions, List<Map<String, Object>> uiElementPermissions) { private List<Map<String, Object>> mergeFieldPermissions(List<Map<String, Object>> flowElementFieldPermissions, List<Map<String, Object>> uiElementPermissions) {
return uiElementPermissions.stream() List<Map<String, Object>> mergeResult = new ArrayList<>(16);
.collect(Collectors.groupingBy(it -> (String) it.get("approvalRuleHandlerId"))) // 先将流程图中配置的字段权限放入合并结果集中
.entrySet().stream() mergeResult.addAll(flowElementFieldPermissions);
.flatMap(entry -> { // 遍历审批规则中配置的字段权限,并在合并结果集中查询有相同formFieldId的配置,如果能找到就覆盖找到的配置,否则添加进合并结果集
String approvalRuleHandlerId = entry.getKey(); for (Map<String, Object> o : uiElementPermissions) {
List<Map<String, Object>> permissions = entry.getValue(); String formFieldId = (String) o.get("formFieldId");
List<?> uiElementPermissionFormFieldIds = permissions.stream() if (StringUtils.isBlank(formFieldId)) {
.map(it -> it.get("formFieldId")) // 不是关联的表单字段,直接添加进合并结果集
.collect(Collectors.toList()); mergeResult.add(o);
return flowElementFieldPermissions.stream() }
.filter(it -> !uiElementPermissionFormFieldIds.contains(it.get("formFieldId"))) Optional<Map<String, Object>> uiElementPermissionOptional = mergeResult.stream().filter(it -> it.get("formFieldId").equals(formFieldId)).findAny();
.map(it -> { if (uiElementPermissionOptional.isPresent()) {
Map<String, Object> copy = new HashMap<>(it); Map<String, Object> uiElementPermission = uiElementPermissionOptional.get();
copy.put("approvalRuleHandlerId", approvalRuleHandlerId); uiElementPermission.putAll(o);
return copy; } else {
}); mergeResult.add(o);
}) }
.collect(Collectors.toList()); }
return mergeResult;
} }
private Optional<ExtensionAttribute> getFieldExtensionElement(BaseElement be, String fieldName) { private Optional<ExtensionAttribute> getFieldExtensionElement(BaseElement be, String fieldName) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment