Ver Fonte

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

疯狂的狮子Li há 1 ano atrás
pai
commit
5217bd6a1f

+ 5 - 0
ruoyi-api/ruoyi-api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java

@@ -54,6 +54,11 @@ public class ProcessCreateTaskEvent extends RemoteApplicationEvent {
      */
     private String businessId;
 
+    /**
+     * 流程状态
+     */
+    private String status;
+
     public ProcessCreateTaskEvent() {
         super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null));
     }

+ 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

@@ -180,9 +180,11 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
     public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) {
         TenantHelper.dynamic(processCreateTaskEvent.getTenantId(), () -> {
             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);
+            }
         });
     }