浏览代码

优化候选人处理参与者类型逻辑

hubin 3 月之前
父节点
当前提交
57322f0d2a
共有 1 个文件被更改,包括 34 次插入1 次删除
  1. 34 1
      src/main/java/com/aizuda/boot/modules/flw/flow/FlowTaskActorProvider.java

+ 34 - 1
src/main/java/com/aizuda/boot/modules/flw/flow/FlowTaskActorProvider.java

@@ -15,6 +15,7 @@ import com.aizuda.bpm.engine.entity.FlwInstance;
 import com.aizuda.bpm.engine.entity.FlwTaskActor;
 import com.aizuda.bpm.engine.model.DynamicAssignee;
 import com.aizuda.bpm.engine.model.NodeAssignee;
+import com.aizuda.bpm.engine.model.NodeCandidate;
 import com.aizuda.bpm.engine.model.NodeModel;
 import com.aizuda.core.api.ApiAssert;
 import com.aizuda.service.spring.SpringHelper;
@@ -63,6 +64,22 @@ public class FlowTaskActorProvider implements TaskActorProvider {
             return 2;
         }
 
+        // 发起人自选情况
+        if (NodeSetType.initiatorSelected.eq(nodeModel.getSetType())) {
+            NodeCandidate nodeCandidate = nodeModel.getNodeCandidate();
+            if (null != nodeCandidate) {
+                // 1,角色
+                if (Objects.equals(1, nodeCandidate.getType())) {
+                    return 1;
+                }
+
+                // 2,部门
+                if (Objects.equals(2, nodeCandidate.getType())) {
+                    return 2;
+                }
+            }
+        }
+
         // 其它类型自定义映射
         return 0;
     }
@@ -132,6 +149,22 @@ public class FlowTaskActorProvider implements TaskActorProvider {
                     // 4,发起人自选
                     || NodeSetType.initiatorSelected.eq(nodeModel.getSetType())) {
 
+                // 自选候选人判断参与者类型
+                NodeCandidate nodeCandidate = nodeModel.getNodeCandidate();
+                if (null != nodeCandidate) {
+                    // 1,角色
+                    if (Objects.equals(1, nodeCandidate.getType())) {
+                        return nodeAssigneeList.stream().map(t -> FlwTaskActor.ofRole(t.getTenantId(),
+                                t.getId(), t.getName())).collect(Collectors.toList());
+                    }
+
+                    // 2,部门
+                    if (Objects.equals(2, nodeCandidate.getType())) {
+                        return nodeAssigneeList.stream().map(t -> FlwTaskActor.ofDepartment(t.getTenantId(),
+                                t.getId(), t.getName())).collect(Collectors.toList());
+                    }
+                }
+
                 // 读取当前节点配置信息
                 return nodeAssigneeList.stream().map(FlwTaskActor::ofNodeAssignee).collect(Collectors.toList());
             }
@@ -143,7 +176,7 @@ public class FlowTaskActorProvider implements TaskActorProvider {
             }
         }
 
-        ApiAssert.fail( "请选择设置流程处理人信息");
+        ApiAssert.fail("请选择设置流程处理人信息");
         return null;
     }