From 221f99c764b51c3cd284c6e5a41492c26c5c7ffc Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期五, 09 九月 2022 17:06:19 +0800 Subject: [PATCH] 优化sip消息 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java | 111 ++++++++++++++++++++----------------------------------- 1 files changed, 40 insertions(+), 71 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java index 959432c..1aafbf6 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java @@ -8,8 +8,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.QueryMessageHandler; -import com.genersoft.iot.vmp.storager.IVideoManagerStorager; -import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; +import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import org.dom4j.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,6 +22,7 @@ import javax.sip.header.FromHeader; import javax.sip.message.Response; import java.text.ParseException; +import java.util.ArrayList; import java.util.List; @Component @@ -35,7 +35,7 @@ private QueryMessageHandler queryMessageHandler; @Autowired - private IVideoManagerStorager storager; + private IVideoManagerStorage storager; @Autowired private SIPCommanderFroPlatform cmderFroPlatform; @@ -45,6 +45,9 @@ @Autowired private EventPublisher publisher; + + @Autowired + private IVideoManagerStorage storage; @Override public void afterPropertiesSet() throws Exception { @@ -67,82 +70,35 @@ Element snElement = rootElement.element("SN"); String sn = snElement.getText(); // 鍑嗗鍥炲閫氶亾淇℃伅 - List<ChannelReduce> channelReduces = storager.queryChannelListInParentPlatform(parentPlatform.getServerGBId()); + List<DeviceChannel> deviceChannelInPlatforms = storager.queryChannelWithCatalog(parentPlatform.getServerGBId()); // 鏌ヨ鍏宠仈鐨勭洿鎾�氶亾 - List<GbStream> gbStreams = storager.queryGbStreamListInPlatform(parentPlatform.getServerGBId()); + List<DeviceChannel> gbStreams = storager.queryGbStreamListInPlatform(parentPlatform.getServerGBId()); // 鍥炲鐩綍淇℃伅 - List<PlatformCatalog> catalogs = storager.queryCatalogInPlatform(parentPlatform.getServerGBId()); - int size = catalogs.size() + channelReduces.size() + gbStreams.size(); + List<DeviceChannel> catalogs = storager.queryCatalogInPlatform(parentPlatform.getServerGBId()); + + List<DeviceChannel> allChannels = new ArrayList<>(); + + // 鍥炲骞冲彴 + DeviceChannel deviceChannel = getChannelForPlatform(parentPlatform); + allChannels.add(deviceChannel); + + // 鍥炲鐩綍 if (catalogs.size() > 0) { - for (PlatformCatalog catalog : catalogs) { - if (catalog.getParentId().equals(parentPlatform.getServerGBId())) { - catalog.setParentId(parentPlatform.getDeviceGBId()); - } - DeviceChannel deviceChannel = new DeviceChannel(); - deviceChannel.setChannelId(catalog.getId()); - deviceChannel.setName(catalog.getName()); - deviceChannel.setLongitude(0.0); - deviceChannel.setLatitude(0.0); - deviceChannel.setDeviceId(parentPlatform.getDeviceGBId()); - deviceChannel.setManufacture("wvp-pro"); - deviceChannel.setStatus(1); - deviceChannel.setParental(1); - deviceChannel.setParentId(catalog.getParentId()); - deviceChannel.setRegisterWay(1); - deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0,6)); - deviceChannel.setModel("live"); - deviceChannel.setOwner("wvp-pro"); - deviceChannel.setSecrecy("0"); - cmderFroPlatform.catalogQuery(deviceChannel, parentPlatform, sn, fromHeader.getTag(), size); - // 闃叉鍙戦�佽繃蹇� - Thread.sleep(100); - } + allChannels.addAll(catalogs); } // 鍥炲绾ц仈鐨勯�氶亾 - if (channelReduces.size() > 0) { - for (ChannelReduce channelReduce : channelReduces) { - if (channelReduce.getCatalogId().equals(parentPlatform.getServerGBId())) { - channelReduce.setCatalogId(parentPlatform.getDeviceGBId()); - } - DeviceChannel deviceChannel = storager.queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId()); - deviceChannel.setParental(0); - deviceChannel.setParentId(channelReduce.getCatalogId()); - deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0, 6)); - cmderFroPlatform.catalogQuery(deviceChannel, parentPlatform, sn, fromHeader.getTag(), size); - // 闃叉鍙戦�佽繃蹇� - Thread.sleep(100); - } + if (deviceChannelInPlatforms.size() > 0) { + allChannels.addAll(deviceChannelInPlatforms); } // 鍥炲鐩存挱鐨勯�氶亾 if (gbStreams.size() > 0) { - for (GbStream gbStream : gbStreams) { - if (gbStream.getCatalogId().equals(parentPlatform.getServerGBId())) { - gbStream.setCatalogId(parentPlatform.getDeviceGBId()); - } - DeviceChannel deviceChannel = new DeviceChannel(); - deviceChannel.setChannelId(gbStream.getGbId()); - deviceChannel.setName(gbStream.getName()); - deviceChannel.setLongitude(gbStream.getLongitude()); - deviceChannel.setLatitude(gbStream.getLatitude()); - deviceChannel.setDeviceId(parentPlatform.getDeviceGBId()); - deviceChannel.setManufacture("wvp-pro"); - deviceChannel.setStatus(gbStream.isStatus()?1:0); - deviceChannel.setParentId(gbStream.getCatalogId()); - deviceChannel.setRegisterWay(1); - deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0,6)); - deviceChannel.setModel("live"); - deviceChannel.setOwner("wvp-pro"); - deviceChannel.setParental(0); - deviceChannel.setSecrecy("0"); - - cmderFroPlatform.catalogQuery(deviceChannel, parentPlatform, sn, fromHeader.getTag(), size); - // 闃叉鍙戦�佽繃蹇� - Thread.sleep(100); - } + allChannels.addAll(gbStreams); } - if (size == 0) { + if (allChannels.size() > 0) { + cmderFroPlatform.catalogQuery(allChannels, parentPlatform, sn, fromHeader.getTag()); + }else { // 鍥炲鏃犻�氶亾 - cmderFroPlatform.catalogQuery(null, parentPlatform, sn, fromHeader.getTag(), size); + cmderFroPlatform.catalogQuery(null, parentPlatform, sn, fromHeader.getTag(), 0); } } catch (SipException e) { e.printStackTrace(); @@ -150,9 +106,22 @@ e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); } } + + private DeviceChannel getChannelForPlatform(ParentPlatform platform) { + DeviceChannel deviceChannel = new DeviceChannel(); + + deviceChannel.setChannelId(platform.getDeviceGBId()); + deviceChannel.setName(platform.getName()); + deviceChannel.setManufacture("wvp-pro"); + deviceChannel.setOwner("wvp-pro"); + deviceChannel.setCivilCode(platform.getAdministrativeDivision()); + deviceChannel.setAddress("wvp-pro"); + deviceChannel.setRegisterWay(0); + deviceChannel.setSecrecy("0"); + + return deviceChannel; + } } -- Gitblit v1.8.0