浏览代码

心跳接口修改

gao.qiang 1 年之前
父节点
当前提交
20a94caa2d

+ 2 - 0
business-service/src/main/java/com/ozs/entity/TerminalHeartbeatLog.java

@@ -40,6 +40,8 @@ public class TerminalHeartbeatLog extends BaseEntity implements Serializable {
      * 相机编码
      */
     private String cameraCode;
+
+    private String channel;
     
     
 }

+ 2 - 0
business-service/src/main/java/com/ozs/service/TerminalHeartbeatLogService.java

@@ -8,4 +8,6 @@ import com.ozs.entity.TerminalHeartbeatLog;
  * @author Administrator
  */
 public interface TerminalHeartbeatLogService extends IService<TerminalHeartbeatLog> {
+
+     void add(String code,String channel);
 }

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

@@ -1,14 +1,30 @@
 package com.ozs.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ozs.entity.TerminalHeartbeatLog;
 import com.ozs.mapper.TerminalHeartbeatLogMapper;
 import com.ozs.service.TerminalHeartbeatLogService;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.Date;
+
 /**
  * 心跳接口相机记录表 服务类实现类
  */
 @Service
 public class TerminalHeartbeatLogServiceImpl extends ServiceImpl<TerminalHeartbeatLogMapper, TerminalHeartbeatLog> implements TerminalHeartbeatLogService {
+    
+    
+    
+    @Override
+    public void add(String code,String channel){
+        TerminalHeartbeatLog terminalHeartbeatLog=new TerminalHeartbeatLog();
+        terminalHeartbeatLog.setId((long) (baseMapper.selectCount(new QueryWrapper<>()) + 1));
+        terminalHeartbeatLog.setCameraCode(code);
+        terminalHeartbeatLog.setChannel(channel);
+        terminalHeartbeatLog.setCreateTime(new Date());
+        baseMapper.insert(terminalHeartbeatLog);
+    }
 }

+ 84 - 13
vehicle-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -24,6 +24,7 @@ import com.ozs.entity.MsgAlarmFrequency;
 import com.ozs.entity.MsgHeartbeatAlarmMessage;
 import com.ozs.entity.SkynetHeartbeatLog;
 import com.ozs.entity.SvcAddress;
+import com.ozs.entity.TerminalHeartbeatLog;
 import com.ozs.entity.TerminalIgnoreAlarm;
 import com.ozs.entity.VehiclePosition;
 import com.ozs.entity.vo.AlarmFilesVo;
@@ -57,6 +58,7 @@ import com.ozs.service.MsgAlarmExtService;
 import com.ozs.service.MsgAlarmFrequencyService;
 import com.ozs.service.MsgAlarmService;
 import com.ozs.service.SvcAddressService;
+import com.ozs.service.TerminalHeartbeatLogService;
 import com.ozs.service.TerminalIgnoreAlarmService;
 import com.ozs.service.VehiclePositionService;
 import com.ozs.system.service.ISysDictDataService;
@@ -144,6 +146,8 @@ public class GeoHazardMonitorTokenController {
     private String sdkUrl;
     @Autowired
     private ISysDictTypeService dictTypeService;
+    @Resource
+    private TerminalHeartbeatLogService terminalHeartbeatLogService;
 
     /**
      * 获取web访问令牌
@@ -552,7 +556,7 @@ public class GeoHazardMonitorTokenController {
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
             }
             if (heartbeatVo.getSignalStrength() == 2) {
-                type=false;
+                type = false;
             }
             vehiclePosition.setTravelMile(heartbeatVo.getCurrentMile());
             vehiclePosition.setVehicleCode(baseTerminal.getVehicleCode());
@@ -570,6 +574,11 @@ public class GeoHazardMonitorTokenController {
             LambdaQueryWrapper<BaseTerminal> terminal = new LambdaQueryWrapper<>();
             terminal.eq(BaseTerminal::getTerminalCode, vehiclePosition.getTerminalCode());
             boolean update = baseTerminalService.update(baseTerminal1, terminal);
+            //获取心跳接口相机记录表信息
+            List<TerminalHeartbeatLog> heartbeatLogList = terminalHeartbeatLogService.list(new LambdaQueryWrapper<TerminalHeartbeatLog>()
+                    .orderByDesc(TerminalHeartbeatLog::getCreateTime)
+                    .last("limit 2"));
+            List<String> codeList = heartbeatLogList.stream().map(TerminalHeartbeatLog::getCameraCode).collect(Collectors.toList());
 
             //目视距离和里程位置
             if (save && update) {
@@ -624,7 +633,7 @@ public class GeoHazardMonitorTokenController {
                         camera.ge(BaseCameraManagement::getEndMile, list.get(0).getAlarmMile());
                         camera.le(BaseCameraManagement::getBeginMile, list.get(0).getAlarmMile());
                         camera.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
-                        camera.eq(BaseCameraManagement::getOnline,2);
+                        camera.eq(BaseCameraManagement::getOnline, 2);
                         if (heartbeatVo.getLineDir() == 1) {
                             camera.in(BaseCameraManagement::getMonitoringDirection, 1, 3);
                         } else if (heartbeatVo.getLineDir() == 2) {
@@ -635,8 +644,16 @@ public class GeoHazardMonitorTokenController {
                         List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
                         List<AlarmListVo> listVos = new ArrayList<>();
                         if (baseCameraManagementList.size() > 0) {
-                            //判断流媒体是否有流
-                            String playFlv = cameraUtil.heartbeatgetUrl(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel(),type);
+                            String playFlv = cameraUtil.heartbeatgetUrl(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel(), type);
+                            //判断心跳相机日志表后两条数据是否包含该相机编码
+                            if (!codeList.contains(baseCameraManagementList.get(0).getCameraCode())) {
+                                //如果不包含此相机编码
+                                for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
+                                    cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(),terminalHeartbeatLog.getChannel());
+                                }
+                            }
+                            //添加心跳相机日志信息
+                            terminalHeartbeatLogService.add(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel());
                             respHeartbeatVo.setCurrentStream(playFlv);
                             respHeartbeatVo.setIsAlarm(1);
                             respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
@@ -681,7 +698,7 @@ public class GeoHazardMonitorTokenController {
                             ment.ge(BaseCameraManagement::getEndMile, list.get(i).getAlarmMile());
                             ment.le(BaseCameraManagement::getBeginMile, list.get(i).getAlarmMile());
                             ment.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
-                            ment.eq(BaseCameraManagement::getOnline,2);
+                            ment.eq(BaseCameraManagement::getOnline, 2);
                             if (heartbeatVo.getLineDir() == 1) {
                                 ment.in(BaseCameraManagement::getMonitoringDirection, 1, 3);
                             } else if (heartbeatVo.getLineDir() == 2) {
@@ -696,7 +713,16 @@ public class GeoHazardMonitorTokenController {
                             if (baseList.size() > 0) {
                                 for (int o = 0; o < baseList.size(); o++) {
                                     //判断流媒体是否有流
-                                    String playFlv = cameraUtil.heartbeatgetUrl(baseList.get(o).getCameraCode(), baseList.get(o).getChannel(),type);
+                                    String playFlv = cameraUtil.heartbeatgetUrl(baseList.get(o).getCameraCode(), baseList.get(o).getChannel(), type);
+                                    //判断心跳相机日志表后两条数据是否包含该相机编码
+                                    if (!codeList.contains(baseList.get(o).getCameraCode())) {
+                                        //如果不包含此相机编码
+                                        for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
+                                            cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(),terminalHeartbeatLog.getChannel());
+                                        }
+                                    }
+                                    //添加心跳相机日志信息
+                                    terminalHeartbeatLogService.add(baseList.get(o).getCameraCode(), baseList.get(o).getChannel());
                                     AlarmListVo alarmListVo = new AlarmListVo();
                                     //alarmList对象
                                     alarmListVo.setCameraStream(playFlv);
@@ -739,11 +765,20 @@ public class GeoHazardMonitorTokenController {
                         }
                         base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                         base.orderByAsc(BaseCameraManagement::getInstallMile);
-                        base.eq(BaseCameraManagement::getOnline,2);
+                        base.eq(BaseCameraManagement::getOnline, 2);
                         base.last("limit 2");
                         List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
                         for (BaseCameraManagement baseCameraManagement : list1) {
-                            cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(),type);
+                            cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), type);
+                            //判断心跳相机日志表后两条数据是否包含该相机编码
+                            if (!codeList.contains(baseCameraManagement.getCameraCode())) {
+                                //如果不包含此相机编码
+                                for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
+                                    cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(),terminalHeartbeatLog.getChannel());
+                                }
+                            }
+                            //添加心跳相机日志信息
+                            terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
                         }
                     } else {
                         //没有报警信息的时候
@@ -759,7 +794,7 @@ public class GeoHazardMonitorTokenController {
                         }
                         base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                         base.orderByAsc(BaseCameraManagement::getInstallMile);
-                        base.eq(BaseCameraManagement::getOnline,2);
+                        base.eq(BaseCameraManagement::getOnline, 2);
                         base.last("limit 2");
                         List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
                         if (list1.size() <= 0) {
@@ -770,7 +805,7 @@ public class GeoHazardMonitorTokenController {
                         }
                         log.info("流程1----------------->");
                         //判断流媒体是否有流
-                        String playFlv = cameraUtil.heartbeatgetPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel(),type);
+                        String playFlv = cameraUtil.heartbeatgetPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel(), type);
                         log.info("playFlv------------>" + playFlv);
                         //拉四路视频
                         if (StringUtils.isEmpty(playFlv)) {
@@ -779,6 +814,15 @@ public class GeoHazardMonitorTokenController {
                                 boolean finalType = type;
                                 CompletableFuture.runAsync(() -> {
                                     cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), finalType);
+                                    //判断心跳相机日志表后两条数据是否包含该相机编码
+                                    if (!codeList.contains(baseCameraManagement.getCameraCode())) {
+                                        //如果不包含此相机编码
+                                        for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
+                                            cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(),terminalHeartbeatLog.getChannel());
+                                        }
+                                    }
+                                    //添加心跳相机日志信息
+                                    terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
                                 });
                             }
                         } else {
@@ -789,6 +833,15 @@ public class GeoHazardMonitorTokenController {
                                 boolean finalType1 = type;
                                 CompletableFuture.runAsync(() -> {
                                     cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), finalType1);
+                                    //判断心跳相机日志表后两条数据是否包含该相机编码
+                                    if (!codeList.contains(baseCameraManagement.getCameraCode())) {
+                                        //如果不包含此相机编码
+                                        for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
+                                            cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(),terminalHeartbeatLog.getChannel());
+                                        }
+                                    }
+                                    //添加心跳相机日志信息
+                                    terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
                                 });
                             }
                         }
@@ -814,7 +867,7 @@ public class GeoHazardMonitorTokenController {
                     }
                     base.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
                     base.orderByAsc(BaseCameraManagement::getInstallMile);
-                    base.eq(BaseCameraManagement::getOnline,2);
+                    base.eq(BaseCameraManagement::getOnline, 2);
                     base.last("limit 2");
                     List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
                     if (list1.size() <= 0) {
@@ -825,7 +878,7 @@ public class GeoHazardMonitorTokenController {
                     }
                     log.info("流程2----------------->");
                     //判断流媒体是否有流
-                    String playFlv = cameraUtil.heartbeatgetPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel(),type);
+                    String playFlv = cameraUtil.heartbeatgetPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel(), type);
                     log.info("playFlv------------>" + playFlv);
                     //拉四路视频
                     if (StringUtils.isEmpty(playFlv)) {
@@ -834,6 +887,15 @@ public class GeoHazardMonitorTokenController {
                             boolean finalType2 = type;
                             CompletableFuture.runAsync(() -> {
                                 cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), finalType2);
+                                //判断心跳相机日志表后两条数据是否包含该相机编码
+                                if (!codeList.contains(baseCameraManagement.getCameraCode())) {
+                                    //如果不包含此相机编码
+                                    for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
+                                        cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(),terminalHeartbeatLog.getChannel());
+                                    }
+                                }
+                                //添加心跳相机日志信息
+                                terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
                             });
                         }
                     } else {
@@ -844,6 +906,15 @@ public class GeoHazardMonitorTokenController {
                             boolean finalType3 = type;
                             CompletableFuture.runAsync(() -> {
                                 cameraUtil.heartbeatgetUrl(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), finalType3);
+                                //判断心跳相机日志表后两条数据是否包含该相机编码
+                                if (!codeList.contains(baseCameraManagement.getCameraCode())) {
+                                    //如果不包含此相机编码
+                                    for (TerminalHeartbeatLog terminalHeartbeatLog : heartbeatLogList) {
+                                        cameraUtil.stopStream(terminalHeartbeatLog.getCameraCode(),terminalHeartbeatLog.getChannel());
+                                    }
+                                }
+                                //添加心跳相机日志信息
+                                terminalHeartbeatLogService.add(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
                             });
                         }
                     }
@@ -1079,7 +1150,7 @@ public class GeoHazardMonitorTokenController {
                 jsonObject.put("data", "没有该相机编码的相机或已离线");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), key);
             }
-            String playFlv = cameraUtil.heartbeatgetUrl(one.getCameraCode(), one.getChannel(),false);
+            String playFlv = cameraUtil.heartbeatgetUrl(one.getCameraCode(), one.getChannel(), false);
             map.put("url", playFlv);
             jsonObject.put("resultCode", 1);
             jsonObject.put("message", "ok");