From 40a8157440e3b906da8f52e07d939d78c3f4c313 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 12 四月 2026 16:14:06 +0800
Subject: [PATCH] feat: 任务增加统计、同步增加通知

---
 ruoyi-system/src/main/java/com/ruoyi/system/listener/DispatchOrdRunningListener.java |   62 +++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/listener/DispatchOrdRunningListener.java b/ruoyi-system/src/main/java/com/ruoyi/system/listener/DispatchOrdRunningListener.java
index 861d5a9..edebfb9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/listener/DispatchOrdRunningListener.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/listener/DispatchOrdRunningListener.java
@@ -6,7 +6,9 @@
 import com.ruoyi.system.domain.SysTaskEmergency;
 import com.ruoyi.system.domain.enums.TaskStatus;
 import com.ruoyi.system.event.TaskStatusChangedEvent;
+import com.ruoyi.system.mapper.DispatchOrdMapper;
 import com.ruoyi.system.mapper.LegacyTransferSyncMapper;
+import com.ruoyi.system.mapper.SysDictDataMapper;
 import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
 import com.ruoyi.system.mapper.SysTaskMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
@@ -46,6 +48,12 @@
 
     @Autowired
     private SysUserMapper sysUserMapper;
+    
+    @Autowired
+    private DispatchOrdMapper dispatchOrdMapper;
+    
+    @Autowired
+    private SysDictDataMapper sysDictDataMapper;
     
     /**
      * 鐩戝惉浠诲姟鐘舵�佸彉鏇翠簨浠�
@@ -111,6 +119,11 @@
                 log.debug("浠诲姟鐘舵�佷笉闇�瑕佸悓姝ュ埌鏃х郴缁燂紝浠诲姟ID: {}, 鐘舵��: {}",
                     event.getTaskId(), newTaskStatus.getInfo());
                 return;
+            }
+            
+            // 濡傛灉鏄彇娑堢姸鎬侊紝鍚屾鍙栨秷鍘熷洜鍒癉ispatchOrd琛�
+            if (TaskStatus.CANCELLED.equals(newTaskStatus) && emergency.getCancelReason() != null) {
+                syncCancelReasonToDispatchOrd(emergency.getLegacyDispatchOrdId(), emergency.getCancelReason());
             }
             
             // 鎻掑叆鐘舵�佸彉鏇磋褰曞埌DispatchOrd_Running琛�
@@ -192,4 +205,53 @@
             // 涓嶆姏鍑哄紓甯革紝閬垮厤褰卞搷涓绘祦绋�
         }
     }
+    
+    /**
+     * 鍚屾鍙栨秷鍘熷洜鍒癉ispatchOrd琛�
+     * 
+     * @param dispatchOrdId 璋冨害鍗旾D
+     * @param cancelReason 鍙栨秷鍘熷洜锛堝瓧鍏竩alue锛�
+     */
+    private void syncCancelReasonToDispatchOrd(Long dispatchOrdId, String cancelReason) {
+        try {
+            if (cancelReason == null || cancelReason.isEmpty()) {
+                log.debug("鍙栨秷鍘熷洜涓虹┖锛岃烦杩囧悓姝ワ紝DispatchOrdID: {}", dispatchOrdId);
+                return;
+            }
+            
+            // 灏哻ancelReason锛堝瓧鍏竩alue锛夎浆鎹负Integer
+            Integer cancelReasonId = null;
+            try {
+                cancelReasonId = Integer.valueOf(cancelReason);
+            } catch (NumberFormatException e) {
+                log.error("鍙栨秷鍘熷洜鏍煎紡閿欒锛屾棤娉曡浆鎹负鏁板瓧锛宑ancelReason: {}, DispatchOrdID: {}", cancelReason, dispatchOrdId);
+                return;
+            }
+            
+            // 浠庢暟鎹瓧鍏镐腑鏌ヨ鍙栨秷鍘熷洜鏂囨湰
+            String cancelReasonText = sysDictDataMapper.selectDictLabel("task_cancel_reason", cancelReason);
+            if (cancelReasonText == null || cancelReasonText.isEmpty()) {
+                log.warn("鏈壘鍒板彇娑堝師鍥犲搴旂殑鏂囨湰锛宑ancelReason: {}, DispatchOrdID: {}", cancelReason, dispatchOrdId);
+                cancelReasonText = cancelReason; // 浣跨敤鍘熷�间綔涓洪澶�
+            }
+            
+            log.info("寮�濮嬪悓姝ュ彇娑堝師鍥犲埌DispatchOrd锛孌ispatchOrdID: {}, 鍙栨秷鍘熷洜ID: {}, 鍙栨秷鍘熷洜鏂囨湰: {}", 
+                dispatchOrdId, cancelReasonId, cancelReasonText);
+            
+            // 璋冪敤Mapper鏇存柊DispatchOrd琛�
+            int rows = dispatchOrdMapper.updateDispatchOrdCancelReason(dispatchOrdId, cancelReasonId, cancelReasonText);
+            
+            if (rows > 0) {
+                log.info("鎴愬姛鍚屾鍙栨秷鍘熷洜鍒癉ispatchOrd锛孌ispatchOrdID: {}, 鍙栨秷鍘熷洜: {} ({})", 
+                    dispatchOrdId, cancelReasonText, cancelReasonId);
+            } else {
+                log.warn("鍚屾鍙栨秷鍘熷洜澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勮皟搴﹀崟锛孌ispatchOrdID: {}", dispatchOrdId);
+            }
+            
+        } catch (Exception e) {
+            log.error("鍚屾鍙栨秷鍘熷洜鍒癉ispatchOrd寮傚父锛孌ispatchOrdID: {}, 鍙栨秷鍘熷洜: {}", 
+                dispatchOrdId, cancelReason, e);
+            // 涓嶆姏鍑哄紓甯革紝閬垮厤褰卞搷涓绘祦绋�
+        }
+    }
 }

--
Gitblit v1.9.1