This commit is contained in:
xy
2024-10-11 11:22:10 +08:00
parent 9f4793e276
commit dfa7ebe94f
2 changed files with 31 additions and 17 deletions

View File

@@ -282,7 +282,7 @@ public class MqttMessageHandler {
List<CsLineModel> lineList = csLineModelService.getMonitorNumByModelId(modelId); List<CsLineModel> lineList = csLineModelService.getMonitorNumByModelId(modelId);
String key = AppRedisKey.LINE + nDid; String key = AppRedisKey.LINE + nDid;
redisUtil.saveByKeyWithExpire(key,lineList,600L); redisUtil.saveByKeyWithExpire(key,lineList,600L);
csLogsFeignClient.addUserLog(logDto); //csLogsFeignClient.addUserLog(logDto);
} }
} }
@@ -310,6 +310,7 @@ public class MqttMessageHandler {
//业务处理 //业务处理
Gson gson = new Gson(); Gson gson = new Gson();
ReqAndResDto.Res res = gson.fromJson(new String(message.getPayload(), StandardCharsets.UTF_8), ReqAndResDto.Res.class); 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())){ if (Objects.equals(res.getCode(),AccessEnum.SUCCESS.getCode())){
switch (res.getType()){ switch (res.getType()){
case 4613: case 4613:
@@ -330,16 +331,16 @@ public class MqttMessageHandler {
} else { } else {
LocalDateTime time = record.getOfflineTime(); LocalDateTime time = record.getOfflineTime();
if (!Objects.isNull(time)){ if (!Objects.isNull(time)){
csDeviceOnlineLogs.setNdid(nDid); csDeviceOnlineLogs.setNdid(nDid);
csDeviceOnlineLogs.setOnlineTime(LocalDateTime.now()); csDeviceOnlineLogs.setOnlineTime(LocalDateTime.now());
onlineLogsService.save(csDeviceOnlineLogs); onlineLogsService.save(csDeviceOnlineLogs);
} else { } else {
record.setOnlineTime(LocalDateTime.now()); record.setOnlineTime(LocalDateTime.now());
onlineLogsService.updateById(record); onlineLogsService.updateById(record);
} }
} }
//接入后系统重置装置心跳 //接入后系统重置装置心跳
redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),300L); redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),180L);
//修改redis的mid //修改redis的mid
redisUtil.saveByKey(AppRedisKey.DEVICE_MID + nDid,1); redisUtil.saveByKey(AppRedisKey.DEVICE_MID + nDid,1);
redisUtil.saveByKeyWithExpire("online" + nDid,"online",10L); redisUtil.saveByKeyWithExpire("online" + nDid,"online",10L);
@@ -358,6 +359,7 @@ public class MqttMessageHandler {
csLogsFeignClient.addUserLog(logDto); csLogsFeignClient.addUserLog(logDto);
throw new BusinessException(AccessResponseEnum.ACCESS_RESPONSE_ERROR); throw new BusinessException(AccessResponseEnum.ACCESS_RESPONSE_ERROR);
} }
csLogsFeignClient.addUserLog(logDto);
break; break;
case 4614: case 4614:
log.info("设备数据应答--->" + nDid); log.info("设备数据应答--->" + nDid);
@@ -458,7 +460,7 @@ public class MqttMessageHandler {
default: default:
break; break;
} }
csLogsFeignClient.addUserLog(logDto); //csLogsFeignClient.addUserLog(logDto);
} }
} }
@@ -482,7 +484,7 @@ public class MqttMessageHandler {
switch (res.getType()){ switch (res.getType()){
case 4865: case 4865:
//设置心跳时间,超时改为掉线 //设置心跳时间,超时改为掉线
redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),300L); redisUtil.saveByKeyWithExpire("MQTT:" + nDid, Instant.now().toEpochMilli(),180L);
//有心跳,则将装置改成在线 //有心跳,则将装置改成在线
//csEquipmentDeliveryService.updateRunStatusBynDid(nDid,AccessEnum.ONLINE.getCode()); //csEquipmentDeliveryService.updateRunStatusBynDid(nDid,AccessEnum.ONLINE.getCode());
//处理心跳 //处理心跳
@@ -537,17 +539,24 @@ public class MqttMessageHandler {
//实时数据 //实时数据
case 1: case 1:
log.info(nDid + "处理实时数据"); log.info(nDid + "处理实时数据");
break;
//处理主动上送的统计数据
case 2:
JSONObject jsonObject2 = JSONObject.parseObject(JSON.toJSONString(dataDto)); JSONObject jsonObject2 = JSONObject.parseObject(JSON.toJSONString(dataDto));
AppAutoDataMessage appAutoDataMessage = JSONObject.toJavaObject(jsonObject2, AppAutoDataMessage.class); AppAutoDataMessage appAutoDataMessage = JSONObject.toJavaObject(jsonObject2, AppAutoDataMessage.class);
appAutoDataMessage.setId(nDid); appAutoDataMessage.setId(nDid);
appAutoDataMessage.getMsg().getDataArray().forEach(item->{ appAutoDataMessage.getMsg().getDataArray().forEach(item->{
log.info(nDid + "处理统计数据" + item.getDataAttr()); log.info(nDid + "处理实时数据" + item.getDataAttr());
}); });
appAutoDataMessageTemplate.sendMember(appAutoDataMessage); appAutoDataMessageTemplate.sendMember(appAutoDataMessage);
break; 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: default:
break; break;
} }

View File

@@ -133,7 +133,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
csDeviceService.devAccessAskTemplate(nDid,version,1); csDeviceService.devAccessAskTemplate(nDid,version,1);
redisUtil.saveByKey(AppRedisKey.DEVICE_MID + nDid,1); redisUtil.saveByKey(AppRedisKey.DEVICE_MID + nDid,1);
try { try {
Thread.sleep(2000); Thread.sleep(3000);
Object object = redisUtil.getObjectByKey("online" + nDid); Object object = redisUtil.getObjectByKey("online" + nDid);
if (Objects.nonNull(object)) { if (Objects.nonNull(object)) {
scheduler.shutdown(); scheduler.shutdown();
@@ -143,10 +143,6 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode()); csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode());
startScheduledTask(scheduler,nDid,version); startScheduledTask(scheduler,nDid,version);
logDto.setOperate("客户端离线进入定时任务"); logDto.setOperate("客户端离线进入定时任务");
//记录装置掉线时间
CsDeviceOnlineLogs record = onlineLogsService.findLastData(nDid);
record.setOfflineTime(LocalDateTime.now());
onlineLogsService.updateById(record);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
@@ -157,6 +153,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
//装置下线 //装置下线
csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode()); csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode());
startScheduledTask(scheduler,nDid,version); startScheduledTask(scheduler,nDid,version);
logDto.setOperate("客户端离线进入定时任务");
} }
csLogsFeignClient.addUserLog(logDto); csLogsFeignClient.addUserLog(logDto);
} }
@@ -176,7 +173,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
if (mqttClient) { if (mqttClient) {
csDeviceService.devAccessAskTemplate(nDid,version,1); csDeviceService.devAccessAskTemplate(nDid,version,1);
try { try {
Thread.sleep(2000); Thread.sleep(3000);
Integer status = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus(); Integer status = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus();
if (Objects.equals(status,AccessEnum.ONLINE.getCode())){ if (Objects.equals(status,AccessEnum.ONLINE.getCode())){
logDto.setResult(1); logDto.setResult(1);
@@ -192,6 +189,10 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
sendEventToUser(dto2); sendEventToUser(dto2);
addLogs(dto2); addLogs(dto2);
} }
//记录装置掉线时间
CsDeviceOnlineLogs record = onlineLogsService.findLastData(nDid);
record.setOfflineTime(LocalDateTime.now());
onlineLogsService.updateById(record);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
@@ -205,9 +206,13 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
addLogs(dto2); addLogs(dto2);
} }
logDto.setResult(0); logDto.setResult(0);
//记录装置掉线时间
CsDeviceOnlineLogs record = onlineLogsService.findLastData(nDid);
record.setOfflineTime(LocalDateTime.now());
onlineLogsService.updateById(record);
} }
csLogsFeignClient.addUserLog(logDto); csLogsFeignClient.addUserLog(logDto);
}, 0, 2, TimeUnit.MINUTES); }, 0, 10, TimeUnit.SECONDS);
} }
} }