Quellcode durchsuchen

同步master分支后注释部分代码

buzhanyi vor 1 Jahr
Ursprung
Commit
1cd9ee4d8b

+ 54 - 0
business-service/src/main/java/com/ozs/entity/BaseRouteMassage.java

@@ -0,0 +1,54 @@
+package com.ozs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ozs.common.annotation.Excel;
+import com.ozs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 进路信息表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseRouteMassage extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 车站编码
+     */
+    @Excel(name = "车站编码")
+    private String stationCode;
+
+    /**
+     * 车站名称
+     */
+    @Excel(name = "车站名称")
+    private String stationName;
+
+    /**
+     * 里程位置
+     */
+    @Excel(name = "里程位置")
+    private Integer mileagePosition;
+    /**
+     * 进路股道
+     */
+    @Excel(name = "进路股道")
+    private Integer routeStationTrack;
+}

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

@@ -30,4 +30,8 @@ public class RespHeartbeatVo implements Serializable {
      * 当前报警信息((isAlarm为1时非空))
      */
     private AlarmInfoVo alarmInfo;
+    /**
+     * 当前股道
+     */
+    private Integer routeTrack;
 }

+ 18 - 0
business-service/src/main/java/com/ozs/mapper/BaseRouteMassageMapper.java

@@ -0,0 +1,18 @@
+package com.ozs.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.entity.BaseRouteMassage;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 进路信息表 接口
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-17
+ */
+@Mapper
+public interface BaseRouteMassageMapper extends BaseMapper<BaseRouteMassage> {
+
+}

+ 16 - 0
business-service/src/main/java/com/ozs/service/BaseRouteMassageService.java

@@ -0,0 +1,16 @@
+package com.ozs.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.entity.BaseRouteMassage;
+
+/**
+ * <p>
+ * 进路信息表 服务类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-17
+ */
+public interface BaseRouteMassageService extends IService<BaseRouteMassage> {
+
+}

+ 25 - 0
business-service/src/main/java/com/ozs/service/impl/BaseRouteMassageServiceImpl.java

@@ -0,0 +1,25 @@
+package com.ozs.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.entity.BaseRouteMassage;
+import com.ozs.mapper.BaseRouteMassageMapper;
+import com.ozs.service.BaseRouteMassageService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 进路信息表 服务实现类
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-17
+ */
+@Service
+public class BaseRouteMassageServiceImpl extends ServiceImpl<BaseRouteMassageMapper, BaseRouteMassage> implements BaseRouteMassageService {
+
+    @Resource
+    BaseRouteMassageMapper baseRouteMassageMapper;
+
+}

+ 91 - 69
business-service/src/main/java/com/ozs/utils/CameraUtil.java

@@ -251,11 +251,11 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
      */
     public static String getPlayFlvRtsp(String cameraCode, String channel, boolean flay) {
         if (!flay) {
-            log.info("-----getPlayFlvRtsp------------>"+bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel+ ".flv");
-            return bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel+ "/h264_720.flv";
+            log.info("-----getPlayFlvRtsp------------>" + bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel + ".flv");
+            return bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel + "/h264_720.flv";
         }
-        log.info("-------getPlayFlvRtsp---------->"+bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel+ ".flv");
-        return bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel+ "/h264_1080.flv";
+        log.info("-------getPlayFlvRtsp---------->" + bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel + ".flv");
+        return bakUrlRtsp + "/hdl/" + cameraCode + "/" + channel + "/h264_1080.flv";
 
 
 //        if (!flay) {
@@ -264,13 +264,20 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
 //        return webUrl + "/ws/" + channel + "/" + cameraCode + ".flv";
     }
 
-    public String heartbeatgetPlayFlv(String cameraCode, String channel,boolean type) {
+    /**
+     * web页面实时流接口
+     *
+     * @param cameraCode
+     * @param channel
+     * @return
+     */
+    public static String getPlayFlv(String cameraCode, String channel) {
         List<String> pathList = new ArrayList<>();
         String data = HttpUtils.sendGet(webUrl + "/rtsp/api/list");
-        log.info("data------------------>"+data);
         if (StringUtils.isNotEmpty(data)) {
+            log.info("---------------data---" + data);
             JSONArray jsonArray = JSONArray.parseArray(data);
-            log.info("jsonArray------------------>"+jsonArray);
+            log.info("---------------jsonArray---" + jsonArray);
             if (!ObjectUtils.isEmpty(jsonArray)) {
                 for (int i = 0; i < jsonArray.size(); i++) {
                     JSONObject jsonObject = jsonArray.getJSONObject(i);
@@ -278,94 +285,87 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
                     pathList.add(name);
                 }
                 boolean contains = pathList.contains(cameraCode + "/" + channel);
-                if (!contains) {
-                    return null;
+                if (contains) {
+                    return getPlayFlv(cameraCode, channel, true);
                 } else {
-                    return getPlayFlvRtsp(cameraCode, channel, type);
+                    /**
+                     *  jsonBody.put("cameraIndexCode", "01ea43e6676f4e47bd6c5cd9e02aa006");
+                     *         jsonBody.put("streamType", 0);
+                     *         jsonBody.put("protocol","rtsp");
+                     *         jsonBody.put("transmode", 1);
+                     *         jsonBody.put("expand","streamform=rtp");
+                     */
+                    CamerasVo camerasVo = new CamerasVo();
+                    camerasVo.setCameraIndexCode(cameraCode);
+                    previewURLs(camerasVo, channel);
+                    return getPlayFlv(cameraCode, channel, true);
                 }
+            } else {
+                CamerasVo camerasVo = new CamerasVo();
+                camerasVo.setCameraIndexCode(cameraCode);
+                previewURLs(camerasVo, channel);
+                return getPlayFlv(cameraCode, channel, true);
             }
-            return null;
+        } else {
+            CamerasVo camerasVo = new CamerasVo();
+            camerasVo.setCameraIndexCode(cameraCode);
+            previewURLs(camerasVo, channel);
+            return getPlayFlv(cameraCode, channel, true);
         }
-        return null;
     }
 
-    public List<String> rtspApiList() {
+    public String heartbeatgetPlayFlv(String cameraCode, String channel, boolean type) {
         List<String> pathList = new ArrayList<>();
         String data = HttpUtils.sendGet(webUrl + "/rtsp/api/list");
-        log.info("data------------------>"+data);
+        log.info("data------------------>" + data);
         if (StringUtils.isNotEmpty(data)) {
             JSONArray jsonArray = JSONArray.parseArray(data);
-            log.info("jsonArray------------------>"+jsonArray);
+            log.info("jsonArray------------------>" + jsonArray);
             if (!ObjectUtils.isEmpty(jsonArray)) {
                 for (int i = 0; i < jsonArray.size(); i++) {
                     JSONObject jsonObject = jsonArray.getJSONObject(i);
                     String name = jsonObject.getString("Path");
                     pathList.add(name);
                 }
-                return pathList;
+                boolean contains = pathList.contains(cameraCode + "/" + channel);
+                if (!contains) {
+                    return null;
+                } else {
+                    return getPlayFlvRtsp(cameraCode, channel, type);
+                }
             }
             return null;
         }
         return null;
     }
 
-    public String heartbeatgetUrl(String cameraCode, String channel,boolean type) {
-        CompletableFuture.runAsync(() -> {
-            CamerasVo camerasVo = new CamerasVo();
-            camerasVo.setCameraIndexCode(cameraCode);
-            previewURLs(camerasVo, channel);
-        });
-        return getPlayFlvRtsp(cameraCode, channel, type);
-    }
-
-    /**
-     * web页面实时流接口
-     *
-     * @param cameraCode
-     * @param channel
-     * @return
-     */
-    public static String getPlayFlv(String cameraCode, String channel) {
+    public List<String> rtspApiList() {
         List<String> pathList = new ArrayList<>();
         String data = HttpUtils.sendGet(webUrl + "/rtsp/api/list");
+        log.info("data------------------>" + data);
         if (StringUtils.isNotEmpty(data)) {
-            log.info("---------------data---"+data);
             JSONArray jsonArray = JSONArray.parseArray(data);
-            log.info("---------------jsonArray---"+jsonArray);
+            log.info("jsonArray------------------>" + jsonArray);
             if (!ObjectUtils.isEmpty(jsonArray)) {
                 for (int i = 0; i < jsonArray.size(); i++) {
                     JSONObject jsonObject = jsonArray.getJSONObject(i);
                     String name = jsonObject.getString("Path");
                     pathList.add(name);
                 }
-                boolean contains = pathList.contains(cameraCode + "/" + channel);
-                if (contains) {
-                    return getPlayFlv(cameraCode, channel, true);
-                } else {
-                    /**
-                     *  jsonBody.put("cameraIndexCode", "01ea43e6676f4e47bd6c5cd9e02aa006");
-                     *         jsonBody.put("streamType", 0);
-                     *         jsonBody.put("protocol","rtsp");
-                     *         jsonBody.put("transmode", 1);
-                     *         jsonBody.put("expand","streamform=rtp");
-                     */
-                    CamerasVo camerasVo = new CamerasVo();
-                    camerasVo.setCameraIndexCode(cameraCode);
-                    previewURLs(camerasVo, channel);
-                    return getPlayFlv(cameraCode, channel, true);
-                }
-            }else {
-                CamerasVo camerasVo = new CamerasVo();
-                camerasVo.setCameraIndexCode(cameraCode);
-                previewURLs(camerasVo, channel);
-                return getPlayFlv(cameraCode, channel, true);
+                return pathList;
             }
-        } else {
+            return null;
+        }
+        return null;
+    }
+
+    public String heartbeatgetUrl(String cameraCode, String channel, boolean type) {
+        CompletableFuture.runAsync(() -> {
             CamerasVo camerasVo = new CamerasVo();
             camerasVo.setCameraIndexCode(cameraCode);
             previewURLs(camerasVo, channel);
-            return getPlayFlv(cameraCode, channel, true);
-        }
+        });
+        return getPlayFlvRtsp(cameraCode, channel, type);
     }
 
     public static String invite(String cameraCode, String channel) {
@@ -1038,7 +1038,6 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
      * 车载终端实时流调用的远程天网接口
      *
      * @param camerasVo
-     * @param channel
      */
     public String apiPreviewURLs(CamerasVo camerasVo) {
         /**
@@ -1065,11 +1064,11 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         }
     }
 
-    public  String stopStream(String cameraIndexCode, String channel) {
+    public String stopStream(String cameraIndexCode, String channel) {
         try {
             //http://10.48.36.47:9080/api/gateway/stop?stream=0235538f5ec241abad7c29cb423f16bb/1
-            log.info("code-----1111----->" + httpUrl + "/api/gateway/stop?stream=" + cameraIndexCode + "/" + channel);
-            String code = HttpClientUtil.getURL(httpUrl + "/api/gateway/stop?stream=" + cameraIndexCode + "/" + channel);
+            log.info("code-----1111----->" + httpUrl + "/api/gateway/stop?stream=" + cameraIndexCode + "/" + channel + "/h264_720");
+            String code = HttpClientUtil.getURL(httpUrl + "/api/gateway/stop?stream=" + cameraIndexCode + "/" + channel + "/h264_720");
             log.info("code---111111------->" + code);
             return code;
         } catch (Exception e) {
@@ -1130,26 +1129,26 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
      */
     public void playbackURLs(List<String> list, String alarmPlayTimeValue) {
         log.info("--------------->playbackURLs");
-        log.info("alarmPlayTimeValue------------->"+alarmPlayTimeValue);
+        log.info("alarmPlayTimeValue------------->" + alarmPlayTimeValue);
         for (String code : list) {
             PlaybackVo playbackVo = new PlaybackVo();
             playbackVo.setCameraIndexCode(code);
             // 获取当前时间
             OffsetDateTime currentTime = OffsetDateTime.now();
-            log.info("currentTime------------->"+currentTime);
+            log.info("currentTime------------->" + currentTime);
             // 获取当前时间的前10分钟时间
             OffsetDateTime beforeTenMinutes = currentTime.minusMinutes(Long.parseLong(alarmPlayTimeValue));
-            log.info("beforeTenMinutes------------->"+beforeTenMinutes);
+            log.info("beforeTenMinutes------------->" + beforeTenMinutes);
             // 获取当前时间的后10分钟时间
             OffsetDateTime afterTenMinutes = currentTime.plusMinutes(Long.parseLong(alarmPlayTimeValue));
-            log.info("afterTenMinutes------------->"+afterTenMinutes);
+            log.info("afterTenMinutes------------->" + afterTenMinutes);
             // 格式化时间
             DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
             playbackVo.setBeginTime(beforeTenMinutes.format(formatter));
-            log.info("playbackVo.getBeginTime()------------->"+playbackVo.getBeginTime());
+            log.info("playbackVo.getBeginTime()------------->" + playbackVo.getBeginTime());
             //现在当前时间:后续需要修改成报警时间的后几分钟
             playbackVo.setEndTime(currentTime.format(formatter));
-            log.info("playbackVo.getEndTime()------------->"+playbackVo.getEndTime());
+            log.info("playbackVo.getEndTime()------------->" + playbackVo.getEndTime());
             // jsonBody.put("protocol","rtsp");
             //        jsonBody.put("expand","streamform=rtp");
             playbackVo.setProtocol("rtsp");
@@ -1216,4 +1215,27 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         sdate = DateUtils.addDays(sdate, -1);
         System.out.println(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, sdate));
     }
+
+    public void heartbeatGetPlayFlv() {
+        String data = HttpUtils.sendGet(webUrl + "/api/summary");
+        log.info("data------------------>" + data);
+        if (StringUtils.isNotEmpty(data)) {
+            JSONObject jsonObject = JSONObject.parseObject(data);
+            JSONArray streamArray = jsonObject.getJSONArray("Streams");
+            for (int i = 0; i < streamArray.size(); i++) {
+                JSONObject subObj = streamArray.getJSONObject(i);
+                String subValue = subObj.getString("Subscribers");
+                String pathValue = subObj.getString("Path");
+                List<String> heartbeat = redisCache.getCacheObject("heartbeat");
+                log.info("subValue------------------>" + subValue);
+                log.info("pathValue------------------>" + pathValue);
+                log.info("heartbeat------------------>" + heartbeat);
+                if (subValue.equals("1") && pathValue.contains("h264_720") && heartbeat.contains(pathValue)) {
+                    log.info("执行stopStream------------------>");
+                    String[] parts = pathValue.split("/");
+                    stopStream(parts[0], parts[1]);
+                }
+            }
+        }
+    }
 }

+ 5 - 0
business-service/src/main/resources/mapper/BaseRouteMassageMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ozs.mapper.BaseRouteMassageMapper">
+
+</mapper>

+ 41 - 0
vehicle-sdk/src/main/java/com/ozs/config/ShotExecutors.java

@@ -0,0 +1,41 @@
+package com.ozs.config;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.ozs.common.utils.http.HttpUtils;
+import com.ozs.utils.CameraUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author wyy
+ * @subject
+ * @creat 2023/5/6
+ */
+@Configuration
+@EnableScheduling
+@EnableAsync
+@Slf4j
+public class ShotExecutors {
+    @Resource
+    CameraUtil cameraUtil;
+
+    /**
+     * 定时清除流媒体压缩视频
+     */
+    @Async
+    @Scheduled(fixedRate = 3000)
+    public void handleAlarmPicture() {
+        cameraUtil.heartbeatGetPlayFlv();
+    }
+}

+ 239 - 174
vehicle-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -16,6 +16,7 @@ import com.ozs.common.utils.stateSecrets.SM4Utils;
 import com.ozs.config.Constant;
 import com.ozs.entity.BaseCameraManagement;
 import com.ozs.entity.BaseRailwayManagement;
+import com.ozs.entity.BaseRouteMassage;
 import com.ozs.entity.BaseTerminal;
 import com.ozs.entity.BaseUser;
 import com.ozs.entity.BaseVehicleTerminal;
@@ -52,6 +53,7 @@ import com.ozs.mapper.MsgHeartbeatAlarmMessageMapper;
 import com.ozs.mapper.SkynetHeartbeatLogMapper;
 import com.ozs.service.BaseCameraManagementService;
 import com.ozs.service.BaseRailwayManagementService;
+import com.ozs.service.BaseRouteMassageService;
 import com.ozs.service.BaseTerminalService;
 import com.ozs.service.BaseUserService;
 import com.ozs.service.BaseVehicleTerminalService;
@@ -144,6 +146,9 @@ public class GeoHazardMonitorTokenController {
     private AlarmHeartbeatLogMapper alarmHeartbeatLogMapper;
     @Resource
     private MsgHeartbeatAlarmMessageMapper msgHearbeatAlarmMessageMapper;
+    @Resource
+    private BaseRouteMassageService baseRouteMassageService;
+
     @Value("${base.env}")
     private String env;
     @Value("${sdk.publish}")
@@ -587,15 +592,15 @@ public class GeoHazardMonitorTokenController {
             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");
-            }
+            //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) {
@@ -694,7 +699,7 @@ public class GeoHazardMonitorTokenController {
 //                            //添加心跳相机日志信息
 //                            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();
@@ -725,17 +730,17 @@ public class GeoHazardMonitorTokenController {
                                         if (parts.length == 2) {
                                             CompletableFuture.runAsync(() -> {
                                                 try {
-                                                    TimeUnit.SECONDS.sleep(3);
-                                                } catch (InterruptedException e) {
-                                                    e.printStackTrace();
-                                                }
-                                                cameraUtil.stopStream(parts[0], parts[1]);
-                                            });
-                                        }
-                                    }
-                                }
-                            }
-
+ TimeUnit.SECONDS.sleep(3);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ cameraUtil.stopStream(parts[0], parts[1]);
+ });
+ }
+ }
+ }
+ }
+ **/
                             respHeartbeatVo.setCurrentStream(playFlv1);
                             respHeartbeatVo.setIsAlarm(1);
                             respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
@@ -797,12 +802,11 @@ public class GeoHazardMonitorTokenController {
                             //获取所有报警安装里程位置的相机
                             List<BaseCameraManagement> baseList = baseCameraManagementService.list(ment);
                             if (baseList.size() > 0) {
-                                for (int o = 0; o < baseList.size(); o++) {
                                     //判断流媒体是否有流
                                     String playFlv = null;
-                                    playFlv = cameraUtil.heartbeatgetPlayFlv(baseList.get(o).getCameraCode(), baseList.get(o).getChannel(), type);
+                                playFlv = cameraUtil.heartbeatgetPlayFlv(baseList.get(0).getCameraCode(), baseList.get(0).getChannel(), type);
                                     if (StringUtils.isEmpty(playFlv)) {
-                                        playFlv = cameraUtil.heartbeatgetUrl(baseList.get(o).getCameraCode(), baseList.get(o).getChannel(), type);
+                                        playFlv = cameraUtil.heartbeatgetUrl(baseList.get(0).getCameraCode(), baseList.get(0).getChannel(), type);
                                     }
 //                                    //判断心跳相机日志表后两条数据是否包含该相机编码
 //                                    if (!ObjectUtils.isEmpty(codeList)) {
@@ -819,8 +823,8 @@ public class GeoHazardMonitorTokenController {
 //                                    log.info("-----add1----" + add1);
                                     AlarmListVo alarmListVo = new AlarmListVo();
                                     //alarmList对象
-                                    alarmListVo.setCameraStream(playFlv);
-                                    alarmListVo.setCameraCode(baseList.get(o).getCameraCode());
+                                alarmListVo.setCameraStream(playFlv);
+                                alarmListVo.setCameraCode(baseList.get(0).getCameraCode());
                                     //alarmInfo对象
                                     AlarmInfoVo alarmInfoVo1 = new AlarmInfoVo();
                                     alarmInfoVo1.setAlarmId(list.get(i).getAlarmId());
@@ -841,55 +845,55 @@ public class GeoHazardMonitorTokenController {
                                         }
                                         alarmInfoVo1.setAlarmFiles(vo);
                                     }
-                                    alarmListVo.setAlarmInfo(alarmInfoVo1);
-                                    listVos.add(alarmListVo);
-                                }
-                                ArrayList<String> list3 = new ArrayList<>();
-                                //添加缓存
-                                List<String> stringList = redisCache.getCacheObject("heartbeat");
-                                for (BaseCameraManagement baseCameraManagement : baseList) {
-                                    String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel();
-                                    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(3);
-                                                    } catch (InterruptedException e) {
-                                                        e.printStackTrace();
-                                                    }
-                                                    cameraUtil.stopStream(parts[0], parts[1]);
-                                                });
-                                            }
-                                        }
-                                    }
-                                }
+                                alarmListVo.setAlarmInfo(alarmInfoVo1);
+                                listVos.add(alarmListVo);
+                                break;
+                                //ArrayList<String> list3 = new ArrayList<>();
+                                ////添加缓存
+                                //List<String> stringList = redisCache.getCacheObject("heartbeat");
+                                //for (BaseCameraManagement baseCameraManagement : baseList) {
+                                //    String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel();
+                                //    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(3);
+                                //                    } catch (InterruptedException e) {
+                                //                        e.printStackTrace();
+                                //                    }
+                                //                    cameraUtil.stopStream(parts[0], parts[1]);
+                                //                });
+                                //            }
+                                //        }
+                                //    }
+                                //}
                             }
                         }
                         AlarmListVo[] array = listVos.toArray(new AlarmListVo[]{});
@@ -928,50 +932,50 @@ public class GeoHazardMonitorTokenController {
                         }
                         ArrayList<String> list3 = new ArrayList<>();
                         //添加缓存
-                        List<String> stringList = redisCache.getCacheObject("heartbeat");
+                        //List<String> stringList = redisCache.getCacheObject("heartbeat");
                         for (BaseCameraManagement baseCameraManagement : list1) {
-                            String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel();
+                            String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel() + "/h264_720";
                             list3.add(code);
                         }
-                        if (!ObjectUtils.isEmpty(stringList)) {
-                            list3.addAll(stringList);
-                        }
+                        //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(3);
-                                            } catch (InterruptedException e) {
-                                                e.printStackTrace();
-                                            }
-                                            cameraUtil.stopStream(parts[0], parts[1]);
-                                        });
-                                    }
-                                }
-                            }
-                        }
+                        //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]);
+                        //                });
+                        //            }
+                        //        }
+                        //    }
+                        //}
                     } else {
                         //没有报警信息的时候
                         if (heartbeatVo.getLineDir() == 1) {
@@ -1016,38 +1020,38 @@ public class GeoHazardMonitorTokenController {
                             ArrayList<String> list3 = new ArrayList<>();
                             //添加缓存
                             for (BaseCameraManagement baseCameraManagement : list1) {
-                                String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel();
+                                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]);
-                                        }
-                                    }
-                                }
-                            }
+                            //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]);
+                            //            }
+                            //        }
+                            //    }
+                            //}
                         } else {
                             log.info("-------------->>已进入拉一路视频");
                             log.info("list1-------------->>" + list1.size());
@@ -1060,45 +1064,45 @@ public class GeoHazardMonitorTokenController {
                             ArrayList<String> list3 = new ArrayList<>();
                             //添加缓存
                             for (BaseCameraManagement baseCameraManagement : list1) {
-                                String code = baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel();
+                                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]);
-                                            });
-                                        }
-                                    }
-                                }
-                            }
+                            //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]);
+                            //                });
+                            //            }
+                            //        }
+                            //    }
+                            //}
                         }
                         twoMap.put("currentStream", playFlv);
                         twoMap.put("cameraCode", list1.get(0).getCameraCode());
@@ -1262,6 +1266,13 @@ public class GeoHazardMonitorTokenController {
                     twoMap.put("currentStream", playFlv);
                     twoMap.put("cameraCode", list1.get(0).getCameraCode());
                     respHeartbeatVo.setCurrentStream(playFlv);
+                    //赋值--股道
+                    List<BaseRouteMassage> list = baseRouteMassageService.list();
+                    if (!ObjectUtils.isEmpty(list)) {
+                        if (list.get(0).getMileagePosition() - heartbeatVo.getCurrentMile() <= 500 && list.get(0).getMileagePosition() - heartbeatVo.getCurrentMile() >= 0) {
+                            respHeartbeatVo.setRouteTrack(list.get(0).getRouteStationTrack());
+                        }
+                    }
                     respHeartbeatVo.setIsAlarm(2);
                     respHeartbeatVo.setCameraCode(list1.get(0).getCameraCode());
                     respHeartbeatVo.setAlarmList(null);
@@ -1946,4 +1957,58 @@ public class GeoHazardMonitorTokenController {
         String s1 = JSONObject.toJSONString(vo);
         return SM4Utils.encryptData_ECB(s1, "4370780c9a8c43e5");
     }
+
+    /**
+     * 添加进路信息
+     *
+     * @return
+     */
+    @PostMapping("/api/addRouteMassage")
+    public String addRouteMassage(@RequestBody BaseRouteMassage baseRouteMassage) {
+        if (!ObjectUtils.isEmpty(baseRouteMassage) && !ObjectUtils.isEmpty(baseRouteMassage.getStationCode())) {
+            BaseRouteMassage one = baseRouteMassageService.getOne(new LambdaQueryWrapper<BaseRouteMassage>().eq(BaseRouteMassage::getStationCode, baseRouteMassage.getStationCode()));
+            if (!ObjectUtils.isEmpty(one)) {
+                return "车站编码已存在!";
+            }
+        }
+        baseRouteMassage.setCreateTime(new Date());
+        baseRouteMassage.setStationName("博野站");
+        baseRouteMassageService.save(baseRouteMassage);
+        return "200";
+    }
+
+    /**
+     * 查询进路信息
+     *
+     * @return
+     */
+    @GetMapping("/api/getRouteMassageList")
+    public List<BaseRouteMassage> getRouteMassageList() {
+        return baseRouteMassageService.list();
+    }
+
+    /**
+     * 删除进路信息
+     *
+     * @return
+     */
+    @PostMapping("/api/deleteRouteMassage")
+    public String deleteRouteMassage(@RequestBody BaseRouteMassage baseRouteMassage) {
+        if (!ObjectUtils.isEmpty(baseRouteMassage) && !ObjectUtils.isEmpty(baseRouteMassage.getId())) {
+            baseRouteMassageService.removeById(baseRouteMassage.getId());
+            return "200";
+        } else {
+            return "ID不存在";
+        }
+    }
+
+    /**
+     * ttt
+     *
+     * @return
+     */
+    @PostMapping("/api/ttt")
+    public void ttt() {
+        cameraUtil.heartbeatGetPlayFlv();
+    }
 }