From 36fda97ebba23425e859ea87ada5beb8687349c1 Mon Sep 17 00:00:00 2001 From: panll <1018729+pan648540858@user.noreply.gitee.com> Date: 星期四, 13 一月 2022 16:45:45 +0800 Subject: [PATCH] !5 优化通道更新逻辑以及添加去重保证数据存入 Merge pull request !5 from panll/temp2 --- src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java | 41 +++++++++++++++++++++++++++++------------ 1 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java index dba268d..2f4c966 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java @@ -24,10 +24,7 @@ import org.springframework.util.StringUtils; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @description:瑙嗛璁惧鏁版嵁瀛樺偍-jdbc瀹炵幇 @@ -227,21 +224,41 @@ @Override public boolean resetChannels(String deviceId, List<DeviceChannel> deviceChannelList) { TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + // 鏁版嵁鍘婚噸 + List<DeviceChannel> channels = new ArrayList<>(); + StringBuilder stringBuilder = new StringBuilder(); + if (deviceChannelList.size() > 1) { + // 鏁版嵁鍘婚噸 + Set<String> gbIdSet = new HashSet<>(); + for (DeviceChannel deviceChannel : deviceChannelList) { + if (!gbIdSet.contains(deviceChannel.getChannelId())) { + gbIdSet.add(deviceChannel.getChannelId()); + channels.add(deviceChannel); + }else { + stringBuilder.append(deviceChannel.getChannelId() + ","); + } + } + }else { + channels = deviceChannelList; + } + if (stringBuilder.length() > 0) { + logger.debug("[鐩綍鏌ヨ]鏀跺埌鐨勬暟鎹瓨鍦ㄩ噸澶嶏細 {}" , stringBuilder); + } try { int cleanChannelsResult = deviceChannelMapper.cleanChannelsByDeviceId(deviceId); int limitCount = 300; - boolean result = cleanChannelsResult <0; - if (!result && deviceChannelList.size() > 0) { - if (deviceChannelList.size() > limitCount) { - for (int i = 0; i < deviceChannelList.size(); i += limitCount) { + boolean result = cleanChannelsResult < 0; + if (!result && channels.size() > 0) { + if (channels.size() > limitCount) { + for (int i = 0; i < channels.size(); i += limitCount) { int toIndex = i + limitCount; - if (i + limitCount > deviceChannelList.size()) { - toIndex = deviceChannelList.size(); + if (i + limitCount > channels.size()) { + toIndex = channels.size(); } - result = result || deviceChannelMapper.batchAdd(deviceChannelList.subList(i, toIndex)) < 0; + result = result || deviceChannelMapper.batchAdd(channels.subList(i, toIndex)) < 0; } }else { - result = result || deviceChannelMapper.batchAdd(deviceChannelList) < 0; + result = result || deviceChannelMapper.batchAdd(channels) < 0; } } if (result) { -- Gitblit v1.8.0