From 96cfc17f191fee0a05070ec8e7bb6fb099f0231c Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期三, 24 十二月 2025 14:28:42 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/ServerBootstrap.java |  110 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 72 insertions(+), 38 deletions(-)

diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index b0cb5a0..4912e40 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -9,6 +9,7 @@
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.thread.impl.ZySiemensCrnThread;
+import com.zy.core.thread.impl.ZySiemensDualCrnThread;
 import com.zy.core.thread.impl.ZyStationThread;
 import com.zy.core.thread.impl.ZyRgvThread;
 
@@ -17,7 +18,6 @@
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PreDestroy;
 import java.util.List;
 
 /**
@@ -37,7 +37,6 @@
     @Async
     public void init() throws InterruptedException {
         News.info("鏍稿績鎺у埗灞傚紑濮嬪垵濮嬪寲...............................................");
-        Thread.sleep(2000);
         // 鍒濆鍖栨秷鎭槦鍒�
         initMq();
         // 鍒濆鍖栦笅浣嶆満绾跨▼
@@ -53,6 +52,12 @@
                 .eq("device_type", String.valueOf(SlaveType.Crn)));
         for (DeviceConfig crn : crnList) {
             MessageQueue.init(SlaveType.Crn, crn.getDeviceNo());
+        }
+        // 鍒濆鍖栧弻宸ヤ綅鍫嗗灈鏈簃q
+        List<DeviceConfig> dualCrnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.DualCrn)));
+        for (DeviceConfig crn : dualCrnList) {
+            MessageQueue.init(SlaveType.DualCrn, crn.getDeviceNo());
         }
         // 鍒濆鍖朢gv灏忚溅mq
         List<DeviceConfig> rgvList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
@@ -81,57 +86,86 @@
     }
 
     private void initThread(){
-        News.info("鍒濆鍖栧爢鍨涙満........................................................");
         List<DeviceConfig> crnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                 .eq("device_type", String.valueOf(SlaveType.Crn)));
-        for (DeviceConfig deviceConfig : crnList) {
-            ThreadHandler thread = null;
-            if (deviceConfig.getThreadImpl().equals("ZySiemensCrnThread")) {
-                thread = new ZySiemensCrnThread(deviceConfig, redisUtil);
-            } else {
-                throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
-            }
+        if(!crnList.isEmpty()) {
+            News.info("鍒濆鍖栧爢鍨涙満........................................................");
+            for (DeviceConfig deviceConfig : crnList) {
+                ThreadHandler thread = null;
+                if (deviceConfig.getThreadImpl().equals("ZySiemensCrnThread")) {
+                    thread = new ZySiemensCrnThread(deviceConfig, redisUtil);
+                } else {
+                    throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
+                }
 
-            new Thread(thread).start();
-            SlaveConnection.put(SlaveType.Crn, deviceConfig.getDeviceNo(), thread);
+                Thread t = new Thread(thread);
+                t.setName("CrnThread-" + deviceConfig.getDeviceNo());
+                t.setDaemon(true);
+                t.start();
+                SlaveConnection.put(SlaveType.Crn, deviceConfig.getDeviceNo(), thread);
+            }
         }
 
-        News.info("鍒濆鍖栬緭閫佺珯........................................................");
+        List<DeviceConfig> dualCrnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.DualCrn)));
+        if(!dualCrnList.isEmpty()) {
+            News.info("鍒濆鍖栧弻宸ヤ綅鍫嗗灈鏈�........................................................");
+            for (DeviceConfig deviceConfig : dualCrnList) {
+                ThreadHandler thread = null;
+                if (deviceConfig.getThreadImpl().equals("ZySiemensDualCrnThread")) {
+                    thread = new ZySiemensDualCrnThread(deviceConfig, redisUtil);
+                } else {
+                    throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
+                }
+
+                Thread t = new Thread(thread);
+                t.setName("DualCrnThread-" + deviceConfig.getDeviceNo());
+                t.setDaemon(true);
+                t.start();
+                SlaveConnection.put(SlaveType.DualCrn, deviceConfig.getDeviceNo(), thread);
+            }
+        }
+
         List<DeviceConfig> devpList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                 .eq("device_type", String.valueOf(SlaveType.Devp)));
-        for (DeviceConfig deviceConfig : devpList) {
-            ThreadHandler thread = null;
-            if (deviceConfig.getThreadImpl().equals("ZyStationThread")) {
-                thread = new ZyStationThread(deviceConfig, redisUtil);
-            } else {
-                throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
-            }
+        if(!devpList.isEmpty()) {
+            News.info("鍒濆鍖栬緭閫佺珯........................................................");
+            for (DeviceConfig deviceConfig : devpList) {
+                ThreadHandler thread = null;
+                if (deviceConfig.getThreadImpl().equals("ZyStationThread")) {
+                    thread = new ZyStationThread(deviceConfig, redisUtil);
+                } else {
+                    throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
+                }
 
-            new Thread(thread).start();
-            SlaveConnection.put(SlaveType.Devp, deviceConfig.getDeviceNo(), thread);
+                Thread t = new Thread(thread);
+                t.setName("DevpThread-" + deviceConfig.getDeviceNo());
+                t.setDaemon(true);
+                t.start();
+                SlaveConnection.put(SlaveType.Devp, deviceConfig.getDeviceNo(), thread);
+            }
         }
 
-        News.info("鍒濆鍖朢GV........................................................");
         List<DeviceConfig> rgvList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                 .eq("device_type", String.valueOf(SlaveType.Rgv)));
-        for (DeviceConfig deviceConfig : rgvList) {
-            ThreadHandler thread = null;
-            if (deviceConfig.getThreadImpl().equals("ZyRgvThread")) {
-                thread = new ZyRgvThread(deviceConfig, redisUtil);
-            } else {
-                throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
-            }
+        if(!rgvList.isEmpty()) {
+            News.info("鍒濆鍖朢GV........................................................");
+            for (DeviceConfig deviceConfig : rgvList) {
+                ThreadHandler thread = null;
+                if (deviceConfig.getThreadImpl().equals("ZyRgvThread")) {
+                    thread = new ZyRgvThread(deviceConfig, redisUtil);
+                } else {
+                    throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�");
+                }
 
-            new Thread(thread).start();
-            SlaveConnection.put(SlaveType.Rgv, deviceConfig.getDeviceNo(), thread);
+                Thread t = new Thread(thread);
+                t.setName("RgvThread-" + deviceConfig.getDeviceNo());
+                t.setDaemon(true);
+                t.start();
+                SlaveConnection.put(SlaveType.Rgv, deviceConfig.getDeviceNo(), thread);
+            }
         }
 
     }
-
-
-    @PreDestroy
-    public void destroy() {
-    }
-
 
 }

--
Gitblit v1.9.1