From a22dc9537f1bc3896af38ab4bb572a56fb9611be Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期三, 22 一月 2025 11:13:24 +0800 Subject: [PATCH] update 优化 业务事件监听器增加流程审批参数传递 更方便的对接业务数据 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java | 5 ++++- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java | 9 +++++++++ ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java | 6 ++++++ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java | 2 +- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java | 11 ++++++++++- 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java index 21bfbef..6329b9c 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessEvent.java @@ -4,6 +4,7 @@ import java.io.Serial; import java.io.Serializable; +import java.util.Map; /** * 鎬讳綋娴佺▼鐩戝惉 @@ -37,6 +38,11 @@ private String status; /** + * 鍔炵悊鍙傛暟 + */ + private Map<String, Object> params; + + /** * 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞� */ private boolean submit; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java index 656e013..4b215ef 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -9,6 +9,8 @@ import org.dromara.workflow.common.ConditionalOnEnable; import org.springframework.stereotype.Component; +import java.util.Map; + /** * 娴佺▼鐩戝惉鏈嶅姟 * @@ -28,7 +30,7 @@ * @param status 鐘舵�� * @param submit 褰撲负true鏃朵负鐢宠浜鸿妭鐐瑰姙鐞� */ - public void processHandler(String flowCode, String businessId, String status, boolean submit) { + public void processHandler(String flowCode, String businessId, String status, Map<String, Object> params, boolean submit) { String tenantId = TenantHelper.getTenantId(); log.info("鍙戝竷娴佺▼浜嬩欢锛岀鎴稩D: {}, 娴佺▼鐘舵��: {}, 娴佺▼缂栫爜: {}, 涓氬姟ID: {}, 鏄惁鐢宠浜鸿妭鐐瑰姙鐞�: {}", tenantId, status, flowCode, businessId, submit); ProcessEvent processEvent = new ProcessEvent(); @@ -36,6 +38,7 @@ processEvent.setFlowCode(flowCode); processEvent.setBusinessId(businessId); processEvent.setStatus(status); + processEvent.setParams(params); processEvent.setSubmit(submit); SpringUtils.context().publishEvent(processEvent); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 097d74c..e79fc3b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -17,7 +17,9 @@ import org.dromara.workflow.service.IFlwTaskService; import org.springframework.stereotype.Component; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 鍏ㄥ眬浠诲姟鍔炵悊鐩戝惉 @@ -81,10 +83,17 @@ Definition definition = listenerVariable.getDefinition(); String businessId = instance.getBusinessId(); String flowStatus = instance.getFlowStatus(); + Map<String, Object> params = new HashMap<>(); + // 鍘嗗彶浠诲姟鎵╁睍(閫氬父涓洪檮浠�) + params.put("hisTaskExt", listenerVariable.getFlowParams().getHisTaskExt()); + // 鍔炵悊浜� + params.put("handler", listenerVariable.getFlowParams().getHandler()); + // 鍔炵悊鎰忚 + params.put("message", listenerVariable.getFlowParams().getMessage()); // 鍒ゆ柇娴佺▼鐘舵�侊紙鍙戝竷锛氭挙閿�锛岄��鍥烇紝浣滃簾锛岀粓姝紝宸插畬鎴愪簨浠讹級 String status = determineFlowStatus(instance, flowStatus); if (StringUtils.isNotBlank(status)) { - flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, false); + flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, params, false); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 0122126..2df51bb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -153,7 +153,7 @@ Definition definition = defService.getById(flowTask.getDefinitionId()); // 妫�鏌ユ祦绋嬬姸鎬佹槸鍚︿负鑽夌銆佸凡鎾ら攢鎴栧凡閫�鍥炵姸鎬侊紝鑻ユ槸鍒欐墽琛屾祦绋嬫彁浜ょ洃鍚� if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) { - flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), true); + flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), null, true); } // 鏋勫缓娴佺▼鍙傛暟锛屽寘鎷彉閲忋�佽烦杞被鍨嬨�佹秷鎭�佸鐞嗕汉銆佹潈闄愮瓑淇℃伅 FlowParams flowParams = new FlowParams(); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index a11e6c1..a7be927 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; /** * 璇峰亣Service涓氬姟灞傚鐞� @@ -131,6 +132,14 @@ log.info("褰撳墠浠诲姟鎵ц浜唟}", processEvent.toString()); TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessId())); testLeave.setStatus(processEvent.getStatus()); + // 鐢ㄤ簬渚嬪瀹℃壒闄勪欢 瀹℃壒鎰忚绛� 瀛樺偍鍒颁笟鍔¤〃鍐� 鑷鏍规嵁涓氬姟瀹炵幇瀛樺偍娴佺▼ + Map<String, Object> params = processEvent.getParams(); + // 鍘嗗彶浠诲姟鎵╁睍(閫氬父涓洪檮浠�) + String hisTaskExt = params.getOrDefault("hisTaskExt", "").toString(); + // 鍔炵悊浜� + String handler = params.getOrDefault("handler", "").toString(); + // 鍔炵悊鎰忚 + String message = params.getOrDefault("message", "").toString(); if (processEvent.isSubmit()) { testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); } -- Gitblit v1.9.3