src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
@@ -132,7 +132,7 @@ if (event.getGbStreams() != null && event.getGbStreams().size() > 0){ for (GbStream gbStream : event.getGbStreams()) { deviceChannelList.add( gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), parentPlatform)); gbStreamService.getDeviceChannelListByStreamWithStatus(gbStream, gbStream.getCatalogId(), parentPlatform)); } } if (deviceChannelList.size() > 0) { @@ -154,7 +154,7 @@ deviceChannelList.add(deviceChannel); GbStream gbStream = storager.queryStreamInParentPlatform(platform.getServerGBId(), gbId); if(gbStream != null){ DeviceChannel deviceChannelByStream = gbStreamService.getDeviceChannelListByStream(gbStream, gbStream.getCatalogId(), platform); DeviceChannel deviceChannelByStream = gbStreamService.getDeviceChannelListByStreamWithStatus(gbStream, gbStream.getCatalogId(), platform); deviceChannelList.add(deviceChannelByStream); } sipCommanderFroPlatform.sendNotifyForCatalogAddOrUpdate(event.getType(), platform, deviceChannelList, subscribeInfo, null); src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -1219,9 +1219,9 @@ String charset = device.getCharset(); catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n"); catalogXml.append("<Query>\r\n"); catalogXml.append("<CmdType>Catalog</CmdType>\r\n"); catalogXml.append("<SN>" + sn + "</SN>\r\n"); catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); catalogXml.append(" <CmdType>Catalog</CmdType>\r\n"); catalogXml.append(" <SN>" + sn + "</SN>\r\n"); catalogXml.append(" <DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); catalogXml.append("</Query>\r\n"); String tm = Long.toString(System.currentTimeMillis()); @@ -1229,7 +1229,7 @@ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() : udpSipProvider.getNewCallId(); Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaCatalog-" + tm, "FromCat" + tm, null, callIdHeader); Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK" + tm, tm, null, callIdHeader); transmitRequest(device, request, errorEvent); } catch (SipException | ParseException | InvalidArgumentException e) { src/main/java/com/genersoft/iot/vmp/service/IGbStreamService.java
@@ -53,4 +53,6 @@ * @return */ int updateGbIdOrName(List<StreamPushItem> streamPushItemForUpdate); DeviceChannel getDeviceChannelListByStreamWithStatus(GbStream gbStream, String catalogId, ParentPlatform platform); } src/main/java/com/genersoft/iot/vmp/service/impl/GbStreamServiceImpl.java
@@ -79,7 +79,7 @@ gbStream.setPlatformId(platformId); // TODO 修改为批量提交 platformGbStreamMapper.add(gbStream); DeviceChannel deviceChannelListByStream = getDeviceChannelListByStream(gbStream, catalogId, parentPlatform); DeviceChannel deviceChannelListByStream = getDeviceChannelListByStreamWithStatus(gbStream, catalogId, parentPlatform); deviceChannelList.add(deviceChannelListByStream); } dataSourceTransactionManager.commit(transactionStatus); //手动提交 @@ -188,4 +188,46 @@ public int updateGbIdOrName(List<StreamPushItem> streamPushItemForUpdate) { return gbStreamMapper.updateGbIdOrName(streamPushItemForUpdate); } @Override public DeviceChannel getDeviceChannelListByStreamWithStatus(GbStream gbStream, String catalogId, ParentPlatform platform) { DeviceChannel deviceChannel = new DeviceChannel(); deviceChannel.setChannelId(gbStream.getGbId()); deviceChannel.setName(gbStream.getName()); deviceChannel.setLongitude(gbStream.getLongitude()); deviceChannel.setLatitude(gbStream.getLatitude()); deviceChannel.setDeviceId(platform.getDeviceGBId()); deviceChannel.setManufacture("wvp-pro"); // todo 目前是每一条查询一次,需要优化 Boolean status = null; if ("proxy".equals(gbStream.getStreamType())) { status = gbStreamMapper.selectStatusForProxy(gbStream.getApp(), gbStream.getStream()); }else { status = gbStreamMapper.selectStatusForPush(gbStream.getApp(), gbStream.getStream()); } deviceChannel.setStatus((status != null && status )?1:0); deviceChannel.setRegisterWay(1); deviceChannel.setCivilCode(platform.getAdministrativeDivision()); if (platform.getTreeType().equals(TreeType.CIVIL_CODE)){ deviceChannel.setCivilCode(catalogId); }else if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)){ PlatformCatalog catalog = catalogMapper.select(catalogId); if (catalog == null) { deviceChannel.setParentId(platform.getDeviceGBId()); deviceChannel.setBusinessGroupId(null); }else { deviceChannel.setParentId(catalog.getId()); deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId()); } } deviceChannel.setModel("live"); deviceChannel.setOwner("wvp-pro"); deviceChannel.setParental(0); deviceChannel.setSecrecy("0"); return deviceChannel; } } src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
@@ -158,4 +158,10 @@ "</foreach>"+ "</script>") int updateGbIdOrName(List<StreamPushItem> streamPushItemForUpdate); @Select("SELECT status FROM stream_proxy WHERE app=#{app} AND stream=#{stream}") Boolean selectStatusForProxy(String app, String stream); @Select("SELECT status FROM stream_push WHERE app=#{app} AND stream=#{stream}") Boolean selectStatusForPush(String app, String stream); }