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