From 1f963e2344833ff02087c05411b112147492bd00 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期六, 21 六月 2025 22:18:59 +0800
Subject: [PATCH] 添加钉钉推送消息功能
---
src/main/java/com/gs/xky/task/PurchaseOrderSyncTask.java | 71 ++++++++++++++++++++++++++++++++---
1 files changed, 65 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/gs/xky/task/PurchaseOrderSyncTask.java b/src/main/java/com/gs/xky/task/PurchaseOrderSyncTask.java
index 2da0e50..dd9f7e5 100644
--- a/src/main/java/com/gs/xky/task/PurchaseOrderSyncTask.java
+++ b/src/main/java/com/gs/xky/task/PurchaseOrderSyncTask.java
@@ -8,6 +8,9 @@
import org.springframework.stereotype.Component;
import java.io.IOException;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* 閲囪喘璁㈠崟鍚屾瀹氭椂浠诲姟
@@ -18,20 +21,76 @@
private static final Logger log = LoggerFactory.getLogger(PurchaseOrderSyncTask.class);
private final PurchaseService purchaseService;
+ private final Executor purchaseTaskExecutor; // 娉ㄥ叆涓撶敤绾跨▼姹�
+
+ // 鐢ㄤ簬鏍囪浠诲姟鏄惁姝e湪鎵ц
+ private final AtomicBoolean isRunning = new AtomicBoolean(false);
/**
* 瀹氭椂鎵ц閲囪喘璁㈠崟鍚屾浠诲姟
* 姣忓ぉ12鐐规暣鎵ц涓�娆�
* 璁剧疆涓�12鐐�05鍒嗘墽琛岋紝閬垮厤涓庡叾浠栧畾鏃朵换鍔″啿绐�
+ * 浣跨敤寮傛鎵ц锛岄槻姝㈤樆濉炲叾浠栧畾鏃朵换鍔�
*/
@Scheduled(cron = "0 5 12 * * ?")
public void syncPurchaseOrders() {
- log.info("銆恠yncPurchaseOrders銆戝紑濮嬫墽琛岄噰璐鍗曞悓姝ヤ换鍔�");
- try {
- purchaseService.syncPurchaseOrderDetails();
- log.info("銆恠yncPurchaseOrders銆戦噰璐鍗曞悓姝ヤ换鍔℃墽琛屾垚鍔�");
- } catch (IOException e) {
- log.error("銆恠yncPurchaseOrders銆戦噰璐鍗曞悓姝ヤ换鍔℃墽琛屽紓甯�: {}", e.getMessage(), e);
+ // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欒烦杩囨湰娆℃墽琛�
+ if (!isRunning.compareAndSet(false, true)) {
+ log.info("銆恠yncPurchaseOrders銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛岃烦杩囨湰娆℃墽琛�");
+ return;
}
+
+ log.info("銆恠yncPurchaseOrders銆戝紑濮嬫墽琛岄噰璐鍗曞悓姝ヤ换鍔�");
+
+ // 浣跨敤涓撶敤绾跨▼姹犳墽琛屽紓姝ヤ换鍔�
+ CompletableFuture.runAsync(() -> {
+ try {
+ log.info("銆恠yncPurchaseOrders銆戝紓姝ョ嚎绋嬪紑濮嬫墽琛岄噰璐鍗曞悓姝�");
+ purchaseService.syncPurchaseOrderDetails();
+ log.info("銆恠yncPurchaseOrders銆戦噰璐鍗曞悓姝ヤ换鍔℃墽琛屾垚鍔�");
+ } catch (IOException e) {
+ log.error("銆恠yncPurchaseOrders銆戦噰璐鍗曞悓姝ヤ换鍔℃墽琛屽紓甯�: {}", e.getMessage(), e);
+ } finally {
+ // 鏃犺鎴愬姛杩樻槸澶辫触锛岄兘灏嗚繍琛岀姸鎬侀噸缃�
+ isRunning.set(false);
+ log.info("銆恠yncPurchaseOrders銆戜换鍔$姸鎬佸凡閲嶇疆锛屽彲浠ユ帴鍙楁柊鐨勪换鍔�");
+ }
+ }, purchaseTaskExecutor);
+
+ // 涓嶇瓑寰呬换鍔″畬鎴愶紝绔嬪嵆杩斿洖锛岄伩鍏嶉樆濉炶皟搴︾嚎绋�
+ log.info("銆恠yncPurchaseOrders銆戦噰璐鍗曞悓姝ヤ换鍔″凡鎻愪氦鍒板紓姝ョ嚎绋嬫墽琛�");
+ }
+
+ /**
+ * 鎵嬪姩瑙﹀彂閲囪喘璁㈠崟鍚屾浠诲姟
+ * 鐢ㄤ簬绯荤粺绠$悊鍛樻墜鍔ㄨЕ鍙戝悓姝�
+ *
+ * @return 浠诲姟鏄惁宸叉彁浜ゆ墽琛�
+ */
+ public boolean manualSyncPurchaseOrders() {
+ // 濡傛灉浠诲姟宸茬粡鍦ㄨ繍琛岋紝鍒欐嫆缁濇湰娆℃墽琛�
+ if (!isRunning.compareAndSet(false, true)) {
+ log.info("銆恗anualSyncPurchaseOrders銆戜笂涓�娆′换鍔¤繕鍦ㄦ墽琛屼腑锛屾嫆缁濇湰娆℃墽琛�");
+ return false;
+ }
+
+ log.info("銆恗anualSyncPurchaseOrders銆戞墜鍔ㄨЕ鍙戦噰璐鍗曞悓姝ヤ换鍔�");
+
+ // 浣跨敤涓撶敤绾跨▼姹犳墽琛屽紓姝ヤ换鍔�
+ CompletableFuture.runAsync(() -> {
+ try {
+ log.info("銆恗anualSyncPurchaseOrders銆戝紓姝ョ嚎绋嬪紑濮嬫墽琛岄噰璐鍗曞悓姝�");
+ purchaseService.syncPurchaseOrderDetails();
+ log.info("銆恗anualSyncPurchaseOrders銆戦噰璐鍗曞悓姝ヤ换鍔℃墽琛屾垚鍔�");
+ } catch (IOException e) {
+ log.error("銆恗anualSyncPurchaseOrders銆戦噰璐鍗曞悓姝ヤ换鍔℃墽琛屽紓甯�: {}", e.getMessage(), e);
+ } finally {
+ // 鏃犺鎴愬姛杩樻槸澶辫触锛岄兘灏嗚繍琛岀姸鎬侀噸缃�
+ isRunning.set(false);
+ log.info("銆恗anualSyncPurchaseOrders銆戜换鍔$姸鎬佸凡閲嶇疆锛屽彲浠ユ帴鍙楁柊鐨勪换鍔�");
+ }
+ }, purchaseTaskExecutor);
+
+ return true;
}
}
\ No newline at end of file
--
Gitblit v1.9.3