zhaowenyu
2025-11-24 63e503016c78aac218a4c7f9a765bcbb0b1e398e
ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
@@ -140,10 +140,10 @@
    @Scheduled(cron = "0/5 * * * * ?")
    public void syncVtdu() {
        log.info("定时同步Vtdu任务");
        log.debug("定时同步Vtdu任务");
        List<ArdChannel> channels = this.selectArdChannelList(new ArdChannel());
        if (channels == null || channels.isEmpty()) {
            log.warn("没有获取到通道数据,退出同步");
           // log.warn("没有获取到通道数据,退出同步");
            return;
        }
        List<ArdVtdu> ardVtduList = ardVtduService.selectArdVtduList(new ArdVtdu());
@@ -154,7 +154,6 @@
        // 2. 合并操作:增、删、改
        channels.forEach(channel -> {
            String name = channel.getDeviceId() + "_" + channel.getChanNo();  // 生成媒体表的 name
            int isCode = "标准h264".equals(channel.getVideoCode()) ? 0 : 1;  // 根据 videoCode 生成 isCode
            String cameraId = channel.getDeviceId();  // cameraId 就是通道的 deviceId
            String rtspSourceUrl = getRtspSource(channel);
            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554" + "/" + name;  // 拼接 webrtcUrl
@@ -197,6 +196,7 @@
        // 3. 删除操作:删除媒体表中多余的记录
        List<String> invalidNames = ardVtduList.stream()
                .filter(vtdu -> !validNames.contains(vtdu.getName()))
                .filter(vtdu -> !"publisher".equalsIgnoreCase(vtdu.getRtspSource())) // 不是机场流
                .map(ArdVtdu::getName)
                .collect(Collectors.toList());