Parcourir la source

修复触发器任务 bug

hubin il y a 1 an
Parent
commit
c84c442b59

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

@@ -49,9 +49,10 @@ public class FlowTaskActorProvider implements TaskActorProvider {
 
     @Override
     public List<FlwTaskActor> getTaskActors(NodeModel nodeModel, Execution execution) {
+        final FlowCreator flowCreator = execution.getFlowCreator();
         if (TaskType.major.eq(nodeModel.getType())) {
             // 发起人审批,经过 isAllowed 验证合法,直接返回当前执行人
-            return Collections.singletonList(FlwTaskActor.ofFlowCreator(execution.getFlowCreator()));
+            return Collections.singletonList(FlwTaskActor.ofFlowCreator(flowCreator));
         }
         if (TaskType.approval.eq(nodeModel.getType())) {
             /*
@@ -68,13 +69,13 @@ public class FlowTaskActorProvider implements TaskActorProvider {
              */
             if (NodeSetType.supervisor.eq(nodeModel.getSetType())) {
                 // 2,主管
-                return getDepartmentHeadInfo(nodeModel.getExamineLevel(), false, () -> "请设置直接主管信息");
+                return getDepartmentHeadInfo(flowCreator, nodeModel.getExamineLevel(), false, () -> "请设置直接主管信息");
             } else if (NodeSetType.initiatorThemselves.eq(nodeModel.getSetType())) {
                 // 5,发起人自己
                 return Collections.singletonList(FlowHelper.getFlwTaskActor());
             } else if (NodeSetType.multiLevelSupervisors.eq(nodeModel.getSetType())) {
                 // 6,连续多级主管
-                return getDepartmentHeadInfo(nodeModel.getExamineLevel(), true, () -> "未找到任何主管信息");
+                return getDepartmentHeadInfo(flowCreator, nodeModel.getExamineLevel(), true, () -> "未找到任何主管信息");
             }
         }
         List<NodeAssignee> nodeAssigneeList = nodeModel.getNodeAssigneeList();
@@ -96,10 +97,9 @@ public class FlowTaskActorProvider implements TaskActorProvider {
     /**
      * 获取部门主管信息
      */
-    private List<FlwTaskActor> getDepartmentHeadInfo(Integer examineLevel, boolean multiLevel, Supplier<String> supplier) {
-        UserSession userSession = UserSession.getLoginInfo();
+    private List<FlwTaskActor> getDepartmentHeadInfo(FlowCreator flowCreator, Integer examineLevel, boolean multiLevel, Supplier<String> supplier) {
         ISysDepartmentService sysDepartmentService = SpringHelper.getBean(ISysDepartmentService.class);
-        List<DepartmentHeadVO> voList = sysDepartmentService.getDepartmentHeadInfo(userSession.getId(), examineLevel, multiLevel);
+        List<DepartmentHeadVO> voList = sysDepartmentService.getDepartmentHeadInfo(Long.valueOf(flowCreator.getCreateId()), examineLevel, multiLevel);
         if (CollectionUtils.isEmpty(voList)) {
             ApiAssert.fail(supplier.get());
         }

+ 14 - 10
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -155,17 +155,21 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
                 fpa.setTaskId(flwTask.getId());
                 fpa.setTaskName(flwTask.getTaskName());
                 fpa.setType(2);
-                ApprovalContent content = new ApprovalContent();
-                if (PerformType.countersign.eq(flwTask.getPerformType())) {
-                    // 会签情况
-                    flowLongEngine.queryService().getActiveTaskActorsByInstanceId(flwTask.getInstanceId())
-                            .ifPresent(content::appendNodeAssignee);
-                } else {
-                    // 其它
-                    flowLongEngine.queryService().getActiveTaskActorsByTaskId(flwTask.getId())
-                            .ifPresent(content::appendNodeAssignee);
+                Integer performType = flwTask.getPerformType();
+                if (!(PerformType.timer.eq(performType) && PerformType.trigger.eq(performType))) {
+                    // 排除 定时器 & 触发器
+                    ApprovalContent content = new ApprovalContent();
+                    if (PerformType.countersign.eq(performType)) {
+                        // 会签情况
+                        flowLongEngine.queryService().getActiveTaskActorsByInstanceId(flwTask.getInstanceId())
+                                .ifPresent(content::appendNodeAssignee);
+                    } else {
+                        // 其它
+                        flowLongEngine.queryService().getActiveTaskActorsByTaskId(flwTask.getId())
+                                .ifPresent(content::appendNodeAssignee);
+                    }
+                    fpa.setContent(content);
                 }
-                fpa.setContent(content);
                 processApprovals.add(fpa);
 
                 // 正在执行节点