From bf5f52656e128f578ed42c7979c31cf4b476ce46 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 31 十月 2026 19:04:40 +0800
Subject: [PATCH] feat: 优化业务导入及工艺流程管理
---
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java | 48 +++++++++++++++++++-----------------------------
1 files changed, 19 insertions(+), 29 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java
index 3d425ad..8a0d6fd 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java
@@ -1,56 +1,46 @@
package cn.iocoder.yudao.module.crm.service.contract.listener;
import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
-import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
-import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractMapper;
-import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum;
+import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
/**
- * 鍚堝悓瀹℃壒鐨勭粨鏋滅洃鍚櫒瀹炵幇绫�
+ * CRM 鍚堝悓瀹℃壒鐘舵�佺洃鍚櫒
*
- * 閫氳繃 businessKey锛堝悎鍚孖D锛夊尮閰嶏紝鑰屼笉鏄浐瀹氱殑娴佺▼瀹氫箟 Key锛�
- * 杩欐牱鍙互鏀寔鍒嗙被涓嬩换鎰� Key 鐨勬祦绋嬫ā鍨嬨��
- *
- * @author HUIHUI
+ * 鐩戝惉 BPM 瀹℃壒缁撴灉锛屽洖鍐欏悎鍚屽鏍哥姸鎬侊紝浣垮悎鍚屽鎵圭粺涓�鍦ㄣ�屽崗鍚屽姙鍏� - 鎴戠殑娴佺▼銆嶄腑娴佽浆銆�
*/
@Component
@Slf4j
-public class CrmContractStatusListener implements ApplicationListener<BpmProcessInstanceStatusEvent> {
+public class CrmContractStatusListener extends BpmProcessInstanceStatusEventListener {
+
+ private static final String PROCESS_DEFINITION_KEY = "contract_approve";
@Resource
private CrmContractService contractService;
- @Resource
- private CrmContractMapper contractMapper;
@Override
- public void onApplicationEvent(BpmProcessInstanceStatusEvent event) {
- // 閫氳繃 businessKey 鏌ヨ鍚堝悓
+ protected String getProcessDefinitionKey() {
+ return PROCESS_DEFINITION_KEY;
+ }
+
+ @Override
+ protected void onEvent(BpmProcessInstanceStatusEvent event) {
Long contractId;
try {
contractId = Long.parseLong(event.getBusinessKey());
} catch (NumberFormatException e) {
- return; // businessKey 涓嶆槸鏁板瓧锛屽拷鐣�
- }
-
- CrmContractDO contract = contractMapper.selectById(contractId);
- if (contract == null) {
- return; // 涓嶆槸鍚堝悓锛屽拷鐣�
- }
-
- // 鍙湁瀹℃壒涓姸鎬佺殑鍚堝悓鎵嶅鐞�
- if (!CrmAuditStatusEnum.PROCESS.getStatus().equals(contract.getAuditStatus())) {
- log.warn("[onApplicationEvent] 鍚堝悓({}) 涓嶅浜庡鎵逛腑鐘舵�侊紝褰撳墠鐘舵��: {}", contractId, contract.getAuditStatus());
+ log.warn("[onEvent] businessKey({}) 涓嶆槸鏈夋晥鐨勫悎鍚岀紪鍙�", event.getBusinessKey());
return;
}
-
- log.info("[onApplicationEvent] 鍚堝悓({}) 瀹℃壒鐘舵�佹洿鏂�: {}", contractId, event.getStatus());
- // 鏇存柊瀹℃壒鐘舵��
- contractService.updateContractAuditStatus(contractId, event.getStatus());
+ log.info("[onEvent] 鏀跺埌鍚堝悓瀹℃壒浜嬩欢锛宑ontractId={}, status={}", contractId, event.getStatus());
+ try {
+ contractService.updateContractAuditStatus(contractId, event.getStatus(), event.getReason());
+ } catch (Exception e) {
+ log.error("[onEvent] 鍥炲啓鍚堝悓瀹℃壒鐘舵�佸け璐ワ紝contractId={}", contractId, e);
+ }
}
}
--
Gitblit v1.9.3