#
Junjie
2025-03-29 5dd930fc0ad19cfc75df3a035336dd003e7c22ef
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -89,7 +89,7 @@
            while (true) {
                try {
                    read();
                    Thread.sleep(50);
                    Thread.sleep(200);
                } catch (Exception e) {
                    log.error("ShuttleThread Fail", e);
                }
@@ -194,7 +194,7 @@
            }
            JSONObject result = JSON.parseObject(sb.toString());//得到响应结果集
            if (!socketResults.isEmpty() && socketResults.size() >= 5) {
            if (!socketResults.isEmpty() && socketResults.size() >= 100) {
                socketResults.remove(0);//清理头节点
            }
            socketResults.add(result);//添加数据
@@ -203,7 +203,7 @@
        }
    }
    public JSONObject getRequestBody(String type) {
    public JSONObject getRequestBody(String type, String taskId) {
        try {
            // 获取服务器响应
            JSONObject result = null;
@@ -226,7 +226,14 @@
                }
                if (!responseType.equals(type)) {
                    continue;//响应ID与请求ID不一致,不在调试模式下
                    continue;//响应类型与请求类型不一致,不在调试模式下
                }
                if (taskId != null) {
                    String responseTaskId = resultBody.get("taskId").toString();
                    if (!responseTaskId.equals(taskId)) {
                        continue;//响应ID与请求ID不一致,不在调试模式下
                    }
                }
                result = socketResult;
@@ -395,7 +402,7 @@
                socketResults.remove(removeIdx);
            }
        } catch (Exception e) {
//            e.printStackTrace();
            e.printStackTrace();
        }
    }
@@ -458,13 +465,17 @@
            }
            for (NyShuttleHttpCommand requestCommand : commandList) {
                JSONObject result = requestCommand(requestCommand);
                if (result == null) {
                    return response;//请求失败
                while (true) {
                    JSONObject result = requestCommand(requestCommand);
                    if (result == null) {
//                        return response;//请求失败
                        continue;//请求失败尝试重新请求
                    }
                    this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间
                    response.setMessage(JSON.toJSONString(result));
                    response.setResult(true);
                    break;
                }
                this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间
                response.setMessage(JSON.toJSONString(result));
                response.setResult(true);
            }
            return response;
        } catch (Exception e) {
@@ -704,6 +715,23 @@
    }
    @Override
    public boolean isFault() {
        if (this.shuttleProtocol.getErrorCode() == null
                || this.shuttleProtocol.getMode() == null
                || this.shuttleProtocol.getExtend() == null
        ) {
            return false;
        }
        InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend();
        boolean res = this.shuttleProtocol.getMode() == 0
                && !this.shuttleProtocol.getErrorCode().equals("0")
                && extend.getSuspendState() == 1
                ;
        return res;
    }
    @Override
    public List<NavigateNode> getMoveAdvancePath() {
        ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
@@ -809,6 +837,13 @@
    @Override
    public boolean enableDemo(boolean enable) {
        shuttleProtocol.setDemo(enable);
        return true;
    }
    @Override
    public boolean offerSystemMsg(String format, Object... arguments) {
        String msg = News.replace(format, arguments);
        shuttleProtocol.setSystemMsg(msg);
        return true;
    }
@@ -1064,17 +1099,20 @@
//            System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand));
        String requestType = null;
        String taskId = null;
        try {
            requestType = httpCommand.getRequest().getBody().get("requestType").toString();
            taskId = httpCommand.getRequest().getBody().get("taskId").toString();
        } catch (Exception e) {
            return null;
//            return null;
            //taskId可能取空,不报错,正常情况
        }
        // 获取服务器响应
        // 尝试10次
        // 尝试100次
        JSONObject result = null;
        for (int i = 0; i < 10; i++) {
            result = getRequestBody(requestType);
        for (int i = 0; i < 100; i++) {
            result = getRequestBody(requestType, taskId);
            if (result == null) {
                try {
                    Thread.sleep(100);