From 7270218a6c55de1a0e8431afe4119793ef518d50 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期六, 05 七月 2025 09:02:50 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 193 ++++++++++++++++++++++++------------------------ 1 files changed, 96 insertions(+), 97 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 12d4ac3..9d139e2 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -22,7 +22,8 @@ import com.zy.common.utils.NavigatePositionConvert; import com.zy.common.utils.RedisUtil; import com.zy.core.News; -import com.zy.core.Utils.DeviceMsgUtils; +import com.zy.core.model.DeviceCommandMsgModel; +import com.zy.core.utils.DeviceMsgUtils; import com.zy.core.action.ShuttleAction; import com.zy.core.cache.OutputQueue; import com.zy.core.enums.*; @@ -75,7 +76,7 @@ try { listenMessageFromRedis(); listenInit();//鐩戝惉鍒濆鍖栦簨浠� - read(); + readStatus(); Thread.sleep(100); } catch (Exception e) { log.error("ShuttleThread Fail", e); @@ -175,25 +176,17 @@ if(deviceMsg == null){ return; } - JSONObject result = JSON.parseObject(deviceMsg.getDeviceMsg().toString());//寰楀埌鍝嶅簲缁撴灉闆� - String msgType = result.getString("msgType"); - if ("responseMsg".equals(msgType)) { - JSONObject response = result.getJSONObject("response"); - JSONObject body = response.getJSONObject("body"); - if (body.containsKey("workingMode")) { - //read - socketReadResults.add(body); - return; - } - } + JSONObject data = JSON.parseObject(JSON.toJSONString(deviceMsg.getDeviceMsg())); - if (!socketResults.isEmpty() && socketResults.size() >= 20) { - socketResults.remove(0);//娓呯悊澶磋妭鐐� + if (deviceMsg.getDeviceMsgType().equals("status")) { + data.put("originDeviceData", deviceMsg.getDeviceOriginMsg()); + socketReadResults.add(data); + } else { + socketResults.add(data);//娣诲姞鏁版嵁 } - socketResults.add(result);//娣诲姞鏁版嵁 } catch (Exception e) { -// e.printStackTrace(); + e.printStackTrace(); } } @@ -244,15 +237,6 @@ } } - private void read() { - try { - readStatus(); - } catch (Exception e) { - e.printStackTrace(); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戣鍙栧洓鍚戠┛姊溅鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } - } - private void readStatus() { try { if (null == shuttleProtocol) { @@ -292,79 +276,70 @@ JSONObject data = this.socketReadResults.get(0); this.socketReadResults.remove(0); - if (data == null) { - if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { - //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾� - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); - } - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - }else { + //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- + //灏忚溅璁惧鐘舵�� + shuttleProtocol.setDeviceStatus(data.getInteger("deviceStatus")); + //灏忚溅妯″紡 + shuttleProtocol.setMode(data.getInteger("mode")); + //褰撳墠浜岀淮鐮� + shuttleProtocol.setCurrentCode(data.getString("currentCode")); + //鐢垫睜鐢甸噺 + shuttleProtocol.setBatteryPower(data.getString("batteryPower")); + //鐢垫睜鐢靛帇 + shuttleProtocol.setBatteryVoltage(data.getInteger("batteryVoltage")); + //鏁呴殰 + shuttleProtocol.setErrorCode(data.getString("errorCode")); + //鏄惁椤跺崌 + shuttleProtocol.setHasLift(data.getBoolean("hasLift")); + //鏄惁鏈夋墭鐩� + shuttleProtocol.setHasPallet(data.getBoolean("hasPallet")); + //琛岄┒鏂瑰悜 + shuttleProtocol.setRunDirection(data.getString("runDirection")); + //鏄惁涓哄厖鐢电姸鎬� + shuttleProtocol.setHasCharge(data.getBoolean("hasCharge")); + //杩愯閫熷害 + shuttleProtocol.setSpeed(data.getInteger("speed")); - //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- - //灏忚溅璁惧鐘舵�� - shuttleProtocol.setDeviceStatus(data.getInteger("free")); - //灏忚溅妯″紡 - shuttleProtocol.setMode(data.getInteger("workingMode")); - //褰撳墠浜岀淮鐮� - shuttleProtocol.setCurrentCode(data.getString("point")); - //鐢垫睜鐢甸噺 - shuttleProtocol.setBatteryPower(data.getString("powerPercent")); - //鐢垫睜鐢靛帇 - shuttleProtocol.setBatteryVoltage(data.getInteger("voltage")); - //鏁呴殰 - shuttleProtocol.setErrorCode(data.getJSONArray("errCode").getString(0)); + //*********璇诲彇鎵╁睍瀛楁********** + JSONObject extendData = data.getJSONObject("extend"); + InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend(); + //绠″埗鐘舵�� + extend.setSuspendState(extendData.getInteger("suspendState")); + //鏈�楂樼數鑺數鍘�(mV) + extend.setMaxCellVoltage(extendData.getInteger("maxCellVoltage")); + //鏈�浣庣數鑺數鍘�(mV) + extend.setMinCellVoltage(extendData.getInteger("minCellVoltage")); + //鐢垫睜鐢靛帇 + extend.setVoltage(extendData.getInteger("voltage")); + //鍏呮斁鐢靛惊鐜鏁� + extend.setChargeCycleTimes(extendData.getInteger("chargeCycleTimes")); + //鍓╀綑鐢甸噺 + extend.setSurplusQuantity(extendData.getInteger("surplusQuantity")); + //鎬荤數閲� + extend.setCountQuantity(extendData.getInteger("countQuantity")); + shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁 - //鏄惁椤跺崌 - shuttleProtocol.setHasLift(data.getInteger("liftPosition") == 2 ? true : false); - //鏄惁鏈夋墭鐩� - shuttleProtocol.setHasPallet(data.getInteger("loadState") == 1 ? true : false); - //琛岄┒鏂瑰悜 - shuttleProtocol.setRunDirection(data.getString("runDir") == null ? "none" : data.getString("runDir")); - //鏄惁涓哄厖鐢电姸鎬� - shuttleProtocol.setHasCharge(data.getInteger("chargState") == 1 ? true : false); - //杩愯閫熷害 - shuttleProtocol.setSpeed(data.getInteger("speed")); + //鏈�杩戜竴娆″湪绾挎椂闂� + shuttleProtocol.setLastOnlineTime(System.currentTimeMillis()); + //璇诲彇鍥涘悜绌挎杞︾姸鎬�-end - //*********璇诲彇鎵╁睍瀛楁********** - InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend(); - //绠″埗鐘舵�� - extend.setSuspendState(data.getInteger("suspendState")); - //鏈�楂樼數鑺數鍘�(mV) - extend.setMaxCellVoltage(data.getInteger("maxCellVoltage")); - //鏈�浣庣數鑺數鍘�(mV) - extend.setMinCellVoltage(data.getInteger("minCellVoltage")); - //鐢垫睜鐢靛帇 - extend.setVoltage(data.getInteger("voltage")); - //鍏呮斁鐢靛惊鐜鏁� - extend.setChargeCycleTimes(data.getInteger("chargeCycleTimes")); - //鍓╀綑鐢甸噺 - extend.setSurplusQuantity(data.getInteger("surplusQuantity")); - //鎬荤數閲� - extend.setCountQuantity(data.getInteger("countQuantity")); - shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁 - - //鏈�杩戜竴娆″湪绾挎椂闂� - shuttleProtocol.setLastOnlineTime(System.currentTimeMillis()); - ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end - - //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue - if (shuttleProtocol.getDeviceStatus() == 0) { - shuttleProtocol.setPakMk(true); - } - - if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) { - //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽 - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - } - - if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) { - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - } - - this.originDeviceData = data; - - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue + if (shuttleProtocol.getDeviceStatus() == 0) { + shuttleProtocol.setPakMk(true); } + + if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) { + //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽 + this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + } + + if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) { + this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + } + + this.originDeviceData = data.getString("originDeviceData"); + + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); } catch (Exception e) { e.printStackTrace(); OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); @@ -878,6 +853,22 @@ } @Override + public JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol) { + JSONObject result = new JSONObject(); + result.put("msgType", "responseMsg"); + result.put("robotId", 5002); + + JSONObject header = new JSONObject(); + header.put("responseId", 5005631); + header.put("version", "RGV-APP-F427-N24036-1112"); + + JSONObject body = new JSONObject(); + body.put("responseType", "state"); + + return null; + } + + @Override public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) { NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); @@ -1113,7 +1104,11 @@ JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); data.remove("nodes"); - String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, slave.getId(), data); + DeviceCommandMsgModel commandMsgModel = new DeviceCommandMsgModel(); + commandMsgModel.setDeviceId(slave.getId()); + commandMsgModel.setDeviceType(String.valueOf(SlaveType.Shuttle)); + commandMsgModel.setCommand(data); + String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, slave.getId(), commandMsgModel); String requestType = null; String taskId = null; @@ -1159,7 +1154,11 @@ JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); data.remove("nodes"); - String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, slave.getId(), data); + DeviceCommandMsgModel commandMsgModel = new DeviceCommandMsgModel(); + commandMsgModel.setDeviceId(slave.getId()); + commandMsgModel.setDeviceType(String.valueOf(SlaveType.Shuttle)); + commandMsgModel.setCommand(data); + String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, slave.getId(), commandMsgModel); String requestType = null; String taskId = null; -- Gitblit v1.9.1