gaofw189
2023-01-10 26cd7dbaf9394ff26f5229b18cfdb72c203a6bc3
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -1,12 +1,11 @@
package com.genersoft.iot.vmp.storager.impl;
import com.genersoft.iot.vmp.common.StreamInfo;
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.media.zlm.dto.StreamPushItem;
import com.genersoft.iot.vmp.service.IGbStreamService;
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
@@ -27,7 +26,6 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -82,6 +80,9 @@
   @Autowired
    private GbStreamMapper gbStreamMapper;
   @Autowired
    private UserSetting userSetting;
   @Autowired
    private PlatformCatalogMapper catalogMapper;
@@ -230,31 +231,31 @@
      PageHelper.startPage(page, count);
      List<DeviceChannel> all;
      if (catalogUnderDevice != null && catalogUnderDevice) {
         all = deviceChannelMapper.queryChannels(deviceId, deviceId, query, hasSubChannel, online);
         all = deviceChannelMapper.queryChannels(deviceId, deviceId, query, hasSubChannel, online,null);
         // 海康设备的parentId是SIP id
         List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, sipConfig.getId(), query, hasSubChannel, online);
         List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, sipConfig.getId(), query, hasSubChannel, online,null);
         all.addAll(deviceChannels);
      }else {
         all = deviceChannelMapper.queryChannels(deviceId, null, query, hasSubChannel, online);
         all = deviceChannelMapper.queryChannels(deviceId, null, query, hasSubChannel, online,null);
      }
      return new PageInfo<>(all);
   }
   @Override
   public List<DeviceChannel> queryChannelsByDeviceIdWithStartAndLimit(String deviceId, String query, Boolean hasSubChannel, Boolean online, int start, int limit) {
      return deviceChannelMapper.queryChannelsByDeviceIdWithStartAndLimit(deviceId, null, query, hasSubChannel, online, start, limit);
   public List<DeviceChannel> queryChannelsByDeviceIdWithStartAndLimit(String deviceId, String query, Boolean hasSubChannel, Boolean online, int start, int limit,List<String> channelIds) {
      return deviceChannelMapper.queryChannelsByDeviceIdWithStartAndLimit(deviceId, null, query, hasSubChannel, online, start, limit,channelIds);
   }
   @Override
   public List<DeviceChannel> queryChannelsByDeviceId(String deviceId) {
      return deviceChannelMapper.queryChannels(deviceId, null,null, null, null);
   public List<DeviceChannel> queryChannelsByDeviceId(String deviceId,Boolean online,List<String> channelIds) {
      return deviceChannelMapper.queryChannels(deviceId, null,null, null, online,channelIds);
   }
   @Override
   public PageInfo<DeviceChannel> querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, Boolean online, int page, int count) {
      PageHelper.startPage(page, count);
      List<DeviceChannel> all = deviceChannelMapper.queryChannels(deviceId, parentChannelId, query, hasSubChannel, online);
      List<DeviceChannel> all = deviceChannelMapper.queryChannels(deviceId, parentChannelId, query, hasSubChannel, online,null);
      return new PageInfo<>(all);
   }
@@ -277,9 +278,9 @@
    * @return PageInfo<Device> 分页设备对象数组
    */
   @Override
   public PageInfo<Device> queryVideoDeviceList(int page, int count) {
   public PageInfo<Device> queryVideoDeviceList(int page, int count,Boolean online) {
      PageHelper.startPage(page, count);
      List<Device> all = deviceMapper.getDevices();
      List<Device> all = deviceMapper.getDevices(online);
      return new PageInfo<>(all);
   }
@@ -289,83 +290,10 @@
    * @return List<Device> 设备对象数组
    */
   @Override
   public List<Device> queryVideoDeviceList() {
   public List<Device> queryVideoDeviceList(Boolean online) {
      List<Device> deviceList =  deviceMapper.getDevices();
      List<Device> deviceList =  deviceMapper.getDevices(online);
      return deviceList;
   }
   /**
    * 删除设备
    *
    * @param deviceId 设备ID
    * @return true:删除成功  false:删除失败
    */
   @Override
   public boolean delete(String deviceId) {
      TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
      boolean result = false;
      try {
         platformChannelMapper.delChannelForDeviceId(deviceId);
         deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
         if ( deviceMapper.del(deviceId) < 0 ) {
            //事务回滚
            dataSourceTransactionManager.rollback(transactionStatus);
         }
         result = true;
         dataSourceTransactionManager.commit(transactionStatus);     //手动提交
      }catch (Exception e) {
         dataSourceTransactionManager.rollback(transactionStatus);
      }
      return result;
   }
   /**
    * 更新设备在线
    *
    * @param deviceId 设备ID
    * @return true:更新成功  false:更新失败
    */
   @Override
   public synchronized boolean online(String deviceId) {
      Device device = deviceMapper.getDeviceByDeviceId(deviceId);
      if (device == null) {
         return false;
      }
      device.setOnline(1);
      logger.info("更新设备在线: " + deviceId);
      redisCatchStorage.updateDevice(device);
      return deviceMapper.update(device) > 0;
   }
   /**
    * 更新设备离线
    *
    * @param deviceId 设备ID
    * @return true:更新成功  false:更新失败
    */
   @Override
   public synchronized boolean outline(String deviceId) {
      logger.info("更新设备离线: " + deviceId);
      Device device = deviceMapper.getDeviceByDeviceId(deviceId);
      if (device == null) {
         return false;
      }
      device.setOnline(0);
      redisCatchStorage.updateDevice(device);
      return deviceMapper.update(device) > 0;
   }
   /**
    * 更新所有设备离线
    *
    * @return true:更新成功  false:更新失败
    */
   @Override
   public synchronized boolean outlineForAll() {
      logger.info("更新所有设备离线");
      int result = deviceMapper.outlineForAll();
      return result > 0;
   }
   /**
@@ -614,7 +542,7 @@
    */
   @Override
   public List<DeviceChannel> queryGbStreamListInPlatform(String platformId) {
      return gbStreamMapper.queryGbStreamListInPlatform(platformId);
      return gbStreamMapper.queryGbStreamListInPlatform(platformId, userSetting.isUsePushingAsStatus());
   }
   /**
@@ -830,18 +758,6 @@
      return gbStreamMapper.updateStreamGPS(gpsMsgInfos);
   }
   private List<DeviceChannel> getDeviceChannelListByChannelReduceList(List<ChannelReduce> channelReduces, String catalogId) {
      List<DeviceChannel> deviceChannelList = new ArrayList<>();
      if (channelReduces.size() > 0){
         for (ChannelReduce channelReduce : channelReduces) {
            DeviceChannel deviceChannel = queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId());
            deviceChannel.setParental(1);
            deviceChannel.setParentId(catalogId);
            deviceChannelList.add(deviceChannel);
         }
      }
      return deviceChannelList;
   }
   private DeviceChannel getDeviceChannelByCatalog(PlatformCatalog catalog) {
      ParentPlatform platform = platformMapper.getParentPlatByServerGBId(catalog.getPlatformId());