#
Junjie
2025-03-29 b301f89a7584c837b40a115b2e20803c06569d2c
#
1个文件已修改
38 ■■■■ 已修改文件
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -57,6 +57,7 @@
    private static final boolean DEBUG = false;//调试模式
    private List<JSONObject> socketReadResults = new ArrayList<>();
    private List<JSONObject> socketResults = new ArrayList<>();
    //原始设备数据
@@ -89,7 +90,7 @@
            while (true) {
                try {
                    read();
                    Thread.sleep(200);
                    Thread.sleep(50);
                } catch (Exception e) {
                    log.error("ShuttleThread Fail", e);
                }
@@ -197,7 +198,13 @@
            if (!socketResults.isEmpty() && socketResults.size() >= 20) {
                socketResults.remove(0);//清理头节点
            }
            if (result.containsKey("workingMode")) {
                //read
                socketReadResults.add(result);
            }else {
            socketResults.add(result);//添加数据
            }
        } catch (Exception e) {
//            e.printStackTrace();
        }
@@ -276,7 +283,14 @@
            //----------读取四向穿梭车状态-----------
            NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(slave.getId());
            JSONObject data = requestCommand(readStatusCommand);
            requestCommandAsync(readStatusCommand);//请求状态
            if (this.socketReadResults.isEmpty()) {
                return;
            }
            JSONObject data = this.socketReadResults.get(0);
            this.socketReadResults.remove(0);
            if (data == null) {
                if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) {
                    //最后一次上线时间超过60s,认定离线
@@ -1109,9 +1123,9 @@
        }
        // 获取服务器响应
        // 尝试100次
        // 尝试10次
        JSONObject result = null;
        for (int i = 0; i < 100; i++) {
        for (int i = 0; i < 10; i++) {
            result = getRequestBody(requestType, taskId);
            if (result == null) {
                try {
@@ -1126,6 +1140,22 @@
        return result;//返回Body结果集
    }
    private void requestCommandAsync(NyShuttleHttpCommand httpCommand) throws IOException {
        if (this.socket == null) {
            return;
        }
        //压缩数据包
        JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand));
        data.remove("nodes");
        // 获取输出流
        OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream());
        writer.write(JSON.toJSONString(data) + "\r\n");
        writer.flush();
//            System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand));
    }
    private JSONObject filterBodyData(JSONObject data) {
        Object response = data.get("response");
        if (response == null) {