Selaa lähdekoodia

发起人自选逻辑处理

hubin 1 vuosi sitten
vanhempi
sitoutus
1d4d79401b

+ 19 - 0
src/main/java/com/aizuda/boot/modules/flw/flow/FlowTaskActorProvider.java

@@ -3,6 +3,8 @@ package com.aizuda.boot.modules.flw.flow;
 import com.aizuda.boot.modules.system.entity.vo.DepartmentHeadVO;
 import com.aizuda.boot.modules.system.service.ISysDepartmentService;
 import com.aizuda.boot.modules.system.service.ISysUserRoleService;
+import com.aizuda.bpm.engine.FlowConstants;
+import com.aizuda.bpm.engine.FlowDataTransfer;
 import com.aizuda.bpm.engine.TaskActorProvider;
 import com.aizuda.bpm.engine.assist.ObjectUtils;
 import com.aizuda.bpm.engine.core.Execution;
@@ -10,6 +12,7 @@ import com.aizuda.bpm.engine.core.FlowCreator;
 import com.aizuda.bpm.engine.core.enums.NodeSetType;
 import com.aizuda.bpm.engine.core.enums.TaskType;
 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.NodeModel;
 import com.aizuda.core.api.ApiAssert;
@@ -21,6 +24,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
@@ -70,6 +74,21 @@ public class FlowTaskActorProvider implements TaskActorProvider {
             if (NodeSetType.supervisor.eq(nodeModel.getSetType())) {
                 // 2,主管
                 return getDepartmentHeadInfo(flowCreator, nodeModel.getExamineLevel(), false, () -> "请设置直接主管信息");
+            } else if (NodeSetType.initiatorSelected.eq(nodeModel.getSetType())) {
+                // 4,发起人自选
+//                Map<String, Object> modelData = FlowDataTransfer.get(FlowConstants.processDynamicAssignee);
+//                if (ObjectUtils.isNotEmpty(modelData)) {
+//                    DynamicAssignee dynamicAssignee = (DynamicAssignee) modelData.get(nodeModel.getNodeKey());
+//                    if (null != dynamicAssignee) {
+//                        return dynamicAssignee.getAssigneeList().stream().map(t -> {
+//                            FlwTaskActor flwTaskActor = FlwTaskActor.ofNodeAssignee(t);
+//                            flwTaskActor.setActorType(dynamicAssignee.getType());
+//                            return flwTaskActor;
+//                        }).toList();
+//                    }
+//                }
+                // TODO 暂时默认返回发起人,后续换成前端传入的参数
+                return Collections.singletonList(FlowHelper.getFlwTaskActor());
             } else if (NodeSetType.initiatorThemselves.eq(nodeModel.getSetType())) {
                 // 5,发起人自己
                 return Collections.singletonList(FlowHelper.getFlwTaskActor());