From 0ed338976c6cabb5ee17983e3ee1bedb529a0ccb Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 16 七月 2026 18:01:28 +0800
Subject: [PATCH] 1.联调优化采购申请到入库的整个逻辑

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/listener/ErpPurchaseRequestStatusListener.java |   53 ++++++++++++++++++++++++-----------------------------
 1 files changed, 24 insertions(+), 29 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/listener/ErpPurchaseRequestStatusListener.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/listener/ErpPurchaseRequestStatusListener.java
index 44a4008..caf124d 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/listener/ErpPurchaseRequestStatusListener.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/listener/ErpPurchaseRequestStatusListener.java
@@ -1,56 +1,51 @@
 package cn.iocoder.yudao.module.erp.service.purchase.listener;
 
 import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
-import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestDO;
-import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseRequestMapper;
-import cn.iocoder.yudao.module.erp.enums.ErpPurchaseRequestStatusEnum;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseRequestService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
 
 /**
- * 閲囪喘鐢宠瀹℃壒鐨勭粨鏋滅洃鍚櫒瀹炵幇绫�
+ * 閲囪喘鐢宠瀹℃壒鐘舵�佺洃鍚櫒
  *
- * 閫氳繃 businessKey锛堥噰璐敵璇稩D锛夊尮閰嶏紝鑰屼笉鏄浐瀹氱殑娴佺▼瀹氫箟 Key锛�
- * 杩欐牱鍙互鏀寔鍒嗙被涓嬩换鎰� Key 鐨勬祦绋嬫ā鍨嬨��
- *
- * @author 鑺嬮亾婧愮爜
+ * 鐩戝惉 BPM 娴佺▼瀹炰緥鐘舵�佸彉鏇翠簨浠讹紝鏇存柊閲囪喘鐢宠鐨勫鎵圭姸鎬�
  */
 @Component
 @Slf4j
-public class ErpPurchaseRequestStatusListener implements ApplicationListener<BpmProcessInstanceStatusEvent> {
+public class ErpPurchaseRequestStatusListener extends cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEventListener {
+
+    /**
+     * 閲囪喘鐢宠瀹℃壒娴佺▼瀹氫箟 Key
+     */
+    private static final String PROCESS_DEFINITION_KEY = "purchase_request_approve";
 
     @Resource
     private ErpPurchaseRequestService purchaseRequestService;
-    @Resource
-    private ErpPurchaseRequestMapper purchaseRequestMapper;
 
     @Override
-    public void onApplicationEvent(BpmProcessInstanceStatusEvent event) {
-        // 閫氳繃 businessKey 鏌ヨ閲囪喘鐢宠鍗�
+    protected String getProcessDefinitionKey() {
+        return PROCESS_DEFINITION_KEY;
+    }
+
+    @Override
+    protected void onEvent(BpmProcessInstanceStatusEvent event) {
         Long requestId;
         try {
             requestId = Long.parseLong(event.getBusinessKey());
         } catch (NumberFormatException e) {
-            return; // businessKey 涓嶆槸鏁板瓧锛屽拷鐣�
-        }
-
-        ErpPurchaseRequestDO request = purchaseRequestMapper.selectById(requestId);
-        if (request == null) {
-            return; // 涓嶆槸閲囪喘鐢宠锛屽拷鐣�
-        }
-
-        // 鍙湁瀹℃壒涓姸鎬佺殑鐢宠鍗曟墠澶勭悊
-        if (!ErpPurchaseRequestStatusEnum.PROCESS.getStatus().equals(request.getStatus())) {
-            log.warn("[onApplicationEvent] 閲囪喘鐢宠鍗�({}) 涓嶅浜庡鎵逛腑鐘舵�侊紝褰撳墠鐘舵��: {}", requestId, request.getStatus());
+            log.warn("[onEvent] businessKey({}) 涓嶆槸鏈夋晥鐨勯噰璐敵璇风紪鍙�", event.getBusinessKey());
             return;
         }
 
-        log.info("[onApplicationEvent] 閲囪喘鐢宠鍗�({}) 瀹℃壒鐘舵�佹洿鏂�: {}", requestId, event.getStatus());
-        // 鏇存柊瀹℃壒鐘舵��
-        purchaseRequestService.updatePurchaseRequestAuditStatus(requestId, event.getStatus());
+        log.info("[onEvent] 鏀跺埌BPM瀹℃壒浜嬩欢锛宺equestId={}, status={}", requestId, event.getStatus());
+
+        try {
+            purchaseRequestService.updatePurchaseRequestAuditStatus(requestId, event.getStatus());
+            log.info("[onEvent] 閲囪喘鐢宠({}) 瀹℃壒鐘舵�佹洿鏂板畬鎴�", requestId);
+        } catch (Exception e) {
+            log.error("[onEvent] 鏇存柊閲囪喘鐢宠瀹℃壒鐘舵�佸け璐ワ紝requestId={}", requestId, e);
+        }
     }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3