From 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 07 十一月 2026 08:50:53 +0800
Subject: [PATCH] feat: 完善质检、生产、销售、财务与人事模块并接入审批流程

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/quotation/listener/CrmSaleQuotationStatusListener.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/quotation/listener/CrmSaleQuotationStatusListener.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/quotation/listener/CrmSaleQuotationStatusListener.java
new file mode 100644
index 0000000..5688fb0
--- /dev/null
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/quotation/listener/CrmSaleQuotationStatusListener.java
@@ -0,0 +1,52 @@
+package cn.iocoder.yudao.module.crm.service.quotation.listener;
+
+import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
+import cn.iocoder.yudao.module.crm.dal.dataobject.quotation.CrmSaleQuotationDO;
+import cn.iocoder.yudao.module.crm.dal.mysql.quotation.CrmSaleQuotationMapper;
+import cn.iocoder.yudao.module.crm.enums.quotation.CrmSaleQuotationStatusEnum;
+import cn.iocoder.yudao.module.crm.service.quotation.CrmSaleQuotationService;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * 閿�鍞姤浠峰鎵圭殑缁撴灉鐩戝惉鍣�
+ *
+ * 閫氳繃 businessKey锛堟姤浠峰崟 ID锛夊尮閰嶏紝鑰屼笉鏄浐瀹氱殑娴佺▼瀹氫箟 Key锛�
+ * 杩欐牱鍙互鏀寔銆岄攢鍞姤浠峰鎵广�嶅垎绫讳笅浠绘剰 Key 鐨勬祦绋嬫ā鍨嬨��
+ */
+@Component
+@Slf4j
+public class CrmSaleQuotationStatusListener implements ApplicationListener<BpmProcessInstanceStatusEvent> {
+
+    @Resource
+    private CrmSaleQuotationService saleQuotationService;
+    @Resource
+    private CrmSaleQuotationMapper saleQuotationMapper;
+
+    @Override
+    public void onApplicationEvent(BpmProcessInstanceStatusEvent event) {
+        // 閫氳繃 businessKey 鏌ヨ鎶ヤ环鍗�
+        Long quotationId;
+        try {
+            quotationId = Long.parseLong(event.getBusinessKey());
+        } catch (NumberFormatException e) {
+            return; // businessKey 涓嶆槸鏁板瓧锛屽拷鐣�
+        }
+
+        CrmSaleQuotationDO quotation = saleQuotationMapper.selectById(quotationId);
+        if (quotation == null) {
+            return; // 涓嶆槸鎶ヤ环鍗曪紝蹇界暐
+        }
+        // 鍙湁瀹℃壒涓姸鎬佺殑鎶ヤ环鍗曟墠澶勭悊
+        if (!CrmSaleQuotationStatusEnum.PROCESS.getStatus().equals(quotation.getStatus())) {
+            log.warn("[onApplicationEvent] 鎶ヤ环鍗�({}) 涓嶅浜庡鎵逛腑鐘舵�侊紝褰撳墠鐘舵��: {}", quotationId, quotation.getStatus());
+            return;
+        }
+
+        log.info("[onApplicationEvent] 鎶ヤ环鍗�({}) 瀹℃壒鐘舵�佹洿鏂�: {}", quotationId, event.getStatus());
+        saleQuotationService.updateSaleQuotationAuditStatus(quotationId, event.getStatus());
+    }
+
+}

--
Gitblit v1.9.3