648540858
2021-11-04 c33bf822cce59667be80ba0bb45499498501d161
修复级联的通道查询以及设备信息查询
8个文件已修改
44 ■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/wvp.sqlite 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java
@@ -74,5 +74,8 @@
        device.setOnline(1);
        // 处理上线监听
        storager.updateDevice(device);
        // TODO 上线添加订阅
    }
}
src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java
@@ -100,6 +100,6 @@
                logger.info("再次向平台注册,平台国标ID:" + event.getPlatformGbID());
                sipCommanderFroPlatform.register(parentPlatform, null, okEvent);
            }
        }, config.getRegisterTimeInterval(), config.getRegisterTimeInterval());//十五秒后再次发起注册
        }, config.getRegisterTimeInterval()* 1000, config.getRegisterTimeInterval()* 1000);//十五秒后再次发起注册
    }
}
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
@@ -35,7 +35,7 @@
@SuppressWarnings("rawtypes")
public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
    private final static Logger logger = LoggerFactory.getLogger(MessageRequestProcessor.class);
    private final static Logger logger = LoggerFactory.getLogger(InviteRequestProcessor.class);
    private SIPCommanderFroPlatform cmderFroPlatform;
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -492,11 +492,8 @@
            String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
            // 查询设备是否存在
            Device device = storager.queryVideoDevice(deviceId);
            if (device == null) {
                logger.warn("处理DeviceInfo设备信息Message时未找到设备信息");
                response404Ack(evt);
                return;
            }
            ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(deviceId);
            Element rootElement = getRootElement(evt);
            String requestName = rootElement.getName();
            Element deviceIdElement = rootElement.element("DeviceID");
@@ -508,20 +505,20 @@
            if (requestName.equals("Query")) {
                logger.info("接收到DeviceInfo查询消息");
                FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
                String platformId = ((SipUri) fromHeader.getAddress().getURI()).getUser();
                    if (platformId == null) {
                if (parentPlatform == null) {
                    response404Ack(evt);
                    return;
                } else {
                    // 回复200 OK
                    responseAck(evt);
                    String sn = rootElement.element("SN").getText();
                    ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
                    cmderFroPlatform.deviceInfoResponse(parentPlatform, sn, fromHeader.getTag());
                }
            } else {
                logger.debug("接收到DeviceInfo应答消息");
                if (device == null) {
                    logger.warn("处理DeviceInfo设备信息Message时未找到设备信息");
                    response404Ack(evt);
                    return;
                }
@@ -561,11 +558,8 @@
            String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
            // 查询设备是否存在
            Device device = storager.queryVideoDevice(deviceId);
            if (device == null) {
                logger.warn("处理DeviceInfo设备信息Message时未找到设备信息");
                response404Ack(evt);
                return;
            }
            ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(deviceId);
            Element rootElement = getRootElement(evt);
            String name = rootElement.getName();
@@ -574,13 +568,8 @@
            Element deviceListElement = rootElement.element("DeviceList");
            String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + deviceId;
            FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
            AddressImpl address = (AddressImpl) fromHeader.getAddress();
            SipUri uri = (SipUri) address.getURI();
            String platformId = uri.getUser();
            // if (deviceListElement == null) { // 存在DeviceList则为响应 catalog, 不存在DeviceList则为查询请求
            if (name.equalsIgnoreCase("Query")) { // 区分是Response——查询响应,还是Query——查询请求
                // TODO 后续将代码拆分
                ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
                if (parentPlatform == null) {
                    response404Ack(evt);
                    return;
@@ -634,6 +623,11 @@
            } else {
                if (device == null) {
                    logger.warn("收到catalog设备目录列表请求时未找到设备信息");
                    response404Ack(evt);
                    return;
                }
                deviceListElement = getRootElement(evt, device.getCharset()).element("DeviceList");
                Iterator<Element> deviceListIterator = deviceListElement.elementIterator();
                if (deviceListIterator != null) {
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -326,6 +326,7 @@
        String streamId = json.getString("stream");
        String app = json.getString("app");
        // TODO 如果在给上级推流,也不停止。
        if ("rtp".equals(app)){
            JSONObject ret = new JSONObject();
            ret.put("code", 0);
src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java
@@ -26,7 +26,9 @@
    @Insert("<script> "+
            "INSERT INTO platform_gb_channel (channelId, deviceId, platformId, deviceAndChannelId) VALUES" +
            "<foreach collection='channelReducesToAdd'  item='item' separator=','> ('${item.channelId}','${item.deviceId}', '${platformId}', '${item.deviceId}_${item.channelId}' )</foreach>" +
            "<foreach collection='channelReducesToAdd'  item='item' separator=','>" +
            " ('${item.channelId}','${item.deviceId}', '${platformId}', '${item.deviceId}_${item.channelId}' )" +
            "</foreach>" +
            "</script>")
    int addChannels(String platformId, List<ChannelReduce> channelReducesToAdd);
src/main/resources/application.yml
@@ -1,3 +1,3 @@
spring:
  profiles:
    active: dev
    active: local
src/main/resources/wvp.sqlite
Binary files differ