From f194cac6c34a6c8748e4ca577e723b97e0baa24e Mon Sep 17 00:00:00 2001
From: zy <zy@123>
Date: 星期三, 16 七月 2025 12:48:32 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java | 92 ++++++++++++++++++++++++++++-----------------
1 files changed, 57 insertions(+), 35 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..54c0ba5 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,11 @@
fakeCommandThread.start();
}
- private synchronized void initFakeDeviceServer() {
- FakeDeviceUtils fakeDeviceUtils = null;
- try {
- fakeDeviceUtils = SpringUtils.getBean(FakeDeviceUtils.class);
- }catch (Exception e){}
- if(fakeDeviceUtils == null){
+ private synchronized void initFakeDeviceServer(FakeDeviceUtils fakeDeviceUtils) {
+ if(!enableFake){
return;
}
+
List<DeviceConfig> deviceConfigs = fakeDeviceUtils.getFakeDeviceConfig();
for (DeviceConfig device : deviceConfigs) {
if (!device.getDeviceType().equals(String.valueOf(SlaveType.Shuttle))) {
@@ -182,19 +199,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 +217,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){}
}
}
@@ -228,6 +256,7 @@
fakeCommandMap.remove(key);
new Thread(() -> {
try {
+ log.info("Fake Shuttle Command Running: {}", JSON.toJSONString(command));
JSONObject fakeStatus = fakeStatusMap.get(key);
String commandType = command.getString("commandType");
if (commandType == null) {
@@ -329,7 +358,6 @@
try {
Socket socket = fakeServerMap.get(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
if (socket == null) {
- removeFake(device);
return;
}
InputStream inputStream = socket.getInputStream();
@@ -361,12 +389,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