소스 검색

心跳接口修改

gao.qiang 1 년 전
부모
커밋
dd48a7bee0

+ 27 - 0
business-service/src/main/java/com/ozs/utils/CameraUtil.java

@@ -261,6 +261,33 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
 //        return webUrl + "/ws/" + channel + "/" + cameraCode + ".flv";
     }
 
+    public  String heartbeatgetPlayFlv(String cameraCode, String channel) {
+        List<String> pathList = new ArrayList<>();
+        String data = HttpUtils.sendGet(webUrl + "/rtsp/api/list");
+        if (StringUtils.isNotEmpty(data)) {
+            JSONArray jsonArray = JSONArray.parseArray(data);
+            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 null;
+            }else {
+                return getPlayFlv(cameraCode, channel, true);
+            }
+        }
+        return null;
+    }
+
+    public  String heartbeatgetUrl(String cameraCode, String channel) {
+        CamerasVo camerasVo = new CamerasVo();
+        camerasVo.setCameraIndexCode(cameraCode);
+        previewURLs(camerasVo, channel);
+        return getPlayFlv(cameraCode, channel, true);
+    }
+    
     /**
      * web页面实时流接口
      *

+ 46 - 25
vehicle-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -86,6 +86,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ThreadPoolExecutor;
 import java.util.stream.Collectors;
 
 /**
@@ -577,7 +578,6 @@ public class GeoHazardMonitorTokenController {
                 LambdaQueryWrapper<MsgAlarm> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.ge(MsgAlarm::getAlarmMile, heartbeatVo.getCurrentMile());
                 queryWrapper.le(MsgAlarm::getAlarmMile, (heartbeatVo.getCurrentMile() + 10000));
-                queryWrapper.eq(MsgAlarm::getLineDir, heartbeatVo.getLineDir());
                 queryWrapper.eq(MsgAlarm::getRailwayCode, heartbeatVo.getRailwayCode());
                 queryWrapper.orderByAsc(MsgAlarm::getAlarmMile);
                 queryWrapper.eq(MsgAlarm::getIsRelease, 2);
@@ -594,15 +594,18 @@ public class GeoHazardMonitorTokenController {
                     String previousFormattedDateTime = previousDateTime.format(formatter);
 
                     LambdaQueryWrapper<TerminalIgnoreAlarm> queryWrapper1 = new LambdaQueryWrapper<>();
+                    //报警信息表中报警标识的信息
                     List<String> collect = alarmsList.stream().map(MsgAlarm::getAlarmId).collect(Collectors.toList());
                     queryWrapper1.in(TerminalIgnoreAlarm::getAlarmId, collect);
                     queryWrapper1.eq(TerminalIgnoreAlarm::getTerminalCode, heartbeatVo.getTerminalCode());
                     queryWrapper1.ge(TerminalIgnoreAlarm::getIgnoreTime, previousFormattedDateTime);
                     queryWrapper1.le(TerminalIgnoreAlarm::getIgnoreTime, currentFormattedDateTime);
+                    //终端忽略报警信息记录表
                     List<TerminalIgnoreAlarm> list2 = terminalIgnoreAlarmService.list(queryWrapper1);
                     //找出未忽略的报警信息
                     LambdaQueryWrapper<MsgAlarm> queryWrapper2 = new LambdaQueryWrapper<>();
                     if (!ObjectUtils.isEmpty(list2)) {
+                        //忽略报警表中报警标识的信息
                         List<String> collect1 = list2.stream().map(TerminalIgnoreAlarm::getAlarmId).collect(Collectors.toList());
                         List<String> list = collect.stream()
                                 .filter(item -> !collect1.contains(item))
@@ -622,7 +625,6 @@ public class GeoHazardMonitorTokenController {
                         LambdaQueryWrapper<BaseCameraManagement> camera = new LambdaQueryWrapper<BaseCameraManagement>();
                         camera.ge(BaseCameraManagement::getEndMile, list.get(0).getAlarmMile());
                         camera.le(BaseCameraManagement::getBeginMile, list.get(0).getAlarmMile());
-                        camera.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                         camera.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
 //                    camera.eq(BaseCameraManagement::getOnline,2);
                         camera.eq(BaseCameraManagement::getEnableOrNot, 1);
@@ -684,7 +686,6 @@ public class GeoHazardMonitorTokenController {
                             LambdaQueryWrapper<BaseCameraManagement> ment = new LambdaQueryWrapper<BaseCameraManagement>();
                             ment.ge(BaseCameraManagement::getEndMile, list.get(i).getAlarmMile());
                             ment.le(BaseCameraManagement::getBeginMile, list.get(i).getAlarmMile());
-                            ment.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                             ment.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                             ment.eq(BaseCameraManagement::getEnableOrNot, 1);
                             ment.orderByAsc(BaseCameraManagement::getInstallMile);
@@ -747,7 +748,6 @@ public class GeoHazardMonitorTokenController {
                         if (heartbeatVo.getLineDir() == 2) {
                             base.lt(BaseCameraManagement::getInstallMile, distance);
                         }
-                        base.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                         base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                         base.orderByAsc(BaseCameraManagement::getInstallMile);
                         base.eq(BaseCameraManagement::getEnableOrNot, 1);
@@ -759,16 +759,27 @@ public class GeoHazardMonitorTokenController {
                             jsonObject.put("data", "没有监控里程的相机");
                             return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                         }
-                        //获取视频点播地址
-                        CamerasVo camerasVo = new CamerasVo();
-                        camerasVo.setStreamType(type);
-                        camerasVo.setCameraIndexCode(list1.get(0).getCameraCode());
-                        String playFlv = cameraUtil.apiPreviewURLs(camerasVo);
-                        if ("1".equals(playFlv)) {
-                            jsonObject.put("resultCode", 0);
-                            jsonObject.put("message", "失败");
-                            jsonObject.put("data", "天网实时流接口调用失败");
-                            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
+                        log.info("流程1----------------->");
+                        //判断流媒体是否有流
+                        String playFlv = cameraUtil.heartbeatgetPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel());
+                        log.info("playFlv------------>"+playFlv);
+                        //拉四路视频
+                        if (StringUtils.isEmpty(playFlv)) {
+                            log.info("--------------->>已进入拉四路视频");
+                            for (BaseCameraManagement baseCameraManagement : list1) {
+                                CompletableFuture.runAsync(() -> {
+                                    cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
+                                });
+                            }
+                        } else {
+                            log.info("-------------->>已进入拉三路路视频");
+                            list1.remove(0);
+                            log.info("list1-------------->>"+list1.size());
+                            for (BaseCameraManagement baseCameraManagement : list1) {
+                                CompletableFuture.runAsync(() -> {
+                                    cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
+                                });
+                            }
                         }
                         twoMap.put("currentStream", playFlv);
                         twoMap.put("cameraCode", list1.get(0).getCameraCode());
@@ -788,7 +799,6 @@ public class GeoHazardMonitorTokenController {
                     if (heartbeatVo.getLineDir() == 2) {
                         base.lt(BaseCameraManagement::getInstallMile, distance);
                     }
-                    base.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                     base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                     base.orderByAsc(BaseCameraManagement::getInstallMile);
                     base.eq(BaseCameraManagement::getEnableOrNot, 1);
@@ -800,16 +810,27 @@ public class GeoHazardMonitorTokenController {
                         jsonObject.put("data", "没有监控里程的相机");
                         return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
                     }
-                    //获取视频点播地址
-                    CamerasVo camerasVo = new CamerasVo();
-                    camerasVo.setStreamType(type);
-                    camerasVo.setCameraIndexCode(list1.get(0).getCameraCode());
-                    String playFlv = cameraUtil.apiPreviewURLs(camerasVo);
-                    if ("1".equals(playFlv)) {
-                        jsonObject.put("resultCode", 0);
-                        jsonObject.put("message", "失败");
-                        jsonObject.put("data", "天网实时流接口调用失败");
-                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
+                    log.info("流程2----------------->");
+                    //判断流媒体是否有流
+                    String playFlv = cameraUtil.heartbeatgetPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel());
+                    log.info("playFlv------------>"+playFlv);
+                    //拉四路视频
+                    if (StringUtils.isEmpty(playFlv)) {
+                        log.info("--------------->>已进入拉四路视频");
+                        for (BaseCameraManagement baseCameraManagement : list1) {
+                            CompletableFuture.runAsync(() -> {
+                                cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
+                            });
+                        }
+                    } else {
+                        log.info("-------------->>已进入拉三路路视频");
+                        list1.remove(0);
+                        log.info("list1-------------->>"+list1.size());
+                        for (BaseCameraManagement baseCameraManagement : list1) {
+                            CompletableFuture.runAsync(() -> {
+                                cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
+                            });
+                        }
                     }
                     twoMap.put("currentStream", playFlv);
                     twoMap.put("cameraCode", list1.get(0).getCameraCode());