#优化设备下线推送

This commit is contained in:
2026-09-22 13:50:19 +08:00
parent 40c6edda36
commit 1d2636f641
4 changed files with 33 additions and 24 deletions

View File

@@ -63,10 +63,13 @@ public class SiteMemory {
return deviceMapPushMap; return deviceMapPushMap;
} }
public void saveMaPushDTO(String deviceId, DeviceMapPushDTO dto) { public void saveMapPushDTO(String deviceId, DeviceMapPushDTO dto) {
deviceMapPushMap.put(deviceId, dto); deviceMapPushMap.put(deviceId, dto);
} }
public void removeMapPushDTO(String deviceId) {
deviceMapPushMap.remove(deviceId);
}
public void saveRunStatistics(DeviceRunStatistics deviceRunStatistics) { public void saveRunStatistics(DeviceRunStatistics deviceRunStatistics) {
if (deviceRunStatistics != null && !StringUtils.isEmpty(deviceRunStatistics.getDeviceId())) { if (deviceRunStatistics != null && !StringUtils.isEmpty(deviceRunStatistics.getDeviceId())) {

View File

@@ -165,11 +165,17 @@ public class HostMessageHandler implements CustomMqttMessageHandler {
String deviceId) { String deviceId) {
WebStatusMessageDTO webStatusMessageDTO = new WebStatusMessageDTO(); WebStatusMessageDTO webStatusMessageDTO = new WebStatusMessageDTO();
List<DeviceStatusDetail> transferData = new ArrayList<>(); List<DeviceStatusDetail> transferData = new ArrayList<>();
DeviceStatusDetail d = new DeviceStatusDetail();
d.setName("deviceId");
d.setValue(deviceId);
d.setUnit("");
transferData.add(d);
DeviceStatusDetail lat = new DeviceStatusDetail(); DeviceStatusDetail lat = new DeviceStatusDetail();
lat.setName("latitude"); lat.setName("latitude");
lat.setValue(String.valueOf(locationRelTimeDTO.getData().getLatitude())); lat.setValue(String.valueOf(locationRelTimeDTO.getData().getLatitude()));
lat.setUnit(""); lat.setUnit("");
transferData.add(lat); transferData.add(lat);
DeviceStatusDetail lng = new DeviceStatusDetail(); DeviceStatusDetail lng = new DeviceStatusDetail();
@@ -236,7 +242,7 @@ public class HostMessageHandler implements CustomMqttMessageHandler {
dto.setLng(Double.parseDouble(lng.getValue())); dto.setLng(Double.parseDouble(lng.getValue()));
dto.setT(nettyDevice.getCurrentTaskId()); dto.setT(nettyDevice.getCurrentTaskId());
dto.setY(Double.parseDouble(yaw.getValue())); dto.setY(Double.parseDouble(yaw.getValue()));
siteMemory.saveMaPushDTO(deviceId, dto); siteMemory.saveMapPushDTO(deviceId, dto);
} }
} }
@@ -379,7 +385,8 @@ public class HostMessageHandler implements CustomMqttMessageHandler {
} }
// todo 推送实时位置和状态消息到外部 // todo 推送实时位置和状态消息到外部
try { try {
GlobalMemory.customMqttDeviceMonitor.publish(mqttClientId, String.format(MqttTopic.DEVICE_TASK_STATUS_TOPIC, taskId), GlobalMemory.customMqttDeviceMonitor.publish(mqttClientId,
String.format(MqttTopic.DEVICE_TASK_STATUS_TOPIC, taskId),
JsonUtils.toJsonString(sendDto)); JsonUtils.toJsonString(sendDto));
} catch (MqttException e) { } catch (MqttException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block

View File

@@ -453,9 +453,9 @@ public class DeviceTaskService {
x.setTaskStausTranslate(taskStaus.getDescription()); x.setTaskStausTranslate(taskStaus.getDescription());
}); });
list.sort( list.sort(
Comparator.comparing(DevicePlanTask::getFinishTime, Comparator.comparing(DevicePlanTask::getCreateTime,
Comparator.nullsLast(Comparator.reverseOrder())) Comparator.nullsLast(Comparator.reverseOrder()))
.thenComparing(DevicePlanTask::getCreateTime, .thenComparing(DevicePlanTask::getFinishTime,
Comparator.nullsLast(Comparator.reverseOrder()))); Comparator.nullsLast(Comparator.reverseOrder())));
return list; return list;
} }

View File

@@ -343,6 +343,8 @@ public class DeviceThreadService {
} }
deviceRunStatisticsMapper.saveOrUpdate(deviceRunStatistics); deviceRunStatisticsMapper.saveOrUpdate(deviceRunStatistics);
} }
// todo 删除实时消息推送里面的数据
siteMemory.removeMapPushDTO(deviceId);
} }
sessionManager.removeDevice(deviceId); sessionManager.removeDevice(deviceId);
@@ -393,7 +395,6 @@ public class DeviceThreadService {
}, 0, 500, TimeUnit.MILLISECONDS); }, 0, 500, TimeUnit.MILLISECONDS);
} }
/** /**
* 监控心跳 * 监控心跳
*/ */
@@ -404,19 +405,17 @@ public class DeviceThreadService {
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
list.forEach(x -> { list.forEach(x -> {
Map<String, DeviceMapPushDTO> map = x.getAllDeviceMapPush(); Map<String, DeviceMapPushDTO> map = x.getAllDeviceMapPush();
if (!CollectionUtils.isEmpty(map)) {
List<DeviceMapPushDTO> pushList = new ArrayList<>(map.values()); List<DeviceMapPushDTO> pushList = new ArrayList<>(map.values());
WebMapMessageDTO dto = new WebMapMessageDTO(); WebMapMessageDTO dto = new WebMapMessageDTO();
dto.setData(pushList); dto.setData(pushList);
dto.setType(MesType.mapPush); dto.setType(MesType.mapPush);
try { try {
websocketMesDispather.mapMessageDispather(x.getSiteId(), JsonUtils.toJsonString(pushList)); websocketMesDispather.mapMessageDispather(x.getSiteId(),
JsonUtils.toJsonString(dto));
} catch (Exception e) { } catch (Exception e) {
log.error("实时地图数据websocket推送失败: siteId={}, error={}", x.getSiteId(), log.error("实时地图数据websocket推送失败: siteId={}, error={}", x.getSiteId(),
e.getMessage(), e); e.getMessage(), e);
} }
}
}); });
} }
} catch (Exception e) { } catch (Exception e) {