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/media/service/impl/VtduServiceImpl.java | 67 +++++++++++++++++++++++++++++++++ 1 files changed, 67 insertions(+), 0 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java index 91e8103..36a8628 100644 --- a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java @@ -3,8 +3,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.media.service.IMediaService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -141,4 +143,69 @@ } return vtduMapper.deleteVtduByCameraId(cameraId); } + + /** + * @return + * @Author 鍒樿嫃涔� + * @Description 娓呴櫎鎵�鏈夋祦濯掍綋鏁版嵁 + * @Date 2024/7/10 13:31 + * @Param + */ + public void clearVtdu() { + vtduMapper.clearVtdu(); + } + + + //闇�瑕佹洿鏂扮殑锛堟祦濯掍綋鍜寁tdu鐩稿悓锛� + @Override + public List<Vtdu> sameList(List<Vtdu> vtdus, List<String> names) { + return vtdus.stream().filter(vtdu -> names.contains(vtdu.getName())).collect(Collectors.toList()); + } + + //闇�瑕佸垹闄ょ殑锛堟祦濯掍綋涓鐨勶級 + @Override + public List<String> diffListToDel(List<Vtdu> vtdus, List<String> names) { + if (vtdus.size() >= names.size()) { + List<String> nameList = vtdus.stream().map(Vtdu::getName) + .filter(item -> !names.contains(item)) + .collect(Collectors.toList()); + return nameList; + } else { + + List<String> nameList = names.stream().filter(item -> !vtdus.stream().map(Vtdu::getName).collect(Collectors.toList()).contains(item)) + .collect(Collectors.toList()); + return nameList; + } + + } + + //闇�瑕佹柊澧炵殑锛堟祦濯掍綋涓皯鐨勶級 + @Override + public List<Vtdu> diffListToAdd(List<Vtdu> vtdus, List<String> names) { + return vtdus.stream().filter(vtdu -> !names.contains(vtdu.getName())).collect(Collectors.toList()); + } + + /** + * @Author 鍒樿嫃涔� + * @Description 鍚屾鏈湴vtdu搴撳拰娴佸獟浣撲腑鐨勬暟鎹� + * @Date 2024/7/10 15:26 + * @Param vtdus vtdu搴撶殑闆嗗悎 + * @Param names 娴佸獟浣撶殑name闆嗗悎 + * @return + */ + @Override + public void asyncVtdu(List<Vtdu> vtdus, List<String> names) { + //闇�瑕佹洿鏂扮殑鏁版嵁,鍙傛暟椤哄簭娉ㄦ剰 + sameList(vtdus, names).stream().forEach(vtdu -> { + mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode()); + }); + //闇�瑕佸垹闄ょ殑鏁版嵁 + diffListToDel(vtdus, names).stream().forEach(name -> { + mediaService.removePath(name); + }); + //闇�瑕佹柊澧炵殑鏁版嵁 + diffListToAdd(vtdus, names).stream().forEach(vtdu -> { + mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode()); + }); + } } -- Gitblit v1.9.3