From b5895c07c618f08f21ad428e2b75ddc36d159a87 Mon Sep 17 00:00:00 2001
From: zy <zy@123>
Date: 星期三, 16 七月 2025 11:05:17 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java |   91 +++++++++++++++++++++++++++------------------
 1 files changed, 54 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java b/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
index e6fed97..fdde303 100644
--- a/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
@@ -30,6 +30,8 @@
     private JSONObject fakeStatusDemo = JSONObject.parseObject("{\"mode\":1,\"extend\":{\"countQuantity\":400,\"suspendState\":0,\"minCellVoltage\":3279,\"chargeCycleTimes\":0,\"maxCellVoltage\":3281,\"surplusQuantity\":204,\"voltage\":5248},\"hasLift\":false,\"hasPallet\":false,\"batteryVoltage\":5248,\"runDirection\":\"2\",\"currentCode\":\"{\\\"x\\\":19,\\\"y\\\":11,\\\"z\\\":2}\",\"errorCode\":\"0\",\"hasCharge\":false,\"batteryPower\":\"51\",\"speed\":0,\"deviceStatus\":1}");
     private ServerSocket serverSocket;
     private Integer gatewayPort;
+    private boolean enableFake;
+    private boolean enableFakeDeviceThread;
     private ConcurrentHashMap<String, Thread> fakeThreadMap = new ConcurrentHashMap();
     private ConcurrentHashMap<String, Socket> fakeServerMap = new ConcurrentHashMap();
     private ConcurrentHashMap<String, JSONObject> fakeStatusMap = new ConcurrentHashMap();
@@ -37,28 +39,42 @@
 
     private boolean fake = false;
 
-    public FakeNyShuttleThread(RedisUtil redisUtil, Integer gatewayPort) {
+    public FakeNyShuttleThread(RedisUtil redisUtil, Integer gatewayPort, boolean enableFake, boolean enableFakeDeviceThread) {
         this.redisUtil = redisUtil;
         this.gatewayPort = gatewayPort;
+        this.enableFake = enableFake;
+        this.enableFakeDeviceThread = enableFakeDeviceThread;
     }
 
     @Override
     public void run() {
         News.info("Fake Server is Started");
 
+        FakeDeviceUtils fakeDeviceUtils = null;
+        while (true) {
+            try {
+                fakeDeviceUtils = SpringUtils.getBean(FakeDeviceUtils.class);
+            }catch (Exception e){}
+
+            if(fakeDeviceUtils == null){
+                continue;
+            }
+
+            break;
+        }
+
         acceptorThread();
         fakeCommandThread();
 
-        while (true) {
-            try {
-                initFakeDeviceServer();
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-        }
+        initDeviceThread(fakeDeviceUtils);
+        initFakeDeviceServer(fakeDeviceUtils);
     }
 
     private void acceptorThread() {
+        if(!enableFake){
+            return;
+        }
+
         Thread acceptorThread = new Thread(() -> {
             log.info("{}:acceptorThread is start");
             try {
@@ -140,6 +156,10 @@
     }
 
     private void fakeCommandThread() {
+        if(!enableFake){
+            return;
+        }
+
         Thread fakeCommandThread = new Thread(() -> {
             while (true) {
                 try {
@@ -162,14 +182,7 @@
         fakeCommandThread.start();
     }
 
-    private synchronized void initFakeDeviceServer() {
-        FakeDeviceUtils fakeDeviceUtils = null;
-        try {
-            fakeDeviceUtils = SpringUtils.getBean(FakeDeviceUtils.class);
-        }catch (Exception e){}
-        if(fakeDeviceUtils == null){
-            return;
-        }
+    private synchronized void initFakeDeviceServer(FakeDeviceUtils fakeDeviceUtils) {
         List<DeviceConfig> deviceConfigs = fakeDeviceUtils.getFakeDeviceConfig();
         for (DeviceConfig device : deviceConfigs) {
             if (!device.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) {
@@ -182,19 +195,6 @@
 
             if (fakeThreadMap.containsKey(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo())) {
                 continue;
-            }
-
-            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
-            if (shuttleThread == null) {
-                // init
-                NyShuttleThread thread = new NyShuttleThread(device, redisUtil);;
-                new Thread(thread).start();
-                SlaveConnection.put(SlaveType.Shuttle, device.getDeviceNo(), thread);
-            }else {
-                Socket socket = shuttleThread.getSocket();
-                if(socket == null){
-                    continue;
-                }
             }
 
             log.info("{}:device is run,devices:{}", device.getDeviceNo(),JSON.toJSONString(fakeServerMap));
@@ -213,9 +213,33 @@
             });
             fakeThread.start();
             fakeThreadMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeThread);
+        }
+    }
+
+    private void initDeviceThread(FakeDeviceUtils fakeDeviceUtils) {
+        if (!enableFakeDeviceThread) {
+            return;
+        }
+        List<DeviceConfig> deviceConfigs = fakeDeviceUtils.getFakeDeviceConfig();
+        for (DeviceConfig device : deviceConfigs) {
+            if (!device.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) {
+                continue;
+            }
+
+            if (!device.getThreadImpl().equals("NyShuttleThread")) {
+                continue;
+            }
+
+            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
+            if (shuttleThread == null) {
+                // init
+                NyShuttleThread thread = new NyShuttleThread(device, redisUtil);;
+                new Thread(thread).start();
+                SlaveConnection.put(SlaveType.Shuttle, device.getDeviceNo(), thread);
+            }
 
             try {
-                Thread.sleep(2000);
+                Thread.sleep(1000);
             }catch (Exception e){}
         }
     }
@@ -329,7 +353,6 @@
         try {
             Socket socket = fakeServerMap.get(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
             if (socket == null) {
-                removeFake(device);
                 return;
             }
             InputStream inputStream = socket.getInputStream();
@@ -361,12 +384,6 @@
     }
 
     private void removeFake(DeviceConfig device) {
-        Thread thread = fakeThreadMap.get(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
-        if (thread != null) {
-            thread.interrupt();
-        }
-
-        fakeThreadMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
         fakeServerMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
         fakeStatusMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
         fakeCommandMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());

--
Gitblit v1.9.1