648540858
2024-05-29 764d04b497356ba6bcbb75fd42b51eca750f7223
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -1,12 +1,12 @@
package com.genersoft.iot.vmp.storager.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.service.IGbStreamService;
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
@@ -38,6 +38,7 @@
 */
@SuppressWarnings("rawtypes")
@Component
@DS("master")
public class VideoManagerStorageImpl implements IVideoManagerStorage {
   private final Logger logger = LoggerFactory.getLogger(VideoManagerStorageImpl.class);
@@ -94,12 +95,6 @@
   @Autowired
    private PlatformGbStreamMapper platformGbStreamMapper;
   @Autowired
    private IGbStreamService gbStreamService;
   @Autowired
    private ParentPlatformMapper parentPlatformMapper;
   /**
    * 根据设备ID判断设备是否存在
    *
@@ -129,6 +124,7 @@
      List<DeviceChannel> updateChannels = new ArrayList<>();
      List<DeviceChannel> addChannels = new ArrayList<>();
      List<DeviceChannel> deleteChannels = new ArrayList<>();
      StringBuilder stringBuilder = new StringBuilder();
      Map<String, Integer> subContMap = new HashMap<>();
@@ -142,7 +138,7 @@
         gbIdSet.add(deviceChannel.getChannelId());
         if (allChannelMap.containsKey(deviceChannel.getChannelId())) {
            deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId());
            deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio());
            deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).getHasAudio());
            if (allChannelMap.get(deviceChannel.getChannelId()).isStatus() !=deviceChannel.isStatus()){
               List<String> strings = platformChannelMapper.queryParentPlatformByChannelId(deviceChannel.getChannelId());
               if (!CollectionUtils.isEmpty(strings)){
@@ -159,6 +155,7 @@
            deviceChannel.setUpdateTime(DateUtil.getNow());
            addChannels.add(deviceChannel);
         }
         allChannelMap.remove(deviceChannel.getChannelId());
         channels.add(deviceChannel);
         if (!ObjectUtils.isEmpty(deviceChannel.getParentId())) {
            if (subContMap.get(deviceChannel.getParentId()) == null) {
@@ -169,7 +166,8 @@
            }
         }
      }
      if (channels.size() > 0) {
      deleteChannels.addAll(allChannelMap.values());
      if (!channels.isEmpty()) {
         for (DeviceChannel channel : channels) {
            if (subContMap.get(channel.getChannelId()) != null){
               Integer count = subContMap.get(channel.getChannelId());
@@ -190,20 +188,8 @@
      }
      try {
         int limitCount = 50;
         int cleanChannelsResult = 0;
         if (channels.size() > limitCount) {
            for (int i = 0; i < channels.size(); i += limitCount) {
               int toIndex = i + limitCount;
               if (i + limitCount > channels.size()) {
                  toIndex = channels.size();
               }
               cleanChannelsResult += this.deviceChannelMapper.cleanChannelsNotInList(deviceId, channels.subList(i, toIndex));
            }
         } else {
            cleanChannelsResult = this.deviceChannelMapper.cleanChannelsNotInList(deviceId, channels);
         }
         boolean result = cleanChannelsResult < 0;
         if (!result && addChannels.size() > 0) {
         boolean result = false;
         if (!result && !addChannels.isEmpty()) {
            if (addChannels.size() > limitCount) {
               for (int i = 0; i < addChannels.size(); i += limitCount) {
                  int toIndex = i + limitCount;
@@ -216,7 +202,7 @@
               result = result || deviceChannelMapper.batchAdd(addChannels) < 0;
            }
         }
         if (!result && updateChannels.size() > 0) {
         if (!result && !updateChannels.isEmpty()) {
            if (updateChannels.size() > limitCount) {
               for (int i = 0; i < updateChannels.size(); i += limitCount) {
                  int toIndex = i + limitCount;
@@ -227,6 +213,20 @@
               }
            }else {
               result = result || deviceChannelMapper.batchUpdate(updateChannels) < 0;
            }
         }
         if (!result && !deleteChannels.isEmpty()) {
            System.out.println("删除: " + deleteChannels.size());
            if (deleteChannels.size() > limitCount) {
               for (int i = 0; i < deleteChannels.size(); i += limitCount) {
                  int toIndex = i + limitCount;
                  if (i + limitCount > deleteChannels.size()) {
                     toIndex = deleteChannels.size();
                  }
                  result = result || deviceChannelMapper.batchDel(deleteChannels.subList(i, toIndex)) < 0;
               }
            }else {
               result = result || deviceChannelMapper.batchDel(deleteChannels) < 0;
            }
         }
@@ -274,7 +274,7 @@
               deviceChannel.setUpdateTime(DateUtil.getNow());
               if (allChannelMap.containsKey(deviceChannel.getChannelId())) {
                  deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId());
                  deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio());
                  deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).getHasAudio());
                  if (allChannelMap.get(deviceChannel.getChannelId()).isStatus() !=deviceChannel.isStatus()){
                     List<String> strings = platformChannelMapper.queryParentPlatformByChannelId(deviceChannel.getChannelId());
                     if (!CollectionUtils.isEmpty(strings)){