From 38f29e38fcc668171dc05c53d40a36b895c86102 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期四, 10 十月 2024 13:34:28 +0800 Subject: [PATCH] init --- ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java | 79 +++++++++++++++++++++++---------------- 1 files changed, 47 insertions(+), 32 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java index ce6565d..0ada6a5 100644 --- a/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java @@ -1,10 +1,12 @@ package com.ruoyi.device.channel.service.impl; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import com.ruoyi.common.utils.uuid.IdUtils; -import org.springframework.beans.factory.annotation.Autowired; +import com.ruoyi.device.camera.domain.ArdCameras; +import com.ruoyi.media.service.IVtduService; import org.springframework.stereotype.Service; import com.ruoyi.device.channel.mapper.ArdChannelMapper; import com.ruoyi.device.channel.domain.ArdChannel; @@ -22,7 +24,8 @@ public class ArdChannelServiceImpl implements IArdChannelService { @Resource private ArdChannelMapper ardChannelMapper; - + @Resource + private IVtduService vtduService; /** * 鏌ヨ閫氶亾绠$悊 * @@ -91,6 +94,16 @@ } /** + * 娓呯┖閫氶亾 + * + * @author 鍒樿嫃涔� + * @date 2024/8/10 11:18 + */ + @Override + public int clearArdChannel(){ + return ardChannelMapper.clearArdChannel(); + } + /** * 鍒犻櫎閫氶亾绠$悊淇℃伅 * * @param deviceId 鎵�灞炶澶嘔D @@ -101,38 +114,40 @@ return ardChannelMapper.deleteArdChannelByDeviceId(deviceId); } - //姹備袱涓璞ist鐨勪氦闆� @Override - public List<ArdChannel> sameList(List<ArdChannel> oldArrayList, List<ArdChannel> newArrayList) { - List<ArdChannel> resultList = newArrayList.stream() - .filter(item -> oldArrayList.stream().map(e -> e.getChanNo()) - .collect(Collectors.toList()).contains(item.getChanNo())) - .collect(Collectors.toList()); - return resultList; - } + public void asyncChannel(ArdCameras ardCameras,List<ArdChannel> oldArrayList, List<ArdChannel> newArrayList) { + // 灏嗗垪琛ㄨ浆鎹负鏄犲皠浠ユ彁楂樻�ц兘 + Map<Integer, ArdChannel> oldMap = oldArrayList.stream() + .collect(Collectors.toMap(ArdChannel::getChanNo, channel -> channel)); + Map<Integer, ArdChannel> newMap = newArrayList.stream() + .collect(Collectors.toMap(ArdChannel::getChanNo, channel -> channel)); - //姹備袱涓璞ist鐨勫樊闆� - @Override - public List<ArdChannel> diffList(List<ArdChannel> firstArrayList, List<ArdChannel> secondArrayList) { - List<ArdChannel> resultList = firstArrayList.stream() - .filter(item -> !secondArrayList.stream().map(e -> e.getChanNo()).collect(Collectors.toList()).contains(item.getChanNo())) - .collect(Collectors.toList()); - return resultList; - } + // 闇�瑕佹洿鏂扮殑鏁版嵁 + newArrayList.stream() + .filter(channel -> { + ArdChannel oldChannel = oldMap.get(channel.getChanNo()); + return oldChannel != null && !oldChannel.getName().equals(channel.getName()); + }) + .forEach(channel -> { + ArdChannel oldChannel = oldMap.get(channel.getChanNo()); + channel.setId(oldChannel.getId()); + updateArdChannel(channel); + }); - @Override - public void asyncChannel(List<ArdChannel> oldArrayList, List<ArdChannel> newArrayList) { - //闇�瑕佹洿鏂扮殑鏁版嵁,鍙傛暟椤哄簭娉ㄦ剰 - sameList(oldArrayList, newArrayList).stream().forEach(ardChannel -> { - updateArdChannel(ardChannel); - }); - //闇�瑕佸垹闄ょ殑鏁版嵁 - diffList(oldArrayList, newArrayList).stream().forEach(ardChannel -> { - deleteArdChannelById(ardChannel.getId()); - }); - //闇�瑕佹柊澧炵殑鏁版嵁 - diffList(newArrayList, oldArrayList).stream().forEach(ardChannel -> { - insertArdChannel(ardChannel); - }); + // 闇�瑕佸垹闄ょ殑鏁版嵁 + oldArrayList.stream() + .filter(channel -> !newMap.containsKey(channel.getChanNo())) + .forEach(channel -> { + deleteArdChannelById(channel.getId()); + vtduService.deleteVtduByName(channel.getDeviceId() + "_" + channel.getChanNo()); + }); + + // 闇�瑕佹柊澧炵殑鏁版嵁 + newArrayList.stream() + .filter(channel -> !oldMap.containsKey(channel.getChanNo())) + .forEach(channel -> { + insertArdChannel(channel); + vtduService.addChanToVtdu(ardCameras, channel); + }); } } \ No newline at end of file -- Gitblit v1.9.3