From 21a96ad20fd75e55d03c00af8df8adb039f0c77a Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 20 六月 2023 12:51:06 +0800 Subject: [PATCH] 修复通道刷新 --- src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java | 44 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java index ed01b61..1d4c355 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java @@ -123,6 +123,9 @@ 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<>(); @@ -137,15 +140,21 @@ if (allChannelMap.containsKey(deviceChannel.getChannelId())) { deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId()); deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio()); - if (allChannelMap.get(deviceChannel.getChannelId()).getStatus() !=deviceChannel.getStatus()){ + 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.getStatus()==1?CatalogEvent.ON:CatalogEvent.OFF); + 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())) { @@ -178,21 +187,36 @@ } try { int cleanChannelsResult = deviceChannelMapper.cleanChannelsNotInList(deviceId, channels); + int limitCount = 300; boolean result = cleanChannelsResult < 0; - if (!result && channels.size() > 0) { - if (channels.size() > limitCount) { - for (int i = 0; i < channels.size(); i += limitCount) { + if (!result && addChannels.size() > 0) { + if (addChannels.size() > limitCount) { + for (int i = 0; i < addChannels.size(); i += limitCount) { int toIndex = i + limitCount; - if (i + limitCount > channels.size()) { - toIndex = channels.size(); + if (i + limitCount > addChannels.size()) { + toIndex = addChannels.size(); } - result = result || deviceChannelMapper.batchAddOrUpdate(channels.subList(i, toIndex)) < 0; + result = result || deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex)) < 0; } }else { - result = result || deviceChannelMapper.batchAddOrUpdate(channels) < 0; + result = result || deviceChannelMapper.batchAdd(addChannels) < 0; } } + if (!result && updateChannels.size() > 0) { + if (updateChannels.size() > limitCount) { + for (int i = 0; i < updateChannels.size(); i += limitCount) { + int toIndex = i + limitCount; + if (i + limitCount > updateChannels.size()) { + toIndex = updateChannels.size(); + } + result = result || deviceChannelMapper.batchUpdate(updateChannels.subList(i, toIndex)) < 0; + } + }else { + result = result || deviceChannelMapper.batchUpdate(updateChannels) < 0; + } + } + if (result) { //浜嬪姟鍥炴粴 dataSourceTransactionManager.rollback(transactionStatus); @@ -944,7 +968,7 @@ deviceChannel.setName(catalog.getName()); deviceChannel.setDeviceId(platform.getDeviceGBId()); deviceChannel.setManufacture("wvp-pro"); - deviceChannel.setStatus(1); + deviceChannel.setStatus(true); deviceChannel.setParental(1); deviceChannel.setRegisterWay(1); -- Gitblit v1.8.0