From fcbf54ac3b86f5545cf120b37e4cfe956919f338 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期四, 17 七月 2025 09:50:37 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 46 insertions(+), 10 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 32037a8..812cfc3 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -42,6 +42,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; +import java.net.InetAddress; import java.net.Socket; import java.text.MessageFormat; import java.util.*; @@ -54,6 +55,7 @@ private RedisUtil redisUtil; private ShuttleProtocol shuttleProtocol; private Socket socket; + private long lastConnectTime = System.currentTimeMillis(); private static final boolean DEBUG = false;//璋冭瘯妯″紡 @@ -159,6 +161,12 @@ if (deviceDataLogService == null) { return; } + + //绂荤嚎涓嶅仛鏃ュ織瀛樺偍 + if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE)) { + return; + } + DeviceDataLog deviceDataLog = new DeviceDataLog(); deviceDataLog.setOriginData(JSON.toJSONString(this.originDeviceData)); deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol)); @@ -202,7 +210,10 @@ JSONObject body = response.getJSONObject("body"); if (body.containsKey("workingMode")) { //read - socketReadResults.add(body); + JSONObject socketReadResult = new JSONObject(); + socketReadResult.put("body", body); + socketReadResult.put("originDeviceData", sb); + socketReadResults.add(socketReadResult); return; } } @@ -299,8 +310,9 @@ return; } - JSONObject data = this.socketReadResults.get(0); + JSONObject socketReadResult = this.socketReadResults.get(0); this.socketReadResults.remove(0); + JSONObject data = socketReadResult.getJSONObject("body"); if (data == null) { if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾� @@ -370,7 +382,7 @@ this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); } - this.originDeviceData = data; + this.originDeviceData = socketReadResult.get("originDeviceData"); OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); } @@ -721,6 +733,19 @@ } } + //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** + Config shuttleMaxPowerVerifyConfig = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "shuttleMaxPowerVerify") + .eq("status", 1)); + if (shuttleMaxPowerVerifyConfig != null) { + if (shuttleMaxPowerVerifyConfig.getValue().equals("true")) { + if (this.shuttleProtocol.getBatteryVoltage() < 5630) { + return false;//鐢靛帇涓嶅缁х画鍏呯數 + } + } + } + //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** + if (this.shuttleProtocol.getHasCharge() == null) { return false; } @@ -1054,12 +1079,20 @@ @Override public boolean connect() { try { - Socket socket = new Socket(slave.getIp(), slave.getPort()); - socket.setSoTimeout(10000); - socket.setKeepAlive(true); - this.socket = socket; - log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } catch (IOException e) { + if (System.currentTimeMillis() - lastConnectTime < 1000 * 10) { + return false; + } + + InetAddress address = InetAddress.getByName(slave.getIp()); + if (address.isReachable(10000)) { + Socket socket = new Socket(slave.getIp(), slave.getPort()); + socket.setSoTimeout(10000); + socket.setKeepAlive(true); + this.socket = socket; + this.lastConnectTime = System.currentTimeMillis(); + log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + } + } catch (Exception e) { OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); return false; } @@ -1181,7 +1214,10 @@ writer.flush(); // System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); }catch (Exception e) { - e.printStackTrace(); +// e.printStackTrace(); +// System.out.println("socket write error"); + this.socket.close(); + this.socket = null; } } -- Gitblit v1.9.1