#
Junjie
2025-07-07 f953070108efe8d06ccd0c04b92c51a78f03d349
src/main/java/com/zy/core/thread/fake/FakeNyShuttleThread.java
@@ -2,8 +2,8 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zy.common.Cools;
import com.zy.common.SpringUtils;
import com.zy.common.exception.CoolException;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
import com.zy.core.ThreadHandler;
@@ -27,7 +27,7 @@
    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\\\":12,\\\"y\\\":37,\\\"z\\\":3}\",\"errorCode\":\"0\",\"hasCharge\":false,\"batteryPower\":\"51\",\"speed\":0,\"deviceStatus\":1}");
    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 HashMap<String, Socket> fakeServerMap = new HashMap();
    private HashMap<String, JSONObject> fakeStatusMap = new HashMap();
@@ -77,17 +77,18 @@
                    try {
                        ServerSocket serverSocket = new ServerSocket(device.getPort());
                        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(JSON.toJSONString(fakeStatusDemo)));
                        fakeStatusMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), JSON.parseObject(fakeStatus));
                        while (true) {
                            if(fakeSocket == null) {
                                fakeServerMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
                                break;
                            }
                            if(fakeSocket.isClosed()) {
                                fakeSocket = null;
                                continue;
                            }
                            handleClient(fakeSocket, device);
@@ -126,9 +127,7 @@
            log.info("收到Client Data: {}", JSON.toJSONString(result));
            processCommand(result, device);
        } catch (Exception e) {
//            e.printStackTrace();
            socket.close();
            fakeServerMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
            e.printStackTrace();
        }
    }
@@ -137,22 +136,30 @@
        JSONObject fakeStatus = fakeStatusMap.get(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo());
        JSONObject request = result.getJSONObject("request");
        JSONObject header = request.getJSONObject("header");
        JSONObject body = request.getJSONObject("body");
        Integer requestId = header.getInteger("requestId");
        String requestType = body.getString("requestType");
        Integer taskId = body.getInteger("taskId");
        if (requestType.equals("liftUp")) {
            fakeStatus.put("hasLift", true);
            response = genereateFakeCommandResponse(requestId, taskId, requestType);
        } else if (requestType.equals("liftDown")) {
            fakeStatus.put("hasLift", false);
            response = genereateFakeCommandResponse(requestId, taskId, requestType);
        } else if (requestType.equals("charge")) {
            fakeStatus.put("hasCharge", true);
            response = genereateFakeCommandResponse(requestId, taskId, requestType);
        } else if (requestType.equals("stopCharge")) {
            fakeStatus.put("hasCharge", false);
            response = genereateFakeCommandResponse(requestId, taskId, requestType);
        } else if (requestType.equals("updateFloor")) {
            String currentCode = fakeStatus.getString("currentCode");
            JSONObject point = JSON.parseObject(currentCode);
            point.put("z", body.getInteger("z"));
            fakeStatus.put("currentCode", JSON.toJSONString(point));
            response = genereateFakeCommandResponse(requestId, taskId, requestType);
        } else if (requestType.equals("move")) {
            String pathList = body.getString("path");
            List<JSONObject> list = JSON.parseArray(pathList, JSONObject.class);
@@ -170,7 +177,7 @@
                }
            }
        } else if (requestType.equals("readState")) {
            response = genereateFakeStatusResponse(taskId, fakeStatus);
            response = genereateFakeStatusResponse(requestId, fakeStatus);
        }
        fakeStatusMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeStatus);
@@ -221,6 +228,27 @@
        return JSON.toJSONString(result);
    }
    public String genereateFakeCommandResponse(Integer responseId, Integer taskId, String commandType) {
        JSONObject result = new JSONObject();
        JSONObject response = new JSONObject();
        result.put("msgType", "responseMsg");
        result.put("robotId", 5001);
        result.put("response", response);
        JSONObject header = new JSONObject();
        JSONObject body = new JSONObject();
        response.put("header", header);
        response.put("body", body);
        header.put("responseId", responseId);
        header.put("version", "GV-APP-F427-N24036-1112");
        body.put("responseType", commandType);
        body.put("result", "success");
        body.put("taskId", taskId);
        return JSON.toJSONString(result);
    }
    @Override
    public boolean connect() {
        return true;