From 8e1cb9a0ff0f25f3c29fa05407e5ab35d3b484de Mon Sep 17 00:00:00 2001
From: zy <zy@123>
Date: 星期五, 25 七月 2025 13:49:51 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java | 100 ++++++++++++++++++++++++++++++++++----------------
1 files changed, 68 insertions(+), 32 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 0c67bd8..5a58ada 100644
--- a/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
@@ -3,11 +3,11 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zy.common.Cools;
-import com.zy.common.R;
import com.zy.common.SpringUtils;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.RedisKeyType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.param.UpdateFakeThreadStatusParam;
import com.zy.core.properties.DeviceConfig;
@@ -19,9 +19,7 @@
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@@ -174,7 +172,7 @@
}
List<DeviceConfig> deviceConfigs = fakeDeviceUtils.getFakeDeviceConfig();
for (DeviceConfig device : deviceConfigs) {
- excuteFakeCommand(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
+ excuteFakeCommand(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), device);
}
}catch (Exception e){
e.printStackTrace();
@@ -250,7 +248,7 @@
}
}
- private void excuteFakeCommand(String key) {
+ private void excuteFakeCommand(String key, DeviceConfig deviceConfig) {
if (!fakeCommandMap.containsKey(key)) {
return;
}
@@ -274,7 +272,7 @@
fakeStatus.put("hasLift", true);
fakeStatus.put("deviceStatus", 1);//璁惧绌洪棽
fakeStatusMap.put(key, fakeStatus);
- }else if (commandType.equals("liftDown")) {
+ } else if (commandType.equals("liftDown")) {
fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
fakeStatusMap.put(key, fakeStatus);
@@ -283,7 +281,7 @@
fakeStatus.put("hasLift", false);
fakeStatus.put("deviceStatus", 1);//璁惧绌洪棽
fakeStatusMap.put(key, fakeStatus);
- }else if (commandType.equals("charge")) {
+ } else if (commandType.equals("charge")) {
fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
fakeStatusMap.put(key, fakeStatus);
@@ -297,14 +295,14 @@
batteryPower = batteryPower + 1;
fakeStatus.put("batteryPower", batteryPower);
fakeStatusMap.put(key, fakeStatus);
- if(batteryPower >= 100) {
+ if (batteryPower >= 100) {
break;
}
}
fakeStatus.put("deviceStatus", 1);//璁惧绌洪棽
fakeStatusMap.put(key, fakeStatus);
- }else if (commandType.equals("stopCharge")) {
+ } else if (commandType.equals("stopCharge")) {
fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
fakeStatusMap.put(key, fakeStatus);
@@ -313,7 +311,7 @@
fakeStatus.put("hasCharge", false);
fakeStatus.put("deviceStatus", 1);//璁惧绌洪棽
fakeStatusMap.put(key, fakeStatus);
- }else if (commandType.equals("updateFloor")) {
+ } else if (commandType.equals("updateFloor")) {
fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
fakeStatusMap.put(key, fakeStatus);
@@ -327,39 +325,77 @@
fakeStatus.put("currentCode", JSON.toJSONString(point));
fakeStatus.put("deviceStatus", 1);//璁惧绌洪棽
fakeStatusMap.put(key, fakeStatus);
- }else if (commandType.equals("move")) {
- fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
- fakeStatusMap.put(key, fakeStatus);
- Thread.sleep(2000);
+ } else if (commandType.equals("move")) {
+ boolean firstMove = true;
+
+ String baseCommandKey = RedisKeyType.FAKE_SHUTTLE_MOVE_EXECUTE_COMMAND_LIST.key + deviceConfig.getDeviceNo() + "_";
+ Set<String> keys = redisUtil.searchKeys(baseCommandKey);
+
+ if (!keys.isEmpty()) {
+ firstMove = false;
+ }
JSONObject body = command.getJSONObject("commandBody");
String pathList = body.getString("path");
List<JSONObject> list = JSON.parseArray(pathList, JSONObject.class);
- for (JSONObject path : list) {
- while (true) {
- JSONObject realFakeStatus = fakeStatusMap.get(key);
- Integer errorCode = realFakeStatus.getInteger("errorCode");
- if (errorCode > 0) {
- continue;
- }
+
+ String finalKey = baseCommandKey + System.currentTimeMillis();
+ redisUtil.set(finalKey, list);
+
+ if(!firstMove) {
+ return;
+ }
+
+ fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
+ fakeStatusMap.put(key, fakeStatus);
+ Thread.sleep(2000);
+
+ while (true) {
+ Set<String> searchKeys = redisUtil.searchKeys(baseCommandKey);
+ if(searchKeys.isEmpty()) {
break;
}
- String currentCode = fakeStatus.getString("currentCode");
- JSONObject point = JSON.parseObject(currentCode);
- point.put("x", path.getInteger("xp"));
- point.put("y", path.getInteger("yp"));
- point.put("z", path.getInteger("z"));
- fakeStatus.put("currentCode", JSON.toJSONString(point));
- fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
- fakeStatusMap.put(key, fakeStatus);
- Thread.sleep(2000);
+ TreeSet<String> treeSet = new TreeSet<>();
+ for (String tmpKey : searchKeys) {
+ treeSet.add(tmpKey);
+ }
+
+ String first = treeSet.first();
+
+ Object object = redisUtil.get(first);
+ if(object == null) {
+ break;
+ }
+
+ List<JSONObject> executePathList = (List<JSONObject>) object;
+ for (JSONObject path : executePathList) {
+ while (true) {
+ JSONObject realFakeStatus = fakeStatusMap.get(key);
+ Integer errorCode = realFakeStatus.getInteger("errorCode");
+ if (errorCode > 0) {
+ continue;
+ }
+ break;
+ }
+
+ String currentCode = fakeStatus.getString("currentCode");
+ JSONObject point = JSON.parseObject(currentCode);
+ point.put("x", path.getInteger("xp"));
+ point.put("y", path.getInteger("yp"));
+ point.put("z", path.getInteger("z"));
+ fakeStatus.put("currentCode", JSON.toJSONString(point));
+ fakeStatus.put("deviceStatus", 0);//璁惧蹇欑
+ fakeStatusMap.put(key, fakeStatus);
+ Thread.sleep(2000);
+ }
+ redisUtil.del(first);
}
fakeStatus.put("deviceStatus", 1);//璁惧绌洪棽
fakeStatusMap.put(key, fakeStatus);
}
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
}).start();
--
Gitblit v1.9.1