From ab389a5a6b329b15a655340ba7b87bce7fd7871d Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 24 十二月 2025 17:16:19 +0800
Subject: [PATCH] 添加新增设备自动生成编码
---
mes-processes/mes-plcSend/src/main/java/com/mes/task/service/TaskExecutionEngine.java | 62 +++++++++++++++++++++++++++++++
1 files changed, 62 insertions(+), 0 deletions(-)
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/TaskExecutionEngine.java b/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/TaskExecutionEngine.java
index 352dfde..db6fc48 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/TaskExecutionEngine.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/TaskExecutionEngine.java
@@ -32,6 +32,8 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import javax.annotation.PreDestroy;
+
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -3154,5 +3156,65 @@
return summary;
}
}
+
+ /**
+ * 搴旂敤鍏抽棴鏃舵竻鐞嗚祫婧�
+ */
+ @PreDestroy
+ public void destroy() {
+ log.info("寮�濮嬫竻鐞員askExecutionEngine璧勬簮...");
+
+ // 鍋滄鎵�鏈夊畾鏃朵换鍔�
+ for (Map.Entry<String, List<ScheduledFuture<?>>> entry : taskScheduledTasks.entrySet()) {
+ String taskId = entry.getKey();
+ List<ScheduledFuture<?>> futures = entry.getValue();
+ if (futures != null) {
+ for (ScheduledFuture<?> future : futures) {
+ if (future != null && !future.isDone()) {
+ future.cancel(true);
+ }
+ }
+ }
+ log.debug("宸插仠姝换鍔� {} 鐨勬墍鏈夊畾鏃跺櫒", taskId);
+ }
+ taskScheduledTasks.clear();
+
+ // 鍏抽棴瀹氭椂鍣ㄧ嚎绋嬫睜
+ shutdownExecutor(scheduledExecutor, "瀹氭椂鍣ㄧ嚎绋嬫睜");
+
+ // 鍏抽棴骞惰鎵ц绾跨▼姹�
+ shutdownExecutor(executorService, "骞惰鎵ц绾跨▼姹�");
+
+ // 娓呯┖杩愯涓婁笅鏂�
+ runningTaskContexts.clear();
+
+ log.info("TaskExecutionEngine璧勬簮娓呯悊瀹屾垚");
+ }
+
+ /**
+ * 鍏抽棴绾跨▼姹�
+ */
+ private void shutdownExecutor(ExecutorService executor, String name) {
+ if (executor == null || executor.isShutdown()) {
+ return;
+ }
+
+ executor.shutdown();
+ try {
+ if (!executor.awaitTermination(10, TimeUnit.SECONDS)) {
+ log.warn("{} 鍦�10绉掑唴鏈兘姝e父鍏抽棴锛屽己鍒跺叧闂�", name);
+ executor.shutdownNow();
+ if (!executor.awaitTermination(5, TimeUnit.SECONDS)) {
+ log.error("{} 寮哄埗鍏抽棴澶辫触", name);
+ }
+ } else {
+ log.info("{} 宸叉甯稿叧闂�", name);
+ }
+ } catch (InterruptedException e) {
+ log.warn("{} 鍏抽棴杩囩▼涓涓柇", name, e);
+ executor.shutdownNow();
+ Thread.currentThread().interrupt();
+ }
+ }
}
--
Gitblit v1.8.0