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 | 307 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 211 insertions(+), 96 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 456fad4..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 @@ -1,96 +1,211 @@ -package com.ruoyi.media.service.impl; - -import java.util.List; - -import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.uuid.IdUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ruoyi.media.mapper.VtduMapper; -import com.ruoyi.media.domain.Vtdu; -import com.ruoyi.media.service.IVtduService; - -import javax.annotation.Resource; - -/** - * 娴佸獟浣撶鐞哠ervice涓氬姟灞傚鐞� - * - * @author ard - * @date 2023-08-29 - */ -@Service -public class VtduServiceImpl implements IVtduService { - @Resource - private VtduMapper vtduMapper; - - /** - * 鏌ヨ娴佸獟浣撶鐞� - * - * @param name 娴佸獟浣撶鐞嗕富閿� - * @return 娴佸獟浣撶鐞� - */ - @Override - public Vtdu selectVtduByName(String name) { - return vtduMapper.selectVtduByName(name); - } - - /** - * 鏌ヨ娴佸獟浣撶鐞嗗垪琛� - * - * @param vtdu 娴佸獟浣撶鐞� - * @return 娴佸獟浣撶鐞� - */ - @Override - public List<Vtdu> selectVtduList(Vtdu vtdu) { - return vtduMapper.selectVtduList(vtdu); - } - - /** - * 鏂板娴佸獟浣撶鐞� - * - * @param vtdu 娴佸獟浣撶鐞� - * @return 缁撴灉 - */ - @Override - public int insertVtdu(Vtdu vtdu) { - vtdu.setCreateBy(SecurityUtils.getUserId()); - vtdu.setCreateTime(DateUtils.getNowDate()); - return vtduMapper.insertVtdu(vtdu); - } - - /** - * 淇敼娴佸獟浣撶鐞� - * - * @param vtdu 娴佸獟浣撶鐞� - * @return 缁撴灉 - */ - @Override - public int updateVtdu(Vtdu vtdu) { - vtdu.setUpdateBy(SecurityUtils.getUserId()); - vtdu.setUpdateTime(DateUtils.getNowDate()); - return vtduMapper.updateVtdu(vtdu); - } - - /** - * 鎵归噺鍒犻櫎娴佸獟浣撶鐞� - * - * @param names 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 - * @return 缁撴灉 - */ - @Override - public int deleteVtduByNames(String[] names) { - return vtduMapper.deleteVtduByNames(names); - } - - /** - * 鍒犻櫎娴佸獟浣撶鐞� - * - * @param name 娴佸獟浣撻�氶亾鍚嶇О - * @return 缁撴灉 - */ - @Override - public int deleteVtduByName(String name) { - return vtduMapper.deleteVtduByName(name); - } -} +package com.ruoyi.media.service.impl; + +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; +import com.ruoyi.media.mapper.VtduMapper; +import com.ruoyi.media.domain.Vtdu; +import com.ruoyi.media.service.IVtduService; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + +/** + * 娴佸獟浣撶鐞哠ervice涓氬姟灞傚鐞� + * + * @author ard + * @date 2023-08-29 + */ +@Service +@Slf4j(topic = "vtdu") +public class VtduServiceImpl implements IVtduService { + @Resource + private VtduMapper vtduMapper; + @Resource + private IMediaService mediaService; + + /** + * 鏌ヨ娴佸獟浣撶鐞� + * + * @param name 娴佸獟浣撶鐞嗕富閿� + * @return 娴佸獟浣撶鐞� + */ + @Override + public Vtdu selectVtduByName(String name) { + + return vtduMapper.selectVtduByName(name); + } + + /** + * 鏌ヨ娴佸獟浣撶鐞嗗垪琛� + * + * @param vtdu 娴佸獟浣撶鐞� + * @return 娴佸獟浣撶鐞� + */ + @Override + public List<Vtdu> selectVtduList(Vtdu vtdu) { + return vtduMapper.selectVtduList(vtdu); + } + + /** + * 鏂板娴佸獟浣撶鐞� + * + * @param vtdu 娴佸獟浣撶鐞� + * @return 缁撴灉 + */ + @Override + public int insertVtdu(Vtdu vtdu) { + log.debug("娴佸獟浣撱��" + vtdu.getName() + "銆戦�氶亾娣诲姞"); + Map<String, String> map = mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode()); + vtdu.setRtspUrl(map.get("rtspUrl")); + vtdu.setRtmpUrl(map.get("rtmpUrl")); + vtdu.setWebrtcUrl(map.get("webrtcUrl")); + + vtdu.setName(vtdu.getName()); + vtdu.setRtspSource(vtdu.getRtspSource()); + vtdu.setIsCode(vtdu.getIsCode()); + vtdu.setMode(vtdu.getMode()); + vtdu.setCreateTime(DateUtils.getNowDate()); + return vtduMapper.insertVtdu(vtdu); + } + + /** + * 淇敼娴佸獟浣撶鐞� + * + * @param vtdu 娴佸獟浣撶鐞� + * @return 缁撴灉 + */ + @Override + public int updateVtdu(Vtdu vtdu) { + log.debug("娴佸獟浣撱��" + vtdu.getName() + "銆戦�氶亾鏇存柊"); + Map<String, String> map = mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode()); + vtdu.setName(vtdu.getName()); + vtdu.setRtspSource(vtdu.getRtspSource()); + vtdu.setIsCode(vtdu.getIsCode()); + vtdu.setMode(vtdu.getMode()); + vtdu.setRtspUrl(map.get("rtspUrl")); + vtdu.setRtmpUrl(map.get("rtmpUrl")); + vtdu.setWebrtcUrl(map.get("webrtcUrl")); + vtdu.setUpdateTime(DateUtils.getNowDate()); + return vtduMapper.updateVtdu(vtdu); + } + + /** + * 鎵归噺鍒犻櫎娴佸獟浣撶鐞� + * + * @param names 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎 + * @return 缁撴灉 + */ + @Override + public int deleteVtduByNames(String[] names) { + for (String name : names) { + log.debug("娴佸獟浣撱��" + name + "銆戦�氶亾鍒犻櫎"); + } + mediaService.removePath(names); + return vtduMapper.deleteVtduByNames(names); + } + + /** + * 鍒犻櫎娴佸獟浣撶鐞� + * + * @param name 娴佸獟浣撻�氶亾鍚嶇О + * @return 缁撴灉 + */ + @Override + public int deleteVtduByName(String name) { + mediaService.removePath(name); + log.debug("娴佸獟浣撱��" + name + "銆戦�氶亾鍒犻櫎"); + return vtduMapper.deleteVtduByName(name); + } + + /** + * 鍒犻櫎娴佸獟浣撶鐞嗕俊鎭� + * + * @param cameraId 鐩告満ID + * @return 缁撴灉 + */ + @Override + public int deleteVtduByCameraId(String cameraId) { + Vtdu vtdu = new Vtdu(); + vtdu.setCameraId(cameraId); + List<Vtdu> vtdus = vtduMapper.selectVtduList(vtdu); + if (vtdus.size() > 0) { + for (Vtdu v : vtdus) { + mediaService.removePath(v.getName()); + } + } + 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