Parcourir la source

update 优化 工作流创建事件 将状态交给业务方处理

疯狂的狮子Li il y a 1 an
Parent
commit
1db0bc83b2

+ 5 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java

@@ -51,4 +51,9 @@ public class ProcessCreateTaskEvent implements Serializable {
      */
     private String businessId;
 
+    /**
+     * 流程状态
+     */
+    private String status;
+
 }

+ 1 - 0
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java

@@ -68,6 +68,7 @@ public class FlowProcessEventHandler {
         processCreateTaskEvent.setNodeCode(instance.getNodeCode());
         processCreateTaskEvent.setNodeName(instance.getNodeName());
         processCreateTaskEvent.setTaskId(taskId);
+        processCreateTaskEvent.setStatus(instance.getFlowStatus());
         SpringUtils.context().publishEvent(processCreateTaskEvent);
     }
 

+ 1 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java

@@ -52,7 +52,7 @@ public class WorkflowGlobalListener implements GlobalListener {
         Instance instance = listenerVariable.getInstance();
         Definition definition = listenerVariable.getDefinition();
         Task task = listenerVariable.getTask();
-        if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(instance.getFlowStatus())) {
+        if (task != null) {
             // 判断流程状态(发布审批中事件)
             flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), instance, task.getId());
         }

+ 5 - 3
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java

@@ -176,9 +176,11 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
     @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')")
     public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) {
         log.info("当前任务创建了{}", processCreateTaskEvent.toString());
-        TestLeave testLeave = baseMapper.selectById(Long.valueOf(processCreateTaskEvent.getBusinessId()));
-        testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus());
-        baseMapper.updateById(testLeave);
+        if (BusinessStatusEnum.WAITING.getStatus().equals(processCreateTaskEvent.getStatus())) {
+            TestLeave testLeave = baseMapper.selectById(Long.valueOf(processCreateTaskEvent.getBusinessId()));
+            testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus());
+            baseMapper.updateById(testLeave);
+        }
     }
 
     /**