Browse Source

第三方接口开发

gao.qiang 2 years ago
parent
commit
a8d47f53dd

+ 25 - 0
business-service/src/main/java/com/ozs/entity/vo/CameraVo.java

@@ -0,0 +1,25 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class CameraVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 车载终端编码
+     */
+    private String terminalCode;
+    /**
+     * 线路编码
+     */
+    private String railwayCode;
+    /**
+     * 1上行2下行
+     */
+    private Integer lineDir;
+}

+ 34 - 0
business-service/src/main/java/com/ozs/entity/vo/RespCameraVo.java

@@ -0,0 +1,34 @@
+package com.ozs.entity.vo;
+
+import lombok.Data;
+import org.omg.PortableInterceptor.INACTIVE;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class RespCameraVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 相机编码
+     */
+    private String cameraCode;
+    /**
+     * 所属线路编码
+     */
+    private String railwayCode;
+    /**
+     * 所属线路名称
+     */
+    private String railwayCame;
+    /**
+     * 行别
+     */
+    private Integer lineDir;
+    /**
+     * 安装里程位置单位米
+     */
+    private Integer installMile;
+}

+ 126 - 39
vehicle-admin/src/main/java/com/ozs/web/controller/sdk/GeoHazardMonitorTokenController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.exception.base.BaseException;
 import com.ozs.common.utils.ApiTokenUtils;
+import com.ozs.common.utils.ChineseToPingyin;
 import com.ozs.common.utils.HeartbeatUtils;
 import com.ozs.common.utils.HttpClientUtil;
 import com.ozs.common.utils.IgnoreUtils;
@@ -14,8 +15,10 @@ import com.ozs.common.utils.http.HttpUtils;
 import com.ozs.common.utils.stateSecrets.SM4Utils;
 import com.ozs.entity.BaseCameraManagement;
 import com.ozs.entity.BaseDeviceDynamicManagement;
+import com.ozs.entity.BaseRailwayManagement;
 import com.ozs.entity.BaseTerminal;
 import com.ozs.entity.BaseUser;
+import com.ozs.entity.CameraTree;
 import com.ozs.entity.MsgAlarm;
 import com.ozs.entity.MsgAlarmExt;
 import com.ozs.entity.MsgAlarmFrequency;
@@ -25,16 +28,19 @@ import com.ozs.entity.VehiclePosition;
 import com.ozs.entity.vo.AlarmFilesVo;
 import com.ozs.entity.vo.AlarmInfoVo;
 import com.ozs.entity.vo.AlarmListVo;
+import com.ozs.entity.vo.CameraVo;
 import com.ozs.entity.vo.Files;
 import com.ozs.entity.vo.HeartbeatVo;
 import com.ozs.entity.vo.ReleaseAlarmVo;
 import com.ozs.entity.vo.ReqMsgAlarmVo;
+import com.ozs.entity.vo.RespCameraVo;
 import com.ozs.entity.vo.RespGeoHazardMonitorVo;
 import com.ozs.entity.vo.RespHeartbeatVo;
 import com.ozs.entity.vo.RespMsgAlarmVo;
 import com.ozs.entity.vo.TerminalIgnoreVo;
 import com.ozs.service.BaseCameraManagementService;
 import com.ozs.service.BaseDeviceDynamicManagementService;
+import com.ozs.service.BaseRailwayManagementService;
 import com.ozs.service.BaseTerminalService;
 import com.ozs.service.BaseUserService;
 import com.ozs.service.MsgAlarmExtService;
@@ -59,6 +65,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -101,6 +108,9 @@ public class GeoHazardMonitorTokenController {
     private TerminalIgnoreAlarmService terminalIgnoreAlarmService;
     @Autowired
     private IgnoreUtils ignoreUtils;
+    @Autowired
+    private BaseRailwayManagementService baseRailwayManagementService;
+
     /**
      * 获取web访问令牌
      *
@@ -131,7 +141,7 @@ public class GeoHazardMonitorTokenController {
                     respGeoHazardMonitorVo.setExpiresIn(l / 1000);
                     respGeoHazardMonitorVo.setTokenType("令牌类型");
                     jsonObject.put("resultCode", 1);
-                    jsonObject.put("message", "成功");
+                    jsonObject.put("message", "ok");
                     jsonObject.put("data", respGeoHazardMonitorVo);
                     return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
                 } else {
@@ -231,7 +241,7 @@ public class GeoHazardMonitorTokenController {
                 msgAlarmFrequencyService.save(msgAlarmVice);
                 for (BaseCameraManagement baseCameraManagement : baseCameraManagementList) {
                     String invite = CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
-                    if ("304".equals(invite)|| "200".equals(invite)){
+                    if ("304".equals(invite) || "200".equals(invite)) {
                         String start = HttpUtils.sendGet(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
                         log.info("startRecording------------" + start);
                         if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
@@ -249,11 +259,11 @@ public class GeoHazardMonitorTokenController {
                             jsonObject.put("data", "开启录制视频失败!!!");
                             return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
                         }
-                    }else {
+                    } else {
                         jsonObject.put("resultCode", 0);
                         jsonObject.put("message", "失败");
                         jsonObject.put("data", "视频邀约失败,视频中心没有该相机编码或通道编码的摄像头!!!");
-                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");  
+                        return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
                     }
                 }
 
@@ -280,7 +290,7 @@ public class GeoHazardMonitorTokenController {
 //                return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
 //            }
             jsonObject.put("resultCode", 1);
-            jsonObject.put("message", "成功");
+            jsonObject.put("message", "ok");
             jsonObject.put("data", null);
             return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
         } else {
@@ -329,7 +339,7 @@ public class GeoHazardMonitorTokenController {
             if (count) {
                 map.put("releaseState", 1);
                 jsonObject.put("resultCode", 1);
-                jsonObject.put("message", "成功");
+                jsonObject.put("message", "ok");
                 jsonObject.put("data", map);
             } else {
                 map.put("releaseState", 2);
@@ -346,10 +356,16 @@ public class GeoHazardMonitorTokenController {
         }
     }
 
-
+    /**
+     * 车载心跳机制交互
+     *
+     * @param parameter
+     * @param request
+     * @return
+     */
     @PostMapping("/api/terminal/heartbeat")
     public String heartbeat(@RequestParam("parameter") String parameter, HttpServletRequest request) {
-        Map<String,Object> twoMap=new HashMap<>();
+        Map<String, Object> twoMap = new HashMap<>();
         int distance = 0;
         RespHeartbeatVo respHeartbeatVo = new RespHeartbeatVo();
         String token = apiTokenUtils.getGeoHazardMonitorToken(request);
@@ -373,7 +389,7 @@ public class GeoHazardMonitorTokenController {
                 LambdaQueryWrapper<MsgAlarm> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.le(MsgAlarm::getAlarmMile, heartbeatVo.getCurrentMile());
                 queryWrapper.ge(MsgAlarm::getAlarmMile, (heartbeatVo.getCurrentMile() + 10000));
-                queryWrapper.eq(MsgAlarm::getLineDir,heartbeatVo.getLineDir());
+                queryWrapper.eq(MsgAlarm::getLineDir, heartbeatVo.getLineDir());
                 queryWrapper.orderByAsc(MsgAlarm::getAlarmMile);
                 List<MsgAlarm> list = msgAlarmService.list(queryWrapper);
                 //有报警信息的时候
@@ -382,16 +398,16 @@ public class GeoHazardMonitorTokenController {
                     LambdaQueryWrapper<BaseCameraManagement> camera = new LambdaQueryWrapper<BaseCameraManagement>();
                     camera.ge(BaseCameraManagement::getBeginMile, list.get(0).getAlarmMile());
                     camera.le(BaseCameraManagement::getEndMile, list.get(0).getAlarmMile());
-                    camera.eq(BaseCameraManagement::getLineDir,heartbeatVo.getLineDir());
+                    camera.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                     camera.orderByAsc(BaseCameraManagement::getInstallMile);
                     List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
-                    if (baseCameraManagementList.size()>0) {
+                    if (baseCameraManagementList.size() > 0) {
                         //获取视频点播地址
                         String playFlv = CameraUtil.getPlayFlv(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel(), false);
                         respHeartbeatVo.setCurrentStream(playFlv);
                         respHeartbeatVo.setIsAlarm(1);
                         respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
-                        twoMap.put(respHeartbeatVo.getCameraCode(),respHeartbeatVo.getCurrentStream());
+                        twoMap.put(respHeartbeatVo.getCameraCode(), respHeartbeatVo.getCurrentStream());
                         //alarmInfo对象
                         AlarmInfoVo alarmInfoVo = new AlarmInfoVo();
                         alarmInfoVo.setAlarmId(list.get(0).getAlarmId());
@@ -409,7 +425,7 @@ public class GeoHazardMonitorTokenController {
                         //返回结果
                         alarmInfoVo.setAlarmFiles(files);
                         respHeartbeatVo.setAlarmInfo(alarmInfoVo);
-                    }else {
+                    } else {
                         jsonObject.put("resultCode", 0);
                         jsonObject.put("message", "失败");
                         jsonObject.put("data", "报警里程无可用相机");
@@ -434,7 +450,7 @@ public class GeoHazardMonitorTokenController {
                                 //alarmList对象
                                 alarmListVo.setCameraStream(flv);
                                 alarmListVo.setCameraCode(baseList.get(o).getCameraCode());
-                                twoMap.put(alarmListVo.getCameraCode(),alarmListVo.getCameraStream());
+                                twoMap.put(alarmListVo.getCameraCode(), alarmListVo.getCameraStream());
                                 //alarmInfo对象
                                 AlarmInfoVo alarmInfoVo1 = new AlarmInfoVo();
                                 alarmInfoVo1.setAlarmId(list.get(i).getAlarmId());
@@ -455,28 +471,28 @@ public class GeoHazardMonitorTokenController {
                                 AlarmListVo[] array = listVos.toArray(new AlarmListVo[]{});
                                 respHeartbeatVo.setAlarmList(array);
                             }
-                        }else {
+                        } else {
                             jsonObject.put("resultCode", 0);
                             jsonObject.put("message", "失败");
                             jsonObject.put("data", "报警里程无可用相机");
                             return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
                         }
                     }
-                } else {    
+                } else {
                     //没有报警信息的时候
                     distance = heartbeatVo.getVisualDistance() + heartbeatVo.getCurrentMile();
-                    LambdaQueryWrapper<BaseCameraManagement> base=new LambdaQueryWrapper<>();
-                    base.gt(BaseCameraManagement::getInstallMiles,distance);
-                    base.eq(BaseCameraManagement::getLineDir,heartbeatVo.getLineDir());
+                    LambdaQueryWrapper<BaseCameraManagement> base = new LambdaQueryWrapper<>();
+                    base.gt(BaseCameraManagement::getInstallMiles, distance);
+                    base.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
                     base.orderByAsc(BaseCameraManagement::getInstallMiles);
                     wrapper.last("limit 4");
                     List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
                     String flv = CameraUtil.getPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel(), false);
                     for (BaseCameraManagement baseCameraManagement : list1) {
                         String flv1 = CameraUtil.getPlayFlv(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), false);
-                        twoMap.put(baseCameraManagement.getCameraCode(),flv1);
+                        twoMap.put(baseCameraManagement.getCameraCode(), flv1);
                         String invite = CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
-                        if (!"304".equals(invite)&& !"200".equals(invite)){
+                        if (!"304".equals(invite) && !"200".equals(invite)) {
                             jsonObject.put("resultCode", 0);
                             jsonObject.put("message", "失败");
                             jsonObject.put("data", "视频邀约失败,视频中心没有该相机编码或通道编码的摄像头!!!");
@@ -489,9 +505,9 @@ public class GeoHazardMonitorTokenController {
                     respHeartbeatVo.setAlarmList(null);
                     respHeartbeatVo.setAlarmInfo(null);
                 }
-                heartbeatUtils.createHeartbeat(heartbeatVo.getTerminalCode(),twoMap);
+                heartbeatUtils.createHeartbeat(heartbeatVo.getTerminalCode(), twoMap);
                 jsonObject.put("resultCode", 1);
-                jsonObject.put("message", "成功");
+                jsonObject.put("message", "ok");
                 jsonObject.put("data", respHeartbeatVo);
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
             } else {
@@ -508,31 +524,37 @@ public class GeoHazardMonitorTokenController {
         }
 
     }
-    
-    
+
+    /**
+     * 司机忽略报警接口
+     *
+     * @param parameter
+     * @param request
+     * @return
+     */
     @PostMapping("/api/terminal/ignore")
-    public String terminalIgnore(@RequestParam("parameter") String parameter, HttpServletRequest request){
+    public String terminalIgnore(@RequestParam("parameter") String parameter, HttpServletRequest request) {
         String token = apiTokenUtils.getGeoHazardMonitorToken(request);
-        Map<String,Object> map=new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
         log.info("token:{}", token);
         log.info("parameter:{}", parameter);
         JSONObject jsonObject = new JSONObject();
         if (StringUtils.isNotEmpty(token)) {
             String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
             TerminalIgnoreVo terminalIgnoreVo = JSON.parseObject(s, TerminalIgnoreVo.class);
-            map.put("terminalCode",terminalIgnoreVo.getTerminalCode());
-            map.put("alarmId",terminalIgnoreVo.getAlarmId());
+            map.put("terminalCode", terminalIgnoreVo.getTerminalCode());
+            map.put("alarmId", terminalIgnoreVo.getAlarmId());
             LambdaQueryWrapper<MsgAlarm> wrapper = new LambdaQueryWrapper<>();
             wrapper.eq(MsgAlarm::getAlarmId, terminalIgnoreVo.getAlarmId());
             MsgAlarm msgAlarm = msgAlarmService.getOne(wrapper);
             if (ObjectUtils.isEmpty(msgAlarm)) {
-                map.put("isIgnore",1);
+                map.put("isIgnore", 1);
                 jsonObject.put("resultCode", 0);
                 jsonObject.put("message", "失败");
                 jsonObject.put("data", map);
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
             }
-            TerminalIgnoreAlarm terminalIgnoreAlarm=new TerminalIgnoreAlarm();
+            TerminalIgnoreAlarm terminalIgnoreAlarm = new TerminalIgnoreAlarm();
             terminalIgnoreAlarm.setAlarmId(terminalIgnoreVo.getAlarmId());
             terminalIgnoreAlarm.setTerminalCode(terminalIgnoreVo.getTerminalCode());
             terminalIgnoreAlarm.setIgnoreTime(new Date());
@@ -540,13 +562,13 @@ public class GeoHazardMonitorTokenController {
             terminalIgnoreAlarm.setUpdateBy(terminalIgnoreVo.getTerminalCode());
             boolean save = terminalIgnoreAlarmService.save(terminalIgnoreAlarm);
             if (save) {
-                ignoreUtils.createIgnore("HL"+terminalIgnoreAlarm.getTerminalCode(),terminalIgnoreAlarm.getAlarmId());
-                map.put("isIgnore",2);
+                ignoreUtils.createIgnore("HL" + terminalIgnoreAlarm.getTerminalCode(), terminalIgnoreAlarm.getAlarmId());
+                map.put("isIgnore", 2);
                 jsonObject.put("resultCode", 1);
-                jsonObject.put("message", "成功");
+                jsonObject.put("message", "ok");
                 jsonObject.put("data", map);
             } else {
-                map.put("isIgnore",3);
+                map.put("isIgnore", 3);
                 jsonObject.put("resultCode", 0);
                 jsonObject.put("message", "失败");
                 jsonObject.put("data", map);
@@ -560,12 +582,77 @@ public class GeoHazardMonitorTokenController {
         }
     }
 
+    /**
+     * 获取所有的相机列表接口定义
+     *
+     * @param parameter
+     * @param request
+     * @return
+     */
+    @PostMapping("/api/query/camera")
+    public String camera(@RequestParam("parameter") String parameter, HttpServletRequest request) {
+        String token = apiTokenUtils.getGeoHazardMonitorToken(request);
+        log.info("token:{}", token);
+        log.info("parameter:{}", parameter);
+        JSONObject jsonObject = new JSONObject();
+        if (StringUtils.isNotEmpty(token)) {
+            String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
+            CameraVo cameraVo = JSON.parseObject(s, CameraVo.class);
+            LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<>();
+            if (!ObjectUtils.isEmpty(cameraVo.getRailwayCode())) {
+                wrapper.eq(BaseCameraManagement::getRailwayCode, cameraVo.getRailwayCode());
+            }
+            if (!ObjectUtils.isEmpty(cameraVo.getLineDir())) {
+                wrapper.eq(BaseCameraManagement::getLineDir, cameraVo.getLineDir());
+            }
+            List<BaseCameraManagement> list = baseCameraManagementService.list(wrapper);
+            for (BaseCameraManagement baseCameraManagement : list) {
+                LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
+                if (!ObjectUtils.isEmpty(baseCameraManagement.getRailwayCode())) {
+                    queryWrapper.eq(BaseRailwayManagement::getRailwayCode, baseCameraManagement.getRailwayCode());
+                }
+                BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
+                baseCameraManagement.setRailwayName(baseRailwayManagement.getRailwayName());
+            }
+            list.sort(new Comparator<BaseCameraManagement>() {
+                @Override
+                public int compare(BaseCameraManagement o1, BaseCameraManagement o2) {
+                    String name1 = ChineseToPingyin.convertHanziToPinyin(o1.getRailwayName());
+                    String substring1 = name1.substring(0, 1);
+                    String name2 = ChineseToPingyin.convertHanziToPinyin(o2.getRailwayName());
+                    String substring2 = name2.substring(0, 1);
+                    int i = substring1.compareTo(substring2);
+                    if (i == 0) {
+                        return -o1.getInstallMile() - o2.getInstallMile();
+                    } else {
+                        return i;
+                    }
+                }
+            });
+            List<RespCameraVo> cameraVos=new ArrayList<>();
+            for (BaseCameraManagement baseCameraManagement : list) {
+                RespCameraVo respCameraVo=new RespCameraVo();
+                BeanUtils.copyProperties(baseCameraManagement, respCameraVo);
+                respCameraVo.setRailwayCame(baseCameraManagement.getRailwayName());
+                cameraVos.add(respCameraVo);
+            }
+            
+            jsonObject.put("resultCode", 1);
+            jsonObject.put("message", "ok");
+            jsonObject.put("data", cameraVos);
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+        }else {
+            jsonObject.put("resultCode", 2);
+            jsonObject.put("message", "失败");
+            jsonObject.put("data", "token验证失败");
+            return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
+        }
+    }
+
+
     public static void main(String[] args) {
         JSONObject res = new JSONObject();
-        res.put("alarmId", "42010001541320001115");
-        res.put("releaseTime", 1681200512L);
-        res.put("releaseContent", "已处理");
-        res.put("operator", 1);
+        res.put("terminalCode", "111");
         String s = SM4Utils.encryptData_ECB(JSONObject.toJSONString(res), "4370780c9a8c43e5");
         System.out.println(s);
     }