From 2c774ae1552be508a23e7ff2a1c68928f268619f Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Sun, 25 Jan 2026 20:22:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BF=83=E8=B7=B3=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=9A=84=E5=86=99=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/genersoft/iot/vmp/gb28181/bean/Device.java | 14 ++++++++++++++ .../iot/vmp/gb28181/dao/DeviceMapper.java | 2 +- .../notify/cmd/KeepaliveNotifyMessageHandler.java | 8 ++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java index 83a302ecc..75d52a624 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java @@ -216,4 +216,18 @@ public class Device { public boolean checkWgs84() { return geoCoordSys.equalsIgnoreCase("WGS84"); } + + public Integer getHeartBeatCount() { + if (heartBeatCount == null) { + return 3; + } + return heartBeatCount; + } + + public Integer getHeartBeatInterval() { + if (heartBeatCount == null) { + return 60; + } + return heartBeatInterval; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java index a45723cc7..a92028b7b 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java @@ -465,7 +465,7 @@ public interface DeviceMapper { " UPDATE" + " wvp_device" + " SET keepalive_time=#{item.keepaliveTime}" + - " WHERE device_id=#{item.deviceId}"+ + " WHERE id=#{item.id}"+ "" + ""}) void batchUpdateForKeepalive(List devices); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java index 0cd348f90..7d746d87e 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java @@ -26,6 +26,7 @@ import javax.sip.RequestEvent; import javax.sip.SipException; import javax.sip.message.Response; import java.text.ParseException; +import java.util.List; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; @@ -49,7 +50,7 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp private IDeviceService deviceService; @Autowired - private DeviceStatusManager statusTaskRunner; + private DeviceStatusManager deviceStatusManager; @Autowired private UserSetting userSetting; @@ -83,7 +84,7 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp if (device.isOnLine()) { taskQueue.add(device); long expiresTime = Math.min(device.getExpires(), device.getHeartBeatInterval() * device.getHeartBeatCount()) * 1000L; - statusTaskRunner.add(device.getDeviceId(), expiresTime + System.currentTimeMillis()); + deviceStatusManager.add(device.getDeviceId(), expiresTime + System.currentTimeMillis()); } else { if (userSetting.getGbDeviceOnline() == 1) { // 对于已经离线的设备判断他的注册是否已经过期 @@ -91,8 +92,7 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp } } } - @Scheduled(fixedDelay = 1000, timeUnit = TimeUnit.MILLISECONDS) - @Async + @Scheduled(fixedDelay = 1, timeUnit = TimeUnit.SECONDS) public void executeUpdateDeviceList() { if (!taskQueue.isEmpty()) { deviceService.updateDeviceListForKeepalive(taskQueue.stream().toList());