From e6d9118e6c9083ae4c1f1dc18f34b23ed3da2581 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期日, 13 七月 2025 19:41:26 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 174 +++++++++++++++++++++++++--------------------------------- 1 files changed, 75 insertions(+), 99 deletions(-) diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java index 166c711..e8a72d4 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -56,7 +56,7 @@ private static final boolean DEBUG = false;//璋冭瘯妯″紡 private List<JSONObject> socketReadResults = new ArrayList<>(); - private List<JSONObject> socketResults = new ArrayList<>(); + private List<DeviceMsgModel> socketResults = new ArrayList<>(); //鍘熷璁惧鏁版嵁 private Object originDeviceData; @@ -78,6 +78,22 @@ listenInit();//鐩戝惉鍒濆鍖栦簨浠� readStatus(); Thread.sleep(100); + + ShuttleAction shuttleAction = null; + try { + shuttleAction = SpringUtils.getBean(ShuttleAction.class); + }catch (Exception e){ + continue; + } + + if (shuttleAction == null) { + continue; + } + //婕旂ず妯″紡 + shuttleAction.demo(deviceConfig.getDeviceNo()); + +// //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭 +// shuttleAction.moveLoc(deviceConfig.getDeviceNo()); } catch (Exception e) { log.error("ShuttleThread Fail", e); } @@ -110,14 +126,7 @@ //瀛樺湪浠诲姟闇�瑕佹墽琛� boolean result = shuttleAction.executeWork(deviceConfig.getDeviceNo(), taskNo); } - -// //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭 -// shuttleAction.moveLoc(deviceConfig.getDeviceNo()); - - //婕旂ず妯″紡 - shuttleAction.demo(deviceConfig.getDeviceNo()); - - Thread.sleep(200); + Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } @@ -125,17 +134,17 @@ }); executeThread.start(); - //鍏朵粬浠诲姟 - Thread otherThread = new Thread(() -> { - while (true) { - try { - saveLog();//淇濆瓨鏁版嵁 - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - otherThread.start(); +// //鍏朵粬浠诲姟 +// Thread otherThread = new Thread(() -> { +// while (true) { +// try { +// saveLog();//淇濆瓨鏁版嵁 +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// }); +// otherThread.start(); } private void saveLog() { @@ -188,54 +197,32 @@ data.put("originDeviceData", deviceMsg.getDeviceOriginMsg()); socketReadResults.add(data); } else { - socketResults.add(data);//娣诲姞鏁版嵁 + socketResults.add(deviceMsg);//娣诲姞鏁版嵁 } } catch (Exception e) { e.printStackTrace(); } } - public JSONObject getRequestBody(String type, String taskId) { + public JSONObject getRequestBody(String resultKey) { try { // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� JSONObject result = null; - if (type.equals("readState")) { - type = "state"; - } - + int idx = -1; for (int i = 0; i < socketResults.size(); i++) { - JSONObject socketResult = socketResults.get(i); - if (!socketResult.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭 - continue; - } - - JSONObject resultResponse = JSON.parseObject(socketResult.get("response").toString()); - JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); - String responseType = resultBody.get("responseType").toString(); - if (DEBUG) { - result = socketResult; + DeviceMsgModel deviceMsgModel = socketResults.get(i); + if(deviceMsgModel.getResultKey().equals(resultKey)){ + idx = i; + result = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg())); break; } - - if (!responseType.equals(type)) { - continue;//鍝嶅簲绫诲瀷涓庤姹傜被鍨嬩笉涓�鑷达紝涓嶅湪璋冭瘯妯″紡涓� - } - - if (taskId != null) { - String responseTaskId = resultBody.get("taskId").toString(); - if (!responseTaskId.equals(taskId)) { - continue;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷达紝涓嶅湪璋冭瘯妯″紡涓� - } - } - - result = socketResult; - break; } if (result == null) { return null;//鏃犲搷搴旂粨鏋� } + socketResults.remove(idx); return filterBodyData(result);//杩斿洖Body缁撴灉闆� } catch (Exception e) { return null; @@ -359,35 +346,38 @@ // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� JSONObject result = null; int removeIdx = -1; + JSONObject socketResult = null; for (int i = 0; i < socketResults.size(); i++) { - JSONObject socketResult = socketResults.get(i); - if (socketResult == null) { + DeviceMsgModel deviceMsgModel = socketResults.get(i); + if (!deviceMsgModel.getDeviceMsgType().equals("shuttleInit")) { continue; } - if (!socketResult.get("msgType").equals("requestMsg")) {//涓嶆槸璇锋眰鍐呭 - continue; - } + removeIdx = i; + socketResult = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg())); + break; + } - JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString()); - JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString()); - JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); - String requestType = resultBody.getString("requestType"); - Integer requestId = resultHeader.getInteger("requestId"); - if (requestType.equals("init")) { - removeIdx = i;//姝ゆ暟鎹凡缁忓鐞嗭紝浠庣粨鏋滈泦涓墧闄� - socketResults.remove(removeIdx); + if (socketResult == null) { + return; + } - Integer code = resultBody.getInteger("code"); - //灏忚溅澶嶄綅璇锋眰 - ShuttleCommand initCommand = getInitCommand(requestId, code); - //鍙戝嚭璇锋眰 - NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); - requestCommand(httpCommand); + JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString()); + JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString()); + JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); + String requestType = resultBody.getString("requestType"); + Integer requestId = resultHeader.getInteger("requestId"); + if (requestType.equals("init")) { + socketResults.remove(removeIdx); - log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); - break; - } + Integer code = resultBody.getInteger("code"); + //灏忚溅澶嶄綅璇锋眰 + ShuttleCommand initCommand = getInitCommand(requestId, code); + //鍙戝嚭璇锋眰 + NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); + requestCommand(httpCommand); + + log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); } } catch (Exception e) { e.printStackTrace(); @@ -479,9 +469,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -502,9 +492,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -524,9 +514,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -554,9 +544,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -1127,7 +1117,7 @@ } //鍙戝嚭璇锋眰 - private JSONObject requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { + private String requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { try { DeviceMsgUtils deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class); if (deviceMsgUtils == null) { @@ -1143,33 +1133,19 @@ commandMsgModel.setDeviceType(String.valueOf(SlaveType.Shuttle)); commandMsgModel.setCommand(data); String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, deviceConfig.getDeviceNo(), commandMsgModel); - - 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; - //taskId鍙兘鍙栫┖锛屼笉鎶ラ敊锛屾甯告儏鍐� - } - - JSONObject result = new JSONObject(); - result.put("requestType", requestType); - result.put("taskId", taskId); - return result; + return key; }catch (Exception e) { e.printStackTrace(); } return null; } - private JSONObject queryCommandStatus(String requestType, String taskId) { + private JSONObject queryCommandStatus(String resultKey) { // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� // 灏濊瘯50娆� JSONObject result = null; for (int i = 0; i < 50; i++) { - result = getRequestBody(requestType, taskId); + result = getRequestBody(resultKey); if (result == null) { try { Thread.sleep(500); -- Gitblit v1.9.1