648540858
2023-09-15 2d423d9668312fe75986af3c78c0228ce352e48d
Merge branch 'xinchuang' into wvp-28181-2.0
5个文件已修改
71 ■■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformChannelServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformGbStreamMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceChannelServiceImpl.java
@@ -141,7 +141,7 @@
                    }
                }
            }
            int limitCount = 300;
            int limitCount = 50;
            if (addChannels.size() > 0) {
                if (addChannels.size() > limitCount) {
                    for (int i = 0; i < addChannels.size(); i += limitCount) {
@@ -199,7 +199,7 @@
            deviceChannel.setUpdateTime(now);
            result.add(updateGps(deviceChannel, device));
        });
        int limitCount = 300;
        int limitCount = 50;
        if (result.size() > limitCount) {
            for (int i = 0; i < result.size(); i += limitCount) {
                int toIndex = i + limitCount;
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformChannelServiceImpl.java
@@ -82,7 +82,7 @@
        int allCount = 0;
        boolean result = false;
        TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
        int limitCount = 300;
        int limitCount = 50;
        if (channelReducesToAdd.size() > 0) {
            if (channelReducesToAdd.size() > limitCount) {
                for (int i = 0; i < channelReducesToAdd.size(); i += limitCount) {
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
@@ -14,7 +14,7 @@
@Repository
public interface GbStreamMapper {
    @Insert("REPLACE INTO wvp_gb_stream (app, stream, gb_id, name, " +
    @Insert("INSERT INTO wvp_gb_stream (app, stream, gb_id, name, " +
            "longitude, latitude, stream_type,media_server_id,create_time) VALUES" +
            "(#{app}, #{stream}, #{gbId}, #{name}, " +
            "#{longitude}, #{latitude}, #{streamType}, " +
src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformGbStreamMapper.java
@@ -16,7 +16,7 @@
@Repository
public interface PlatformGbStreamMapper {
    @Insert("REPLACE INTO wvp_platform_gb_stream (gb_stream_id, platform_id, catalog_id) VALUES" +
    @Insert("INSERT INTO wvp_platform_gb_stream (gb_stream_id, platform_id, catalog_id) VALUES" +
            "( #{gbStreamId}, #{platformId}, #{catalogId})")
    int add(PlatformGbStream platformGbStream);
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -186,9 +186,19 @@
            return false;
        }
        try {
            int cleanChannelsResult = deviceChannelMapper.cleanChannelsNotInList(deviceId, channels);
            int limitCount = 300;
            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) {
                if (addChannels.size() > limitCount) {
@@ -244,12 +254,12 @@
                allChannelMap.put(deviceChannel.getChannelId(), deviceChannel);
            }
        }
        List<DeviceChannel> addChannels = new ArrayList<>();
        List<DeviceChannel> updateChannels = new ArrayList<>();
        TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
        // 数据去重
        List<DeviceChannel> channels = new ArrayList<>();
        List<DeviceChannel> updateChannels = new ArrayList<>();
        List<DeviceChannel> addChannels = new ArrayList<>();
        StringBuilder stringBuilder = new StringBuilder();
        Map<String, Integer> subContMap = new HashMap<>();
        if (deviceChannelList.size() > 0) {
@@ -258,15 +268,24 @@
            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());
                        deviceChannel.setUpdateTime(DateUtil.getNow());
                        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);
@@ -279,15 +298,8 @@
                    stringBuilder.append(deviceChannel.getChannelId()).append(",");
                }
            }
            if (addChannels.size() > 0) {
                for (DeviceChannel channel : addChannels) {
                    if (subContMap.get(channel.getChannelId()) != null){
                        channel.setSubCount(subContMap.get(channel.getChannelId()));
                    }
                }
            }
            if (updateChannels.size() > 0) {
                for (DeviceChannel channel : updateChannels) {
            if (channels.size() > 0) {
                for (DeviceChannel channel : channels) {
                    if (subContMap.get(channel.getChannelId()) != null){
                        channel.setSubCount(subContMap.get(channel.getChannelId()));
                    }
@@ -298,12 +310,12 @@
        if (stringBuilder.length() > 0) {
            logger.info("[目录查询]收到的数据存在重复: {}" , stringBuilder);
        }
        if(CollectionUtils.isEmpty(updateChannels) && CollectionUtils.isEmpty(addChannels) ){
            logger.info("通道更新,数据为空={}" , deviceChannelList);
        if(CollectionUtils.isEmpty(channels)){
            logger.info("通道重设,数据为空={}" , deviceChannelList);
            return false;
        }
        try {
            int limitCount = 300;
            int limitCount = 50;
            boolean result = false;
            if (addChannels.size() > 0) {
                if (addChannels.size() > limitCount) {
@@ -312,10 +324,10 @@
                        if (i + limitCount > addChannels.size()) {
                            toIndex = addChannels.size();
                        }
                        result = result || deviceChannelMapper.batchAddOrUpdate(addChannels.subList(i, toIndex)) < 0;
                        result = result || deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex)) < 0;
                    }
                }else {
                    result = result || deviceChannelMapper.batchAddOrUpdate(addChannels) < 0;
                    result = result || deviceChannelMapper.batchAdd(addChannels) < 0;
                }
            }
            if (updateChannels.size() > 0) {
@@ -331,13 +343,12 @@
                    result = result || deviceChannelMapper.batchUpdate(updateChannels) < 0;
                }
            }
            if (result) {
                //事务回滚
                dataSourceTransactionManager.rollback(transactionStatus);
            }else {
                //手动提交
                dataSourceTransactionManager.commit(transactionStatus);
            }
            dataSourceTransactionManager.commit(transactionStatus);     //手动提交
            return true;
        }catch (Exception e) {
            logger.error("未处理的异常 ", e);