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