diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java b/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java index 7a71cd6..fef3c81 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java @@ -282,7 +282,7 @@ public class MqttMessageHandler { List lineList = csLineModelService.getMonitorNumByModelId(modelId); String key = AppRedisKey.LINE + nDid; redisUtil.saveByKeyWithExpire(key,lineList,600L); - csLogsFeignClient.addUserLog(logDto); + //csLogsFeignClient.addUserLog(logDto); } } @@ -310,6 +310,7 @@ public class MqttMessageHandler { //业务处理 Gson gson = new Gson(); ReqAndResDto.Res res = gson.fromJson(new String(message.getPayload(), StandardCharsets.UTF_8), ReqAndResDto.Res.class); + redisUtil.saveByKeyWithExpire("devResponse",res.getCode(),5L); if (Objects.equals(res.getCode(),AccessEnum.SUCCESS.getCode())){ switch (res.getType()){ case 4613: @@ -330,16 +331,16 @@ public class MqttMessageHandler { } else { LocalDateTime time = record.getOfflineTime(); if (!Objects.isNull(time)){ - csDeviceOnlineLogs.setNdid(nDid); + csDeviceOnlineLogs.setNdid(nDid); csDeviceOnlineLogs.setOnlineTime(LocalDateTime.now()); onlineLogsService.save(csDeviceOnlineLogs); - } else { + } else { record.setOnlineTime(LocalDateTime.now()); onlineLogsService.updateById(record); } } //接入后系统重置装置心跳 - redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),300L); + redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),180L); //修改redis的mid redisUtil.saveByKey(AppRedisKey.DEVICE_MID + nDid,1); redisUtil.saveByKeyWithExpire("online" + nDid,"online",10L); @@ -358,6 +359,7 @@ public class MqttMessageHandler { csLogsFeignClient.addUserLog(logDto); throw new BusinessException(AccessResponseEnum.ACCESS_RESPONSE_ERROR); } + csLogsFeignClient.addUserLog(logDto); break; case 4614: log.info("设备数据应答--->" + nDid); @@ -458,7 +460,7 @@ public class MqttMessageHandler { default: break; } - csLogsFeignClient.addUserLog(logDto); + //csLogsFeignClient.addUserLog(logDto); } } @@ -482,7 +484,7 @@ public class MqttMessageHandler { switch (res.getType()){ case 4865: //设置心跳时间,超时改为掉线 - redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),300L); + redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),180L); //有心跳,则将装置改成在线 //csEquipmentDeliveryService.updateRunStatusBynDid(nDid,AccessEnum.ONLINE.getCode()); //处理心跳 @@ -537,17 +539,24 @@ public class MqttMessageHandler { //实时数据 case 1: log.info(nDid + "处理实时数据"); - break; - //处理主动上送的统计数据 - case 2: JSONObject jsonObject2 = JSONObject.parseObject(JSON.toJSONString(dataDto)); AppAutoDataMessage appAutoDataMessage = JSONObject.toJavaObject(jsonObject2, AppAutoDataMessage.class); appAutoDataMessage.setId(nDid); appAutoDataMessage.getMsg().getDataArray().forEach(item->{ - log.info(nDid + "处理统计数据" + item.getDataAttr()); + log.info(nDid + "处理实时数据" + item.getDataAttr()); }); appAutoDataMessageTemplate.sendMember(appAutoDataMessage); break; + //处理主动上送的统计数据 + case 2: + JSONObject jsonObject3 = JSONObject.parseObject(JSON.toJSONString(dataDto)); + AppAutoDataMessage appAutoDataMessage2 = JSONObject.toJavaObject(jsonObject3, AppAutoDataMessage.class); + appAutoDataMessage2.setId(nDid); + appAutoDataMessage2.getMsg().getDataArray().forEach(item->{ + log.info(nDid + "处理统计数据" + item.getDataAttr()); + }); + appAutoDataMessageTemplate.sendMember(appAutoDataMessage2); + break; default: break; } diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java b/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java index db079ca..35d7b88 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java @@ -133,7 +133,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene csDeviceService.devAccessAskTemplate(nDid,version,1); redisUtil.saveByKey(AppRedisKey.DEVICE_MID + nDid,1); try { - Thread.sleep(2000); + Thread.sleep(3000); Object object = redisUtil.getObjectByKey("online" + nDid); if (Objects.nonNull(object)) { scheduler.shutdown(); @@ -143,10 +143,6 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode()); startScheduledTask(scheduler,nDid,version); logDto.setOperate("客户端离线进入定时任务"); - //记录装置掉线时间 - CsDeviceOnlineLogs record = onlineLogsService.findLastData(nDid); - record.setOfflineTime(LocalDateTime.now()); - onlineLogsService.updateById(record); } } catch (InterruptedException e) { throw new RuntimeException(e); @@ -157,6 +153,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene //装置下线 csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode()); startScheduledTask(scheduler,nDid,version); + logDto.setOperate("客户端离线进入定时任务"); } csLogsFeignClient.addUserLog(logDto); } @@ -176,7 +173,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene if (mqttClient) { csDeviceService.devAccessAskTemplate(nDid,version,1); try { - Thread.sleep(2000); + Thread.sleep(3000); Integer status = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus(); if (Objects.equals(status,AccessEnum.ONLINE.getCode())){ logDto.setResult(1); @@ -192,6 +189,10 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene sendEventToUser(dto2); addLogs(dto2); } + //记录装置掉线时间 + CsDeviceOnlineLogs record = onlineLogsService.findLastData(nDid); + record.setOfflineTime(LocalDateTime.now()); + onlineLogsService.updateById(record); } } catch (InterruptedException e) { throw new RuntimeException(e); @@ -205,9 +206,13 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene addLogs(dto2); } logDto.setResult(0); + //记录装置掉线时间 + CsDeviceOnlineLogs record = onlineLogsService.findLastData(nDid); + record.setOfflineTime(LocalDateTime.now()); + onlineLogsService.updateById(record); } csLogsFeignClient.addUserLog(logDto); - }, 0, 2, TimeUnit.MINUTES); + }, 0, 10, TimeUnit.SECONDS); } }