From b2772a0a1bdc946fed24fd0eab626ed16b64d250 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Sun, 25 Jan 2026 09:13:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=AF=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=E5=AA=92=E4=BD=93=E4=BF=A1=E6=81=AF=E5=86=99=E5=85=A5=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/gb28181/service/impl/DeviceServiceImpl.java | 3 +++ .../vmp/media/event/mediaServer/MediaServerChangeEvent.java | 6 ++---- .../iot/vmp/media/service/impl/MediaServerServiceImpl.java | 1 + .../iot/vmp/media/zlm/ZLMMediaServerStatusManager.java | 4 +++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java index 7e8aec7e5..24323cb5d 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java @@ -397,6 +397,9 @@ public class DeviceServiceImpl implements IDeviceService, CommandLineRunner { } List realDeviceList = new ArrayList<>(); for (Device device : deviceList) { + if (device == null) { + continue; + } log.info("[设备离线] device:{}, 心跳间隔: {},心跳超时次数: {}, 上次心跳时间:{}, 上次注册时间: {}", device.getDeviceId(), device.getHeartBeatInterval(), device.getHeartBeatCount(), device.getKeepaliveTime(), device.getRegisterTime()); device.setOnLine(false); diff --git a/src/main/java/com/genersoft/iot/vmp/media/event/mediaServer/MediaServerChangeEvent.java b/src/main/java/com/genersoft/iot/vmp/media/event/mediaServer/MediaServerChangeEvent.java index ecbe332b3..df257c774 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/event/mediaServer/MediaServerChangeEvent.java +++ b/src/main/java/com/genersoft/iot/vmp/media/event/mediaServer/MediaServerChangeEvent.java @@ -1,12 +1,14 @@ package com.genersoft.iot.vmp.media.event.mediaServer; import com.genersoft.iot.vmp.media.bean.MediaServer; +import lombok.Getter; import org.springframework.context.ApplicationEvent; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +@Getter public class MediaServerChangeEvent extends ApplicationEvent { public MediaServerChangeEvent(Object source) { @@ -15,10 +17,6 @@ public class MediaServerChangeEvent extends ApplicationEvent { private List mediaServerItemList; - public List getMediaServerItemList() { - return mediaServerItemList; - } - public void setMediaServerItemList(List mediaServerItemList) { this.mediaServerItemList = mediaServerItemList; } diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java index 7b6e0aa7d..d3c1c3b64 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java @@ -33,6 +33,7 @@ import com.genersoft.iot.vmp.utils.redis.RedisUtil; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.bean.WVPResult; import jakarta.validation.constraints.NotNull; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import okhttp3.OkHttpClient; import okhttp3.Request; diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java index fd0d7d664..b0693c89d 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaServerStatusManager.java @@ -36,6 +36,7 @@ import java.util.concurrent.ConcurrentHashMap; @Component public class ZLMMediaServerStatusManager { + private final Map offlineZlmPrimaryMap = new ConcurrentHashMap<>(); private final Map offlineZlmsecondaryMap = new ConcurrentHashMap<>(); private final Map offlineZlmTimeMap = new ConcurrentHashMap<>(); @@ -80,7 +81,6 @@ public class ZLMMediaServerStatusManager { log.info("[ZLM-添加待上线节点] ID:{}", mediaServerItem.getId()); offlineZlmPrimaryMap.put(mediaServerItem.getId(), mediaServerItem); offlineZlmTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis()); - execute(); } } @@ -183,6 +183,8 @@ public class ZLMMediaServerStatusManager { MediaServer mediaServerInDb = mediaServerService.getOne(mediaServer.getId()); if (mediaServerInDb == null || !mediaServerInDb.isStatus()) { log.info("[ZLM-连接成功] ID:{}, 地址: {}:{}", mediaServer.getId(), mediaServer.getIp(), mediaServer.getHttpPort()); + offlineZlmPrimaryMap.remove(mediaServer.getId()); + offlineZlmsecondaryMap.remove(mediaServer.getId()); if (config == null) { ZLMResult> mediaServerConfig = zlmresTfulUtils.getMediaServerConfig(mediaServer); List data = mediaServerConfig.getData();