Browse Source

心跳接口添加分组和排序

gao.qiang 1 year ago
parent
commit
b00b698995

+ 11 - 1
business-service/src/main/java/com/ozs/entity/BaseCameraManagement.java

@@ -210,6 +210,16 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
     private String enableOrNotName;
 
     private String rtspUrl;
-    
+
+    /**
+     * 分组
+     */
+    @Excel(name = "分组")
+    private String grouping;
+    /**
+     * 排序
+     */
+    @Excel(name = "排序")
+    private String sort;
     
 }

+ 12 - 0
business-service/src/main/java/com/ozs/entity/vo/BaseCameraManagementVos.java

@@ -96,4 +96,16 @@ public class BaseCameraManagementVos implements Serializable {
      */
     @Excel(name = "相机状态")
     private String enableOrNotName;
+
+
+    /**
+     * 分组
+     */
+    @Excel(name = "分组")
+    private String grouping;
+    /**
+     * 排序
+     */
+    @Excel(name = "排序")
+    private String sort;
 }

+ 22 - 0
business-service/src/main/java/com/ozs/entity/vo/CameraVos.java

@@ -0,0 +1,22 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class CameraVos implements Serializable {
+    private static final long serialVersionUID = 1L;
+    
+    /**
+     * 前方相机/报警相机(实时播放流)
+     */
+    private String currentStream;
+    /**
+     * 当前播放的相机编码
+     */
+    private String cameraCode;
+}

+ 4 - 8
business-service/src/main/java/com/ozs/entity/vo/RespHeartbeatVo.java

@@ -3,6 +3,7 @@ package com.ozs.entity.vo;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author Administrator
@@ -10,18 +11,13 @@ import java.io.Serializable;
 @Data
 public class RespHeartbeatVo implements Serializable {
     private static final long serialVersionUID = 1L;
-    /**
-     * 前方相机/报警相机(实时播放流)
-     */
-    private String currentStream;
+    
+    private List<CameraVos> cameraList;
     /**
      * 当前流是否为报警流:1是 2否
      */
     private Integer isAlarm;
-    /**
-     * 当前播放的相机编码
-     */
-    private String cameraCode;
+
     /**
      * 后续报警集合(配置范围内的其他报警)
      */

+ 26 - 2
business-service/src/main/java/com/ozs/utils/CameraUtil.java

@@ -1123,14 +1123,13 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
             String urls = data.getString("url");
             log.info("urls----->" + urls);
             try {
-                TimeUnit.SECONDS.sleep(2);
                 log.info("msg---------->" + httpUrl + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
                 String msg = HttpUtils.sendGet(httpUrl + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
                 log.info("msg---------->" + msg);
                 log.info("code---------->" + httpUrls + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
                 String code = HttpUtils.sendGet(httpUrls + "/rtsp/api/pull?target=" + urls + "&streamPath=" + camerasVo.getCameraIndexCode() + "/" + channel + "&save=0");
                 log.info("code---------->" + code);
-            } catch (InterruptedException e) {
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         } else {
@@ -1339,4 +1338,29 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
             }
         }
     }
+
+    /**
+     * 根据相机ID找出分组并排序
+     *
+     * @param baseCameraManagement
+     */
+    public List<BaseCameraManagement> getBaseCameraManagementList(Long id, boolean type) {
+        //根据ID获取当前相机的信息
+        BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
+        if (!ObjectUtils.isEmpty(baseCameraManagement)) {
+            //找出同一分组的相机
+            List<BaseCameraManagement> list = baseCameraManagementService.list(new LambdaQueryWrapper<BaseCameraManagement>()
+                    .eq(BaseCameraManagement::getGrouping, baseCameraManagement.getGrouping()).orderByDesc(BaseCameraManagement::getSort));
+            if (!ObjectUtils.isEmpty(list)) {
+//                for (BaseCameraManagement cameraManagement : list) {
+//                    heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), type);
+//                }
+                  return list;
+            }else {
+                return null;
+            }
+        }else {
+            return null;
+        }
+    }
 }

BIN
vehicle-admin/src/main/resources/template/baseCameraManagement.xlsx


+ 81 - 467
vehicle-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -37,6 +37,7 @@ import com.ozs.entity.vo.AlarmInfoVo;
 import com.ozs.entity.vo.AlarmListVo;
 import com.ozs.entity.vo.CameraPlayVo;
 import com.ozs.entity.vo.CameraVo;
+import com.ozs.entity.vo.CameraVos;
 import com.ozs.entity.vo.CamerasVo;
 import com.ozs.entity.vo.Files;
 import com.ozs.entity.vo.HeartbeatVo;
@@ -91,6 +92,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
@@ -597,16 +599,6 @@ public class GeoHazardMonitorTokenController {
             LambdaQueryWrapper<BaseTerminal> terminal = new LambdaQueryWrapper<>();
             terminal.eq(BaseTerminal::getTerminalCode, vehiclePosition.getTerminalCode());
             boolean update = baseTerminalService.update(baseTerminal1, terminal);
-            //获取心跳接口相机记录表信息
-            //List<TerminalHeartbeatLog> heartbeatLogList = terminalHeartbeatLogService.terminalHeartbeatLogList();
-            //List<String> codeList = new ArrayList<>();
-            //log.info("-----heartbeatLogList----->" + heartbeatLogList);
-            //if (!ObjectUtils.isEmpty(heartbeatLogList)) {
-            //    codeList = heartbeatLogList.stream().map(TerminalHeartbeatLog::getCameraCode).collect(Collectors.toList());
-            //    log.info("-----codeList----->" + codeList);
-            //} else {
-            //    terminalHeartbeatLogService.add("111", "111");
-            //}
 
             //目视距离和里程位置
             if (save && update) {
@@ -714,88 +706,15 @@ public class GeoHazardMonitorTokenController {
                                 playFlv1 = cameraUtil.heartbeatgetUrl(code, channel, type);
                             }
                             log.info("-------playFlv--------" + playFlv1);
-//                            //判断心跳相机日志表后两条数据是否包含该相机编码
-//                            if (!ObjectUtils.isEmpty(codeList)) {
-//                                if (!codeList.contains(baseCameraManagementList.get(0).getCameraCode())) {
-//                                    //如果不包含此相机编码
-//                                    for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
-//                                        log.info("-----11111----");
-//                                        cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(), terminalHeartbeatLog.getChannel());
-//                                    }
-//                                }
-//                            }
-//                            //添加心跳相机日志信息
-//                            int add = terminalHeartbeatLogService.add(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel());
-//                            log.info("-----add----" + add);
-/**
- ArrayList<String> list3 = new ArrayList<>();
- //添加缓存
- String code = baseCameraManagementList.get(0).getCameraCode() + "/" + baseCameraManagementList.get(0).getChannel();
- list3.add(code);
- log.info("--------------heartbeat--------------:" + list3);
- redisCache.setCacheObject("heartbeat", list3);
- //获取缓冲
- List<String> heartbeat = redisCache.getCacheObject("heartbeat");
- log.info("--------------heartbeat111--------------:" + heartbeat);
- List<String> cameraPlayList = redisCache.getCacheObject("cameraPlay");
- log.info("--------------cameraPlayList--------------:" + cameraPlayList);
- if (!ObjectUtils.isEmpty(heartbeat)) {
- if (!ObjectUtils.isEmpty(cameraPlayList)) {
- heartbeat.addAll(cameraPlayList);
- }
- log.info("--------------heartbeat222--------------:" + heartbeat);
- List<String> rtspApiList = cameraUtil.rtspApiList();
- log.info("--------------rtspApiList1111--------------:" + rtspApiList);
- if (!ObjectUtils.isEmpty(rtspApiList)) {
- rtspApiList.removeAll(heartbeat);
- }
- log.info("--------------rtspApiList2222--------------:" + rtspApiList);
- if (!ObjectUtils.isEmpty(rtspApiList)) {
- for (String str : rtspApiList) {
- log.info("--------------str--------------:" + str);
- String[] parts = str.split("/");
- log.info("--------------parts--------------:" + Arrays.toString(parts));
- if (parts.length == 2) {
- CompletableFuture.runAsync(() -> {
- try {
- TimeUnit.SECONDS.sleep(3);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- cameraUtil.stopStream(parts[0], parts[1]);
- });
- }
- }
- }
- }
- **/
-                            respHeartbeatVo.setCurrentStream(playFlv1);
+                            CameraVos cameraVos = new CameraVos();
+                            cameraVos.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
+                            cameraVos.setCurrentStream(playFlv1);
+                            List<CameraVos> cameraVosList = new ArrayList<>();
+                            cameraVosList.add(cameraVos);
+                            respHeartbeatVo.setCameraList(cameraVosList);
                             respHeartbeatVo.setIsAlarm(1);
-                            respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
                             twoMap.put("currentStream", playFlv1);
                             twoMap.put("cameraCode", baseCameraManagementList.get(0).getCameraCode());
-//                            //alarmInfo对象
-//                            AlarmInfoVo alarmInfoVo = new AlarmInfoVo();
-//                            alarmInfoVo.setAlarmId(list.get(0).getAlarmId());
-//                            alarmInfoVo.setAlarmMile(list.get(0).getAlarmMile());
-//                            alarmInfoVo.setAlarmTime(list.get(0).getAlarmTime().getTime());
-//                            alarmInfoVo.setAlarmContent(list.get(0).getContent());
-//                            alarmInfoVo.setAlarmType(list.get(0).getAlarmType());
-//                            alarmInfoVo.setAlarmLevel(list.get(0).getAlarmLevel());
-//                            LambdaQueryWrapper<MsgAlarmExt> ext = new LambdaQueryWrapper<>();
-//                            ext.eq(MsgAlarmExt::getAlarmId, list.get(0).getAlarmId());
-//                            List<MsgAlarmExt> list1 = msgAlarmExtService.list(ext);
-//                            AlarmFilesVo[] files = new AlarmFilesVo[list1.size()];
-//                            if (!ObjectUtils.isEmpty(list1)) {
-//                                for (int i = 0; i < list1.size(); i++) {
-//                                    files[i] = new AlarmFilesVo();
-//                                    files[i].setAlarmAttType(list1.get(i).getAlarmAttType());
-//                                    files[i].setAlarmAttPath(list1.get(i).getAlarmAttPath());
-//                                }
-//                                //返回结果
-//                                alarmInfoVo.setAlarmFiles(files);
-//                            }
-//                            respHeartbeatVo.setAlarmInfo(alarmInfoVo);
                         } else {
                             //赋值--股道
                             List<BaseRouteMassage> baseRouteMassageList = baseRouteMassageService.list();
@@ -852,31 +771,9 @@ public class GeoHazardMonitorTokenController {
                                 ment.in(BaseCameraManagement::getMonitoringDirection, 2, 3);
                                 ment.orderByDesc(BaseCameraManagement::getInstallMile);
                             }
-//                            if (i == 0) {
-//                                ment.last("limit 1,1000000");
-//                            }
                             //获取所有报警安装里程位置的相机
                             List<BaseCameraManagement> baseList = baseCameraManagementService.list(ment);
                             if (baseList.size() > 0) {
-//                                //判断流媒体是否有流
-//                                String playFlv = null;
-//                                playFlv = cameraUtil.heartbeatgetPlayFlv(baseList.get(0).getCameraCode(), baseList.get(0).getChannel(), type);
-//                                if (StringUtils.isEmpty(playFlv)) {
-//                                    playFlv = cameraUtil.heartbeatgetUrl(baseList.get(0).getCameraCode(), baseList.get(0).getChannel(), type);
-//                                }
-//                                    //判断心跳相机日志表后两条数据是否包含该相机编码
-//                                    if (!ObjectUtils.isEmpty(codeList)) {
-//                                        if (!codeList.contains(baseList.get(o).getCameraCode())) {
-//                                            //如果不包含此相机编码
-//                                            for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
-//                                                log.info("-----22222----");
-//                                                cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(), terminalHeartbeatLog.getChannel());
-//                                            }
-//                                        }
-//                                    }
-//                                    //添加心跳相机日志信息
-//                                    int add1 = terminalHeartbeatLogService.add(baseList.get(o).getCameraCode(), baseList.get(o).getChannel());
-//                                    log.info("-----add1----" + add1);
                                 if (i > 0) {
                                     int minDifference = Integer.MAX_VALUE;
                                     String code = null;
@@ -930,54 +827,12 @@ public class GeoHazardMonitorTokenController {
                                 alarmListVo.setAlarmInfo(alarmInfoVo1);
                                 log.info("----------------alarmListVo-----------" + alarmListVo);
                                 listVos.add(alarmListVo);
-//                                ArrayList<String> list3 = new ArrayList<>();
-//                                ////添加缓存
-//                                //List<String> stringList = redisCache.getCacheObject("heartbeat");
-//                                String code = baseList.get(0).getCameraCode() + "/" + baseList.get(0).getChannel()+ "/h264_720";
-//                                list3.add(code);
-//                                log.info("--------------heartbeat--------------:" + list3);
-//                                redisCache.setCacheObject("heartbeat", list3);
-//                                break;
-                                ////获取缓冲
-                                //List<String> heartbeat = redisCache.getCacheObject("heartbeat");
-                                //log.info("--------------heartbeat111--------------:" + heartbeat);
-                                //List<String> cameraPlayList = redisCache.getCacheObject("cameraPlay");
-                                //log.info("--------------cameraPlayList--------------:" + cameraPlayList);
-                                //if (!ObjectUtils.isEmpty(heartbeat)) {
-                                //    if (!ObjectUtils.isEmpty(cameraPlayList)) {
-                                //        heartbeat.addAll(cameraPlayList);
-                                //    }
-                                //    log.info("--------------heartbeat222--------------:" + heartbeat);
-                                //    List<String> rtspApiList = cameraUtil.rtspApiList();
-                                //    log.info("--------------rtspApiList1111--------------:" + rtspApiList);
-                                //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                                //        rtspApiList.removeAll(heartbeat);
-                                //    }
-                                //    log.info("--------------rtspApiList2222--------------:" + rtspApiList);
-                                //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                                //        for (String str : rtspApiList) {
-                                //            log.info("--------------str--------------:" + str);
-                                //            String[] parts = str.split("/");
-                                //            log.info("--------------parts--------------:" + parts);
-                                //            if (parts.length == 2) {
-                                //                CompletableFuture.runAsync(() -> {
-                                //                    try {
-                                //                        TimeUnit.SECONDS.sleep(3);
-                                //                    } catch (InterruptedException e) {
-                                //                        e.printStackTrace();
-                                //                    }
-                                //                    cameraUtil.stopStream(parts[0], parts[1]);
-                                //                });
-                                //            }
-                                //        }
-                                //    }
-                                //}
                             }
                         }
                         AlarmListVo[] array = listVos.toArray(new AlarmListVo[]{});
                         log.info("----------------array-----------" + Arrays.toString(array));
                         respHeartbeatVo.setAlarmList(array);
-                        //获取机车前路视频
+                        //获取机车前一路视频
                         int mile = heartbeatVo.getVisualDistance() + heartbeatVo.getCurrentMile();
                         LambdaQueryWrapper<BaseCameraManagement> base = new LambdaQueryWrapper<>();
                         if (heartbeatVo.getLineDir() == 1) {
@@ -991,73 +846,21 @@ public class GeoHazardMonitorTokenController {
                         base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                         base.eq(BaseCameraManagement::getOnline, 2);
                         base.eq(BaseCameraManagement::getEnableOrNot, 1);
-                        base.last("limit 2");
-                        List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
-                        for (BaseCameraManagement baseCameraManagement : list1) {
-                            cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), type);
-//                            //判断心跳相机日志表后两条数据是否包含该相机编码
-//                            if (!ObjectUtils.isEmpty(codeList)) {
-//                                if (!codeList.contains(baseCameraManagement.getCameraCode())) {
-//                                    //如果不包含此相机编码
-//                                    for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
-//                                        log.info("-----3333333----");
-//                                        cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(), terminalHeartbeatLog.getChannel());
-//                                    }
-//                                }
-//                            }
-//                            //添加心跳相机日志信息
-//                            int add2 = terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
-//                            log.info("-----add2----" + add2);
-                        }
-//                        ArrayList<String> list3 = new ArrayList<>();
-                        //添加缓存
-//                        List<String> stringList = redisCache.getCacheObject("heartbeat");
-//                        for (BaseCameraManagement baseCameraManagement : list1) {
-//                            String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel() + "/h264_720";
-//                            list3.add(code);
-//                        }
-//                        if (!ObjectUtils.isEmpty(stringList)) {
-//                            list3.addAll(stringList);
-//                        }
-//                        log.info("--------------heartbeat--------------:" + list3);
-//                        redisCache.setCacheObject("heartbeat", list3);
-                        //获取缓冲
-                        //List<String> heartbeat = redisCache.getCacheObject("heartbeat");
-                        //log.info("--------------heartbeat111--------------:" + heartbeat);
-                        //List<String> cameraPlayList = redisCache.getCacheObject("cameraPlay");
-                        //log.info("--------------cameraPlayList--------------:" + cameraPlayList);
-                        //if (!ObjectUtils.isEmpty(heartbeat)) {
-                        //    if (!ObjectUtils.isEmpty(cameraPlayList)) {
-                        //        heartbeat.addAll(cameraPlayList);
-                        //    }
-                        //    log.info("--------------heartbeat222--------------:" + heartbeat);
-                        //    List<String> rtspApiList = cameraUtil.rtspApiList();
-                        //    log.info("--------------rtspApiList1111--------------:" + rtspApiList);
-                        //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                        //        rtspApiList.removeAll(heartbeat);
-                        //    }
-                        //    log.info("--------------rtspApiList2222--------------:" + rtspApiList);
-                        //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                        //        for (String str : rtspApiList) {
-                        //            log.info("--------------str--------------:" + str);
-                        //            String[] parts = str.split("/");
-                        //            log.info("--------------parts--------------:" + parts);
-                        //            if (parts.length == 2) {
-//                        CompletableFuture.runAsync(() -> {
-//                            try {
-//                                TimeUnit.SECONDS.sleep(2);
-//                            } catch (InterruptedException e) {
-//                                e.printStackTrace();
-//                            }
-//                            cameraUtil.heartbeatGetPlayFlv();
-//                        });
+                        base.last("limit 1");
+                        BaseCameraManagement baseCameraManagement = baseCameraManagementService.getOne(base);
+                        //根据相机ID找出分组并排序
+                        boolean finalType1 = type;
                         CompletableFuture.runAsync(() -> {
-                            cameraUtil.removePlayFlv(heartbeatVo.getLineDir(), heartbeatVo.getCurrentMile(), heartbeatVo.getVisualDistance());
+                            List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId(), finalType1);
+                            if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                    String playFlv = cameraUtil.heartbeatgetPlayFlv(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType1);
+                                    if (StringUtils.isEmpty(playFlv)) {
+                                        cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType1);
+                                    }
+                                }
+                            }
                         });
-                        //            }
-                        //        }
-                        //    }
-                        //}
                     } else {
                         //没有报警信息的时候
                         if (heartbeatVo.getLineDir() == 1) {
@@ -1123,128 +926,47 @@ public class GeoHazardMonitorTokenController {
                             for (BaseCameraManagement baseCameraManagement : list1) {
                                 boolean finalType = type;
                                 CompletableFuture.runAsync(() -> {
-                                    cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), finalType);
+                                    List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId(), finalType);
+                                    if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                        for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                            cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                        }
+                                    }
                                 });
-//                                //添加心跳相机日志信息
-//                                int add3 = terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
-//                                log.info("-----add3----" + add3);
                             }
-//                            ArrayList<String> list3 = new ArrayList<>();
-//                            //添加缓存
-//                            for (BaseCameraManagement baseCameraManagement : list1) {
-//                                String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel() + "/h264_720";
-//                                list3.add(code);
-//                            }
-//                            log.info("--------------heartbeat--------------:" + list3);
-//                            redisCache.setCacheObject("heartbeat", list3);
-                            //获取缓冲
-                            //List<String> heartbeat = redisCache.getCacheObject("heartbeat");
-                            //log.info("--------------heartbeat111--------------:" + heartbeat);
-                            //List<String> cameraPlayList = redisCache.getCacheObject("cameraPlay");
-                            //log.info("--------------cameraPlayList--------------:" + cameraPlayList);
-                            //if (!ObjectUtils.isEmpty(heartbeat)) {
-                            //    if (!ObjectUtils.isEmpty(cameraPlayList)) {
-                            //        heartbeat.addAll(cameraPlayList);
-                            //    }
-                            //    log.info("--------------heartbeat222--------------:" + heartbeat);
-                            //    List<String> rtspApiList = cameraUtil.rtspApiList();
-                            //    log.info("--------------rtspApiList1111--------------:" + rtspApiList);
-                            //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                            //        rtspApiList.removeAll(heartbeat);
-                            //    }
-                            //    log.info("--------------rtspApiList2222--------------:" + rtspApiList);
-                            //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                            //        for (String str : rtspApiList) {
-                            //            log.info("--------------str--------------:" + str);
-                            //            String[] parts = str.split("/");
-                            //            log.info("--------------parts--------------:" + parts);
-                            //            if (parts.length == 2) {
-                            //                cameraUtil.stopStream(parts[0], parts[1]);
-                            //            }
-                            //        }
-                            //    }
-                            //}
 //                            CompletableFuture.runAsync(() -> {
-//                                try {
-//                                    TimeUnit.SECONDS.sleep(2);
-//                                } catch (InterruptedException e) {
-//                                    e.printStackTrace();
-//                                }
-//                                cameraUtil.heartbeatGetPlayFlv();
+//                                cameraUtil.removePlayFlv(heartbeatVo.getLineDir(), heartbeatVo.getCurrentMile(), heartbeatVo.getVisualDistance());
 //                            });
-                            CompletableFuture.runAsync(() -> {
-                                cameraUtil.removePlayFlv(heartbeatVo.getLineDir(), heartbeatVo.getCurrentMile(), heartbeatVo.getVisualDistance());
-                            });
                         } else {
                             log.info("-------------->>已进入拉一路视频");
                             log.info("list1-------------->>" + list1.size());
                             for (int i = 1; i < list1.size(); i++) {
-                                cameraUtil.heartbeatgetUrl(list1.get(i).getCameraCode(), list1.get(i).getChannel(), type);
-//                                //添加心跳相机日志信息
-//                                int add4 = terminalHeartbeatLogService.add(list1.get(i).getCameraCode(), list1.get(i).getChannel());
-//                                log.info("-----add4----" + add4);
+                                boolean finalType = type;
+                                int finalI = i;
+                                CompletableFuture.runAsync(() -> {
+                                    List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(finalI).getId(), finalType);
+                                    if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                        for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                            cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                        }
+                                    }
+                                });
                             }
-//                            ArrayList<String> list3 = new ArrayList<>();
-//                            //添加缓存
-//                            for (BaseCameraManagement baseCameraManagement : list1) {
-//                                String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel() + "/h264_720";
-//                                list3.add(code);
-//                            }
-//                            log.info("--------------heartbeat--------------:" + list3);
-//                            redisCache.setCacheObject("heartbeat", list3);
-                            //获取缓冲
-                            //List<String> heartbeat = redisCache.getCacheObject("heartbeat");
-                            //log.info("--------------heartbeat111--------------:" + heartbeat);
-                            //List<String> cameraPlayList = redisCache.getCacheObject("cameraPlay");
-                            //log.info("--------------cameraPlayList--------------:" + cameraPlayList);
-                            //if (!ObjectUtils.isEmpty(heartbeat)) {
-                            //    if (!ObjectUtils.isEmpty(cameraPlayList)) {
-                            //        heartbeat.addAll(cameraPlayList);
-                            //    }
-                            //    log.info("--------------heartbeat222--------------:" + heartbeat);
-                            //    List<String> rtspApiList = cameraUtil.rtspApiList();
-                            //    log.info("--------------rtspApiList1111--------------:" + rtspApiList);
-                            //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                            //        rtspApiList.removeAll(heartbeat);
-                            //    }
-                            //    log.info("--------------rtspApiList2222--------------:" + rtspApiList);
-                            //    if (!ObjectUtils.isEmpty(rtspApiList)) {
-                            //        for (String str : rtspApiList) {
-                            //            log.info("--------------str--------------:" + str);
-                            //            String[] parts = str.split("/");
-                            //            log.info("--------------parts--------------:" + parts);
-                            //            if (parts.length == 2) {
-                            //                CompletableFuture.runAsync(() -> {
-                            //                    try {
-                            //                        TimeUnit.SECONDS.sleep(3);
-                            //                    } catch (InterruptedException e) {
-                            //                        e.printStackTrace();
-                            //                    }
-                            //                    cameraUtil.stopStream(parts[0], parts[1]);
-                            //                });
-                            //            }
-                            //        }
-                            //    }
-                            //}
-//                            CompletableFuture.runAsync(() -> {
-//                                try {
-//                                    TimeUnit.SECONDS.sleep(2);
-//                                } catch (InterruptedException e) {
-//                                    e.printStackTrace();
-//                                }
-//                                cameraUtil.heartbeatGetPlayFlv();
-//                            });
-                            CompletableFuture.runAsync(() -> {
-                                cameraUtil.removePlayFlv(heartbeatVo.getLineDir(),heartbeatVo.getCurrentMile(),heartbeatVo.getVisualDistance());
-                            });
+                        }
+                        List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(0).getId(), type);
+                        if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                            List<CameraVos> cameraVosList = new ArrayList<>();
+                            for (BaseCameraManagement baseCameraManagement : baseCameraManagementList1) {
+                                CameraVos cameraVos = new CameraVos();
+                                cameraVos.setCameraCode(baseCameraManagement.getCameraCode());
+                                cameraVos.setCurrentStream(CameraUtil.getPlayFlvRtsp(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), type));
+                                cameraVosList.add(cameraVos);
+                            }
+                            respHeartbeatVo.setCameraList(cameraVosList);
                         }
                         twoMap.put("currentStream", playFlv);
                         twoMap.put("cameraCode", list1.get(0).getCameraCode());
-                        respHeartbeatVo.setCurrentStream(playFlv);
                         respHeartbeatVo.setIsAlarm(2);
-                        respHeartbeatVo.setCameraCode(list1.get(0).getCameraCode());
-                        respHeartbeatVo.setAlarmList(null);
-                        respHeartbeatVo.setAlarmInfo(null);
                     }
                 } else {
                     //没有报警信息的时候
@@ -1310,148 +1032,46 @@ public class GeoHazardMonitorTokenController {
                     if (StringUtils.isEmpty(playFlv)) {
                         log.info("--------------->>已进入拉两路视频");
                         for (BaseCameraManagement baseCameraManagement : list1) {
-                            boolean finalType2 = type;
+                            boolean finalType = type;
                             CompletableFuture.runAsync(() -> {
-                                cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), finalType2);
+                                List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(baseCameraManagement.getId(), finalType);
+                                if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                    for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                        cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                    }
+                                }
                             });
-                            //添加心跳相机日志信息
-//                            int add5 = terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
-//                            log.info("-----add5----" + add5);
                         }
-//                        ArrayList<String> list3 = new ArrayList<>();
-//                        //添加缓存
-//                        for (BaseCameraManagement baseCameraManagement : list1) {
-//                            String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel() + "/h264_720";
-//                            list3.add(code);
-//                        }
-//                        log.info("--------------heartbeat--------------:" + list3);
-//                        redisCache.setCacheObject("heartbeat", list3);
-//                        //获取缓冲
-//                        List<String> heartbeat = redisCache.getCacheObject("heartbeat");
-//                        log.info("--------------heartbeat111--------------:" + heartbeat);
-//                        List<String> cameraPlayList = redisCache.getCacheObject("cameraPlay");
-//                        log.info("--------------cameraPlayList--------------:" + cameraPlayList);
-//                        if (!ObjectUtils.isEmpty(heartbeat)) {
-//                            if (!ObjectUtils.isEmpty(cameraPlayList)) {
-//                                heartbeat.addAll(cameraPlayList);
-//                            }
-//                            log.info("--------------heartbeat222--------------:" + heartbeat);
-//                            List<String> rtspApiList = cameraUtil.rtspApiList();
-//                            log.info("--------------rtspApiList1111--------------:" + rtspApiList);
-//                            if (!ObjectUtils.isEmpty(rtspApiList)) {
-//                                rtspApiList.removeAll(heartbeat);
-//                            }
-//                            log.info("--------------rtspApiList2222--------------:" + rtspApiList);
-//                            if (!ObjectUtils.isEmpty(rtspApiList)) {
-//                                for (String str : rtspApiList) {
-//                                    log.info("--------------str--------------:" + str);
-//                                    String[] parts = str.split("/");
-//                                    log.info("--------------parts--------------:" + parts);
-//                                    if (parts.length == 2) {
-//                                        CompletableFuture.runAsync(() -> {
-//                                            try {
-//                                                TimeUnit.SECONDS.sleep(3);
-//                                            } catch (InterruptedException e) {
-//                                                e.printStackTrace();
-//                                            }
-//                                            cameraUtil.stopStream(parts[0], parts[1]);
-//                                        });
-//                                    }
-//                                }
-//                            }
-//                        }
-//                        CompletableFuture.runAsync(() -> {
-//                            try {
-//                                TimeUnit.SECONDS.sleep(2);
-//                            } catch (InterruptedException e) {
-//                                e.printStackTrace();
-//                            }
-//                            cameraUtil.heartbeatGetPlayFlv();
-//                        });
-                        CompletableFuture.runAsync(() -> {
-                            cameraUtil.removePlayFlv(heartbeatVo.getLineDir(),heartbeatVo.getCurrentMile(),heartbeatVo.getVisualDistance());
-                        });
-//                        List<String> finalCodeList2 = codeList;
-//                        CompletableFuture.runAsync(() -> {
-//                            log.info("-------------->>finalCodeList2-------" + finalCodeList2);
-//                            if (!ObjectUtils.isEmpty(finalCodeList2)) {
-//                                //判断心跳相机日志表后两条数据是否包含该相机编码
-//                                if (!finalCodeList2.contains(list1.get(0).getCameraCode())) {
-//                                    //如果不包含此相机编码
-//                                    for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
-//                                        log.info("-----6666666----");
-//                                        cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(), terminalHeartbeatLog.getChannel());
-//                                    }
-//                                }
-//                            }
-//                        });
                     } else {
-                        log.info("-------------->>已进入拉路路视频");
+                        log.info("-------------->>已进入拉一路路视频");
                         log.info("list1-------------->>" + list1.size());
                         for (int i = 1; i < list1.size(); i++) {
-                            boolean finalType3 = type;
-                            cameraUtil.heartbeatgetUrl(list1.get(i).getCameraCode(), list1.get(i).getChannel(), finalType3);
-//                            //添加心跳相机日志信息
-//                            int add6 = terminalHeartbeatLogService.add(list1.get(i).getCameraCode(), list1.get(i).getChannel());
-//                            log.info("-----add6----" + add6);
+                            boolean finalType = type;
+                            int finalI = i;
+                            CompletableFuture.runAsync(() -> {
+                                List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(finalI).getId(), finalType);
+                                if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                                    for (BaseCameraManagement cameraManagement : baseCameraManagementList1) {
+                                        cameraUtil.heartbeatgetUrl(cameraManagement.getCameraCode(), cameraManagement.getChannel(), finalType);
+                                    }
+                                }
+                            });
                         }
-//                        ArrayList<String> list3 = new ArrayList<>();
-//                        //添加缓存
-//                        for (BaseCameraManagement baseCameraManagement : list1) {
-//                            String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel() + "/h264_720";
-//                            list3.add(code);
-//                        }
-//                        log.info("--------------heartbeat--------------:" + list3);
-//                        redisCache.setCacheObject("heartbeat", list3);
-//                        //获取缓冲
-//                        List<String> heartbeat = redisCache.getCacheObject("heartbeat");
-//                        log.info("--------------heartbeat111--------------:" + heartbeat);
-//                        List<String> cameraPlayList = redisCache.getCacheObject("cameraPlay");
-//                        log.info("--------------cameraPlayList--------------:" + cameraPlayList);
-//                        if (!ObjectUtils.isEmpty(heartbeat)) {
-//                            if (!ObjectUtils.isEmpty(cameraPlayList)) {
-//                                heartbeat.addAll(cameraPlayList);
-//                            }
-//                            log.info("--------------heartbeat222--------------:" + heartbeat);
-//                            List<String> rtspApiList = cameraUtil.rtspApiList();
-//                            log.info("--------------rtspApiList1111--------------:" + rtspApiList);
-//                            if (!ObjectUtils.isEmpty(rtspApiList)) {
-//                                rtspApiList.removeAll(heartbeat);
-//                            }
-//                            log.info("--------------rtspApiList2222--------------:" + rtspApiList);
-//                            if (!ObjectUtils.isEmpty(rtspApiList)) {
-//                                for (String str : rtspApiList) {
-//                                    log.info("--------------str--------------:" + str);
-//                                    String[] parts = str.split("/");
-//                                    log.info("--------------parts--------------:" + parts);
-//                                    if (parts.length == 2) {
-//                                        CompletableFuture.runAsync(() -> {
-//                                            try {
-//                                                TimeUnit.SECONDS.sleep(3);
-//                                            } catch (InterruptedException e) {
-//                                                e.printStackTrace();
-//                                            }
-//                                            cameraUtil.stopStream(parts[0], parts[1]);
-//                                        });
-//                                    }
-//                                }
-//                            }
-//                        }
-//                        CompletableFuture.runAsync(() -> {
-//                            try {
-//                                TimeUnit.SECONDS.sleep(2);
-//                            } catch (InterruptedException e) {
-//                                e.printStackTrace();
-//                            }
-//                            cameraUtil.heartbeatGetPlayFlv();
-//                        });
-                        CompletableFuture.runAsync(() -> {
-                            cameraUtil.removePlayFlv(heartbeatVo.getLineDir(),heartbeatVo.getCurrentMile(),heartbeatVo.getVisualDistance());
-                        });
+                    }
+                    List<BaseCameraManagement> baseCameraManagementList1 = cameraUtil.getBaseCameraManagementList(list1.get(0).getId(), type);
+                    if (!ObjectUtils.isEmpty(baseCameraManagementList1)) {
+                        List<CameraVos> cameraVosList = new ArrayList<>();
+                        for (BaseCameraManagement baseCameraManagement : baseCameraManagementList1) {
+                            CameraVos cameraVos = new CameraVos();
+                            cameraVos.setCameraCode(baseCameraManagement.getCameraCode());
+                            cameraVos.setCurrentStream(CameraUtil.getPlayFlvRtsp(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), type));
+                            cameraVosList.add(cameraVos);
+                        }
+                        respHeartbeatVo.setCameraList(cameraVosList);
                     }
                     twoMap.put("currentStream", playFlv);
                     twoMap.put("cameraCode", list1.get(0).getCameraCode());
-                    respHeartbeatVo.setCurrentStream(playFlv);
+                    respHeartbeatVo.setIsAlarm(2);
                     //赋值--股道
                     List<BaseRouteMassage> list = baseRouteMassageService.list();
                     if (!ObjectUtils.isEmpty(list)) {
@@ -1480,15 +1100,11 @@ public class GeoHazardMonitorTokenController {
                         respHeartbeatVo.setRouteTrack("");
                         respHeartbeatVo.setStationCode("");
                     }
-                    respHeartbeatVo.setIsAlarm(2);
-                    respHeartbeatVo.setCameraCode(list1.get(0).getCameraCode());
-                    respHeartbeatVo.setAlarmList(null);
-                    respHeartbeatVo.setAlarmInfo(null);
                 }
                 twoMap.put("visualDistance", heartbeatVo.getVisualDistance().toString());
                 String string = JSON.toJSONString(twoMap);
                 heartbeatUtils.createHeartbeat(Constant.HERTBEA_KEY + heartbeatVo.getTerminalCode(), string);
-                if (StringUtils.isNotEmpty(respHeartbeatVo.getCurrentStream())) {
+                if (StringUtils.isNotEmpty(respHeartbeatVo.getCameraList())) {
                     jsonObject.put("resultCode", 1);
                     jsonObject.put("message", "ok");
                 } else {
@@ -1505,13 +1121,11 @@ public class GeoHazardMonitorTokenController {
             } else {
                 jsonObject.put("resultCode", 0);
                 jsonObject.put("message", "心跳机制交互失败");
-                jsonObject.put("data", "");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
             }
         } else {
             jsonObject.put("resultCode", 2);
             jsonObject.put("message", "token验证失败");
-            jsonObject.put("data", "");
             return JSONObject.toJSONString(jsonObject);
         }