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