| | |
| | | private RedisUtil redisUtil; |
| | | private ShuttleProtocol shuttleProtocol; |
| | | private Socket socket; |
| | | private long lastConnectTime = System.currentTimeMillis(); |
| | | |
| | | private static final boolean DEBUG = false;//调试模式 |
| | | |
| | |
| | | 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)); |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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,认定离线 |
| | |
| | | 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())); |
| | | } |
| | |
| | | @Override |
| | | public boolean connect() { |
| | | try { |
| | | 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) { |