From 016aa105789fca71e86cdbb0d26a181812f200f9 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期三, 10 七月 2024 15:33:36 +0800 Subject: [PATCH] 优化:流媒体同步任务 --- ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 43 insertions(+), 4 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 44ec3b3..ce6565d 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,6 +1,7 @@ package com.ruoyi.device.channel.service.impl; import java.util.List; +import java.util.stream.Collectors; import com.ruoyi.common.utils.uuid.IdUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -8,6 +9,8 @@ import com.ruoyi.device.channel.mapper.ArdChannelMapper; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.device.channel.service.IArdChannelService; + +import javax.annotation.Resource; /** * 閫氶亾绠$悊Service涓氬姟灞傚鐞� @@ -17,7 +20,7 @@ */ @Service public class ArdChannelServiceImpl implements IArdChannelService { - @Autowired + @Resource private ArdChannelMapper ardChannelMapper; /** @@ -50,8 +53,8 @@ */ @Override public int insertArdChannel(ArdChannel ardChannel) { - ardChannel.setId(IdUtils.simpleUUID()); - return ardChannelMapper.insertArdChannel(ardChannel); + ardChannel.setId(IdUtils.simpleUUID()); + return ardChannelMapper.insertArdChannel(ardChannel); } /** @@ -86,6 +89,7 @@ public int deleteArdChannelById(String id) { return ardChannelMapper.deleteArdChannelById(id); } + /** * 鍒犻櫎閫氶亾绠$悊淇℃伅 * @@ -96,4 +100,39 @@ public int deleteArdChannelByDeviceId(String deviceId) { 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; + } + + //姹備袱涓璞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; + } + + @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); + }); + } +} \ No newline at end of file -- Gitblit v1.9.3