From c4bf4428c1204763e585fe19af65cfb0c24b16af Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 13 七月 2025 19:41:32 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java |  100 +++++++++++++++++++++++--------------------------
 1 files changed, 47 insertions(+), 53 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 8a74dff..9f7f165 100644
--- a/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
@@ -18,26 +18,27 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
 
 @Slf4j
 @SuppressWarnings("all")
 public class FakeNyShuttleThread implements ThreadHandler {
 
-
     private RedisUtil redisUtil;
     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 HashMap<String, Thread> fakeThreadMap = new HashMap();
-    private HashMap<String, Socket> fakeServerMap = new HashMap();
-    private HashMap<String, JSONObject> fakeStatusMap = new HashMap();
-    private HashMap<String, JSONObject> fakeCommandMap = new HashMap();
+    private Integer gatewayPort;
+    private ConcurrentHashMap<String, Thread> fakeThreadMap = new ConcurrentHashMap();
+    private ConcurrentHashMap<String, Socket> fakeServerMap = new ConcurrentHashMap();
+    private ConcurrentHashMap<String, JSONObject> fakeStatusMap = new ConcurrentHashMap();
+    private ConcurrentHashMap<String, JSONObject> fakeCommandMap = new ConcurrentHashMap();
 
     private boolean fake = false;
 
-    public FakeNyShuttleThread(RedisUtil redisUtil) {
+    public FakeNyShuttleThread(RedisUtil redisUtil, Integer gatewayPort) {
         this.redisUtil = redisUtil;
+        this.gatewayPort = gatewayPort;
     }
 
     @Override
@@ -54,11 +55,7 @@
                     if(fakeDeviceUtils == null){
                         continue;
                     }
-                    String fakeDeviceConfig = fakeDeviceUtils.getFakeDeviceConfig();
-                    if(null == fakeDeviceConfig) {
-                        continue;
-                    }
-                    List<DeviceConfig> deviceConfigs = JSON.parseArray(fakeDeviceConfig, DeviceConfig.class);
+                    List<DeviceConfig> deviceConfigs = fakeDeviceUtils.getFakeDeviceConfig();
                     for (DeviceConfig device : deviceConfigs) {
                         excuteFakeCommand(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
                     }
@@ -73,7 +70,7 @@
             try {
                 try {
                     if (serverSocket == null) {
-                        serverSocket = new ServerSocket(8888);
+                        serverSocket = new ServerSocket(gatewayPort);
                     }
                 }catch (Exception e){
                     e.printStackTrace();
@@ -98,54 +95,51 @@
         if(fakeDeviceUtils == null){
             return;
         }
-        String fakeDeviceConfig = fakeDeviceUtils.getFakeDeviceConfig();
-        if(null != fakeDeviceConfig){
-            List<DeviceConfig> deviceConfigs = JSON.parseArray(fakeDeviceConfig, DeviceConfig.class);
-            for (DeviceConfig device : deviceConfigs) {
-                if (!device.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) {
-                    continue;
-                }
+        List<DeviceConfig> deviceConfigs = fakeDeviceUtils.getFakeDeviceConfig();
+        for (DeviceConfig device : deviceConfigs) {
+            if (!device.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) {
+                continue;
+            }
 
-                if (!device.getThreadImpl().equals("NyShuttleThread")) {
-                    continue;
-                }
+            if (!device.getThreadImpl().equals("NyShuttleThread")) {
+                continue;
+            }
 
-                if (fakeThreadMap.containsKey(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo())) {
-                    continue;
-                }
+            if (fakeThreadMap.containsKey(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo())) {
+                continue;
+            }
 
-                log.info("{}:device is run,devices:{}", device.getDeviceNo(),JSON.toJSONString(fakeServerMap));
+            log.info("{}:device is run,devices:{}", device.getDeviceNo(),JSON.toJSONString(fakeServerMap));
 
-                Thread fakeThread = new Thread(() -> {
-                    log.info("{}:device is start handle client", device.getDeviceNo());
-                    try {
-                        while (true) {
-                            if(!fakeServerMap.containsKey(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo())){
-                                log.info("{}:device is start,devices:{}", device.getDeviceNo(),JSON.toJSONString(fakeServerMap));
-                                Socket fakeSocket = serverSocket.accept();
-                                String fakeStatus = JSON.toJSONString(fakeStatusDemo);
-                                if (!Cools.isEmpty(device.getFakeInitStatus())) {
-                                    fakeStatus = device.getFakeInitStatus();
-                                }
-
-                                fakeServerMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeSocket);
-                                fakeStatusMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), JSON.parseObject(fakeStatus));
+            Thread fakeThread = new Thread(() -> {
+                log.info("{}:device is start handle client", device.getDeviceNo());
+                try {
+                    while (true) {
+                        if(!fakeServerMap.containsKey(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo())){
+                            log.info("{}:device is start,devices:{}", device.getDeviceNo(),JSON.toJSONString(fakeServerMap));
+                            Socket fakeSocket = serverSocket.accept();
+                            String fakeStatus = JSON.toJSONString(fakeStatusDemo);
+                            if (!Cools.isEmpty(device.getFakeInitStatus())) {
+                                fakeStatus = device.getFakeInitStatus();
                             }
 
-                            handleClient(device);
+                            fakeServerMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeSocket);
+                            fakeStatusMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), JSON.parseObject(fakeStatus));
                         }
-                    }catch (Exception e){
-                        e.printStackTrace();
-                    }
-                });
-                fakeThread.start();
-                fakeThreadMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeThread);
 
-                // init
-                ThreadHandler thread = new NyShuttleThread(device, redisUtil);;
-                new Thread(thread).start();
-                SlaveConnection.put(SlaveType.Shuttle, device.getDeviceNo(), thread);
-            }
+                        handleClient(device);
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            });
+            fakeThread.start();
+            fakeThreadMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeThread);
+
+            // init
+            ThreadHandler thread = new NyShuttleThread(device, redisUtil);;
+            new Thread(thread).start();
+            SlaveConnection.put(SlaveType.Shuttle, device.getDeviceNo(), thread);
         }
     }
 

--
Gitblit v1.9.1