Merge branch 'wvp-28181-2.0' into wvp-28181-2.0

This commit is contained in:
648540858
2023-06-20 14:15:27 +08:00
committed by GitHub
35 changed files with 4132 additions and 653 deletions

View File

@@ -451,10 +451,18 @@ public interface DeviceChannelMapper {
@Select("select count(1) from wvp_device_channel")
int getAllChannelCount();
/*=================设备主子码流逻辑START==============*/
// 设备主子码流逻辑START
@Update(value = {"UPDATE wvp_device_channel SET stream_id=null WHERE device_id=#{deviceId}"})
void clearPlay(String deviceId);
/*=================设备主子码流逻辑END==============*/
// 设备主子码流逻辑END
@Select(value = {" <script>" +
"select * " +
"from device_channel " +
"where device_id=#{deviceId}" +
" <if test='parentId != null '> and parent_id = #{parentId} </if>" +
" <if test='parentId == null '> and parent_id is null </if>" +
" <if test='onlyCatalog == true '> and parental = 1 </if>" +
" </script>"})
List<DeviceChannel> getSubChannelsByDeviceId(String deviceId, String parentId, boolean onlyCatalog);
}

View File

@@ -40,7 +40,6 @@ public interface DeviceMapper {
"ssrc_check," +
"as_message_channel," +
"geo_coord_sys," +
"tree_type," +
"on_line," +
"media_server_id," +
"switch_primary_sub_stream," +
@@ -75,7 +74,6 @@ public interface DeviceMapper {
"ssrc_check,"+
"as_message_channel,"+
"geo_coord_sys,"+
"tree_type,"+
"on_line"+
") VALUES (" +
"#{deviceId}," +
@@ -104,7 +102,6 @@ public interface DeviceMapper {
"#{ssrcCheck}," +
"#{asMessageChannel}," +
"#{geoCoordSys}," +
"#{treeType}," +
"#{onLine}" +
")")
int add(Device device);
@@ -159,7 +156,6 @@ public interface DeviceMapper {
"ssrc_check,"+
"as_message_channel,"+
"geo_coord_sys,"+
"tree_type,"+
"on_line,"+
"media_server_id,"+
"switch_primary_sub_stream switchPrimarySubStream,"+
@@ -201,7 +197,6 @@ public interface DeviceMapper {
"ssrc_check,"+
"as_message_channel,"+
"geo_coord_sys,"+
"tree_type,"+
"on_line"+
" FROM wvp_device WHERE on_line = true")
List<Device> getOnlineDevices();
@@ -232,7 +227,6 @@ public interface DeviceMapper {
"ssrc_check,"+
"as_message_channel,"+
"geo_coord_sys,"+
"tree_type,"+
"on_line"+
" FROM wvp_device WHERE ip = #{host} AND port=#{port}")
Device getDeviceByHostAndPort(String host, int port);
@@ -254,7 +248,6 @@ public interface DeviceMapper {
"<if test=\"ssrcCheck != null\">, ssrc_check=#{ssrcCheck}</if>" +
"<if test=\"asMessageChannel != null\">, as_message_channel=#{asMessageChannel}</if>" +
"<if test=\"geoCoordSys != null\">, geo_coord_sys=#{geoCoordSys}</if>" +
"<if test=\"treeType != null\">, tree_type=#{treeType}</if>" +
"<if test=\"switchPrimarySubStream != null\">, switch_primary_sub_stream=#{switchPrimarySubStream}</if>" +
"<if test=\"mediaServerId != null\">, media_server_id=#{mediaServerId}</if>" +
"WHERE device_id=#{deviceId}"+
@@ -272,7 +265,6 @@ public interface DeviceMapper {
"ssrc_check,"+
"as_message_channel,"+
"geo_coord_sys,"+
"tree_type,"+
"on_line,"+
"media_server_id,"+
"switch_primary_sub_stream"+
@@ -287,7 +279,6 @@ public interface DeviceMapper {
"#{ssrcCheck}," +
"#{asMessageChannel}," +
"#{geoCoordSys}," +
"#{treeType}," +
"#{onLine}," +
"#{mediaServerId}," +
"#{switchPrimarySubStream}" +

View File

@@ -16,10 +16,10 @@ public interface ParentPlatformMapper {
@Insert("INSERT INTO wvp_platform (enable, name, server_gb_id, server_gb_domain, server_ip, server_port,device_gb_id,device_ip,"+
"device_port,username,password,expires,keep_timeout,transport,character_set,ptz,rtcp,as_message_channel,"+
"status,start_offline_push,catalog_id,administrative_division,catalog_group,create_time,update_time,tree_type) " +
"status,start_offline_push,catalog_id,administrative_division,catalog_group,create_time,update_time) " +
" VALUES (#{enable}, #{name}, #{serverGBId}, #{serverGBDomain}, #{serverIP}, #{serverPort}, #{deviceGBId}, #{deviceIp}, " +
" #{devicePort}, #{username}, #{password}, #{expires}, #{keepTimeout}, #{transport}, #{characterSet}, #{ptz}, #{rtcp}, #{asMessageChannel}, " +
" #{status}, #{startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime}, #{treeType})")
" #{status}, #{startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime})")
int addParentPlatform(ParentPlatform parentPlatform);
@Update("UPDATE wvp_platform " +
@@ -47,7 +47,6 @@ public interface ParentPlatformMapper {
"administrative_division=#{administrativeDivision}, " +
"create_time=#{createTime}, " +
"update_time=#{updateTime}, " +
"tree_type=#{treeType}, " +
"catalog_id=#{catalogId} " +
"WHERE id=#{id}")
int updateParentPlatform(ParentPlatform parentPlatform);

View File

@@ -128,51 +128,56 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
List<DeviceChannel> addChannels = new ArrayList<>();
StringBuilder stringBuilder = new StringBuilder();
Map<String, Integer> subContMap = new HashMap<>();
if (deviceChannelList.size() > 0) {
// 数据去重
Set<String> gbIdSet = new HashSet<>();
for (DeviceChannel deviceChannel : deviceChannelList) {
if (!gbIdSet.contains(deviceChannel.getChannelId())) {
gbIdSet.add(deviceChannel.getChannelId());
deviceChannel.setUpdateTime(DateUtil.getNow());
if (allChannelMap.containsKey(deviceChannel.getChannelId())) {
deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId());
deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio());
if (allChannelMap.get(deviceChannel.getChannelId()).isStatus() !=deviceChannel.isStatus()){
List<String> strings = platformChannelMapper.queryParentPlatformByChannelId(deviceChannel.getChannelId());
if (!CollectionUtils.isEmpty(strings)){
strings.forEach(platformId->{
eventPublisher.catalogEventPublish(platformId, deviceChannel, deviceChannel.isStatus()?CatalogEvent.ON:CatalogEvent.OFF);
});
}
}
updateChannels.add(deviceChannel);
}else {
deviceChannel.setCreateTime(DateUtil.getNow());
addChannels.add(deviceChannel);
}
channels.add(deviceChannel);
if (!ObjectUtils.isEmpty(deviceChannel.getParentId())) {
if (subContMap.get(deviceChannel.getParentId()) == null) {
subContMap.put(deviceChannel.getParentId(), 1);
}else {
Integer count = subContMap.get(deviceChannel.getParentId());
subContMap.put(deviceChannel.getParentId(), count++);
}
}
}else {
stringBuilder.append(deviceChannel.getChannelId()).append(",");
}
}
if (channels.size() > 0) {
for (DeviceChannel channel : channels) {
if (subContMap.get(channel.getChannelId()) != null){
channel.setSubCount(subContMap.get(channel.getChannelId()));
}
}
}
// 数据去重
Set<String> gbIdSet = new HashSet<>();
for (DeviceChannel deviceChannel : deviceChannelList) {
if (gbIdSet.contains(deviceChannel.getChannelId())) {
stringBuilder.append(deviceChannel.getChannelId()).append(",");
continue;
}
gbIdSet.add(deviceChannel.getChannelId());
if (allChannelMap.containsKey(deviceChannel.getChannelId())) {
deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId());
deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio());
if (allChannelMap.get(deviceChannel.getChannelId()).isStatus() !=deviceChannel.isStatus()){
List<String> strings = platformChannelMapper.queryParentPlatformByChannelId(deviceChannel.getChannelId());
if (!CollectionUtils.isEmpty(strings)){
strings.forEach(platformId->{
eventPublisher.catalogEventPublish(platformId, deviceChannel, deviceChannel.isStatus()?CatalogEvent.ON:CatalogEvent.OFF);
});
}
}
deviceChannel.setUpdateTime(DateUtil.getNow());
updateChannels.add(deviceChannel);
}else {
deviceChannel.setCreateTime(DateUtil.getNow());
deviceChannel.setUpdateTime(DateUtil.getNow());
addChannels.add(deviceChannel);
}
channels.add(deviceChannel);
if (!ObjectUtils.isEmpty(deviceChannel.getParentId())) {
if (subContMap.get(deviceChannel.getParentId()) == null) {
subContMap.put(deviceChannel.getParentId(), 1);
}else {
Integer count = subContMap.get(deviceChannel.getParentId());
subContMap.put(deviceChannel.getParentId(), count++);
}
}
}
if (channels.size() > 0) {
for (DeviceChannel channel : channels) {
if (subContMap.get(channel.getChannelId()) != null){
Integer count = subContMap.get(channel.getChannelId());
if (count > 0) {
channel.setSubCount(count);
channel.setParental(1);
}
}
}
}
if (stringBuilder.length() > 0) {
logger.info("[目录查询]收到的数据存在重复: {}" , stringBuilder);
}
@@ -795,25 +800,49 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
if (platform == null) {
return 0;
}
if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)) {
if (platform.getDeviceGBId().equals(platformCatalog.getParentId())) {
// 第一层节点
platformCatalog.setBusinessGroupId(platformCatalog.getId());
platformCatalog.setParentId(platform.getDeviceGBId());
}else {
// 获取顶层的
PlatformCatalog topCatalog = getTopCatalog(platformCatalog.getParentId(), platform.getDeviceGBId());
platformCatalog.setBusinessGroupId(topCatalog.getId());
if (platformCatalog.getId().length() <= 8) {
platformCatalog.setCivilCode(platformCatalog.getParentId());
}else {
if (platformCatalog.getId().length() != 20) {
return 0;
}
if (platformCatalog.getParentId() != null) {
switch (Integer.parseInt(platformCatalog.getId().substring(10, 13))){
case 200:
case 215:
if (platformCatalog.getParentId().length() <= 8) {
platformCatalog.setCivilCode(platformCatalog.getParentId());
}else {
PlatformCatalog catalog = catalogMapper.select(platformCatalog.getParentId());
if (catalog != null) {
platformCatalog.setCivilCode(catalog.getCivilCode());
}
}
break;
case 216:
if (platformCatalog.getParentId().length() <= 8) {
platformCatalog.setCivilCode(platformCatalog.getParentId());
}else {
PlatformCatalog catalog = catalogMapper.select(platformCatalog.getParentId());
if (catalog == null) {
logger.warn("[添加目录] 无法获取目录{}的CivilCode和BusinessGroupId", platformCatalog.getPlatformId());
break;
}
platformCatalog.setCivilCode(catalog.getCivilCode());
if (Integer.parseInt(platformCatalog.getParentId().substring(10, 13)) == 215) {
platformCatalog.setBusinessGroupId(platformCatalog.getParentId());
}else {
if (Integer.parseInt(platformCatalog.getParentId().substring(10, 13)) == 216) {
platformCatalog.setBusinessGroupId(catalog.getBusinessGroupId());
}
}
}
break;
default:
break;
}
}
}
if (platform.getTreeType().equals(TreeType.CIVIL_CODE)) {
platformCatalog.setCivilCode(platformCatalog.getId());
if (platformCatalog.getPlatformId().equals(platformCatalog.getParentId())) {
// 第一层节点
platformCatalog.setParentId(platform.getDeviceGBId());
}
}
int result = catalogMapper.add(platformCatalog);
if (result > 0) {
DeviceChannel deviceChannel = getDeviceChannelByCatalog(platformCatalog);
@@ -937,19 +966,14 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setChannelId(catalog.getId());
deviceChannel.setName(catalog.getName());
deviceChannel.setLongitude(0.0);
deviceChannel.setLatitude(0.0);
deviceChannel.setDeviceId(platform.getDeviceGBId());
deviceChannel.setManufacture("wvp-pro");
deviceChannel.setStatus(true);
deviceChannel.setParental(1);
deviceChannel.setRegisterWay(1);
// 行政区划应该是Domain的前八位
if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)) {
deviceChannel.setParentId(catalog.getParentId());
deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId());
}
deviceChannel.setParentId(catalog.getParentId());
deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId());
deviceChannel.setModel("live");
deviceChannel.setOwner("wvp-pro");