648540858
2024-06-12 0ac27b03ffd13370e2beec83ce7cb394091ae889
增加设备上线判断双逻辑,兼容大华注册后不再发送注册的设备
3个文件已修改
26 ■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/all-application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java
@@ -74,6 +74,8 @@
    private boolean registerKeepIntDialog = false;
    private int gbDeviceOnline = 0;
    public Boolean getSavePositionHistory() {
        return savePositionHistory;
    }
@@ -325,4 +327,12 @@
    public void setDocEnable(Boolean docEnable) {
        this.docEnable = docEnable;
    }
    public int getGbDeviceOnline() {
        return gbDeviceOnline;
    }
    public void setGbDeviceOnline(int gbDeviceOnline) {
        this.gbDeviceOnline = gbDeviceOnline;
    }
}
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
@@ -62,7 +62,10 @@
        }
        SIPRequest request = (SIPRequest) evt.getRequest();
        logger.info("[收到心跳] device: {}, callId: {}", device.getDeviceId(), request.getCallIdHeader().getCallId());
        if (userSetting.getGbDeviceOnline() == 0 && !device.isOnLine()) {
            logger.warn("[收到心跳] 设备离线,心跳不进行回复, device: {}, callId: {}", device.getDeviceId(), request.getCallIdHeader().getCallId());
            return;
        }
        // 回复200 OK
        try {
            responseAck(request, Response.OK);
@@ -101,9 +104,10 @@
        if (device.isOnLine()) {
            deviceService.updateDevice(device);
        }else {
            // 对于已经离线的设备判断他的注册是否已经过期
            if (!deviceService.expire(device)){
                device.setOnLine(false);
            if (userSetting.getGbDeviceOnline() == 1) {
                // 对于已经离线的设备判断他的注册是否已经过期
                device.setOnLine(true);
                device.setRegisterTime(DateUtil.getNow());
                deviceService.online(device, null);
            }
        }
src/main/resources/all-application.yml
@@ -247,6 +247,10 @@
    allowed-origins:
        - http://localhost:8008
        - http://192.168.1.3:8008
    # 国标设备离线后的上线策略,
    # 0: 国标标准实现,设备离线后不回复心跳,知道设备重新注册上线,
    # 1: 对于离线设备,收到心跳就把设备设置为上线,并更新注册时间为上次这次心跳的时间。防止过期时间判断u异常
    gb-device-online: 0
# 关闭在线文档(生产环境建议关闭)
springdoc: