Pu Zhibing
2025-03-03 042ab498ee53e8f3c7cecf52f733e8c1c162dfb5
guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/videoGateway/VideoGateway.java
@@ -9,6 +9,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.util.videoGateway.model.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@@ -111,7 +112,7 @@
      log.info("【获取车辆列表】请求参数:" + JSON.toJSONString(body));
      post.body(JSON.toJSONString(body));
      HttpResponse execute = post.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         accountLogin = null;
         if(num == 3){
@@ -165,7 +166,7 @@
      log.info("【获取船舶列表】请求参数:" + JSON.toJSONString(body));
      post.body(JSON.toJSONString(body));
      HttpResponse execute = post.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
@@ -206,7 +207,7 @@
      post.body("{}");
      log.info("【2018年协议车辆在线】请求参数:" + post.getUrl());
      HttpResponse execute = post.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
@@ -246,7 +247,7 @@
      get.header("token", accountLogin.getToken());
      log.info("【2023年协议车辆在线】请求参数:" + get.getUrl());
      HttpResponse execute = get.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
@@ -286,16 +287,17 @@
      HttpRequest post = HttpUtil.createPost("https://zhyn.cg.gz.gov.cn/map/web/vehicleCtrl/" + terminalId + "/cameraShot");
      post.header("operate-terminal", "4");
      post.header("token", accountLogin.getToken());
      log.info("【2018年协议发送拍摄指令接口】请求地址:" + post.getUrl());
      Map<String, Object> body = new HashMap<>();
      body.put("channelId", channelId);
      log.info("【2018年协议发送拍摄指令接口】请求参数:" + JSON.toJSONString(body));
      post.body(JSON.toJSONString(body));
      HttpResponse execute = post.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
            return null;
            throw new RuntimeException("token失效,请联系管理员");
         }
         num++;
         accountLogin = null;
@@ -306,10 +308,24 @@
      Integer code = result.getInteger("code");
      if(0 != code){
         log.error(result.getString("msg"));
         return null;
         throw new RuntimeException("【2018年协议发送拍摄指令接口】失败:" + execute.body());
      }
      //返回文件ID
      return result.getString("data");
      String data = result.getString("data");
      if(ToolUtil.isEmpty(data)){
         if(num == 12){
            log.error(result.getString("msg"));
            throw new RuntimeException("【2018年协议发送拍摄指令接口】12次(1分钟)失败:" + execute.body());
         }
         num++;
         try {
            Thread.sleep(5000);
         } catch (InterruptedException e) {
            throw new RuntimeException(e);
         }
         return cameraShot2018(terminalId, channelId, num);
      }
      return data;
   }
   
   
@@ -328,14 +344,13 @@
      HttpRequest get = HttpUtil.createGet("https://zhyn.cg.gz.gov.cn/api/cws-business/biz-device-send-records/v1/cameraShot?vehicleId=" + vehicleId + "&vehicleType=" + vehicleType + "&terminalId=" + terminalId + "&channelId=" + channelId);
      get.header("operate-terminal", "4");
      get.header("token", accountLogin.getToken());
      Map<String, Object> body = new HashMap<>();
      log.info("【2023年协议发送拍摄指令接口】请求参数:" + get.getUrl());
      HttpResponse execute = get.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
            return null;
            throw new RuntimeException("token失效,请联系管理员");
         }
         num++;
         accountLogin = null;
@@ -346,10 +361,24 @@
      Integer code = result.getInteger("code");
      if(0 != code){
         log.error(result.getString("msg"));
         return null;
         throw new RuntimeException("【2023年协议发送拍摄指令接口】失败:" + execute.body());
      }
      //返回文件ID
      return result.getString("data");
      String data = result.getString("data");
      if(ToolUtil.isEmpty(data)){
         if(num == 12){
            log.error(result.getString("msg"));
            throw new RuntimeException("【2023年协议发送拍摄指令接口】12次(1分钟)失败:" + execute.body());
         }
         num++;
         try {
            Thread.sleep(5000);
         } catch (InterruptedException e) {
            throw new RuntimeException(e);
         }
         return cameraShot2023(vehicleId, vehicleType, terminalId, channelId, num);
      }
      return data;
   }
   
   
@@ -368,11 +397,11 @@
      get.header("token", accountLogin.getToken());
      log.info("【2018年协议车辆获取拍摄图片】请求参数:" + get.getUrl());
      HttpResponse execute = get.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
            return null;
            throw new RuntimeException("token失效,请联系管理员");
         }
         num++;
         accountLogin = null;
@@ -383,13 +412,24 @@
      Integer code = result.getInteger("code");
      if(0 != code){
         log.error(result.getString("msg"));
         return null;
         throw new RuntimeException("【2018年协议车辆获取拍摄图片】失败:" + execute.body());
      }
      //图片地址
      String data = result.getString("data");
      if(null == data){
         return null;
      if(ToolUtil.isEmpty(data)){
         if(num == 12){
            log.error(result.getString("msg"));
            throw new RuntimeException("【2018年协议车辆获取拍摄图片】12次(1分钟)失败:" + execute.body());
         }
         num++;
         try {
            Thread.sleep(5000);
         } catch (InterruptedException e) {
            throw new RuntimeException(e);
         }
         return getCameraShotByFileId2018(terminalId, fileId, num);
      }
      data = data.replaceAll(";", "");
      return "https://zhyn-pic.cg.gz.gov.cn" + data;
   }
   
@@ -408,11 +448,11 @@
      get.header("token", accountLogin.getToken());
      log.info("【2023年协议车辆获取拍摄图片】请求参数:" + get.getUrl());
      HttpResponse execute = get.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
            return null;
            throw new RuntimeException("token失效,请联系管理员");
         }
         num++;
         accountLogin = null;
@@ -423,13 +463,24 @@
      Integer code = result.getInteger("code");
      if(0 != code){
         log.error(result.getString("msg"));
         return null;
         throw new RuntimeException("【2023年协议车辆获取拍摄图片】失败:" + execute.body());
      }
      //图片地址
      String data = result.getString("data");
      if(null == data){
         return null;
      if(ToolUtil.isEmpty(data)){
         if(num == 12){
            log.error(result.getString("msg"));
            throw new RuntimeException("【2023年协议车辆获取拍摄图片】12次(1分钟)失败:" + execute.body());
         }
         num++;
         try {
            Thread.sleep(5000);
         } catch (InterruptedException e) {
            throw new RuntimeException(e);
         }
         return getCameraShotByFileId2023(fileId, num);
      }
      data = data.replaceAll(";", "");
      return "https://zhyn-pic.cg.gz.gov.cn" + data;
   }
   
@@ -457,7 +508,7 @@
      log.info("请求参数:" + JSON.toJSONString(body));
      post.body(JSON.toJSONString(body));
      HttpResponse execute = post.execute();
      if(401 == execute.getStatus()){
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
@@ -484,6 +535,49 @@
   }
   
   
   /**
    * 验证当前位置是否在围栏内
    * @param longitude
    * @param latitude
    * @param num
    * @return
    */
   public static boolean getFenceByPoint(String longitude, String latitude, int num) {
      if(null == accountLogin){
         accountLogin();
      }
      HttpRequest post = HttpUtil.createPost("https://zhyn.cg.gz.gov.cn/map/web/getFenceByPoint");
      post.header("operate-terminal", "4");
      post.header("token", accountLogin.getToken());
      Map<String, Object> body = new HashMap<>();
      body.put("longitude", longitude);
      body.put("latitude", latitude);
      body.put("type", "1");
      log.info("【验证当前位置是否在围栏内】请求参数:" + JSON.toJSONString(body));
      post.body(JSON.toJSONString(body));
      HttpResponse execute = post.execute();
      if(401 == execute.getStatus() || 403 == execute.getStatus()){
         log.error("token失效,重新登录");
         if(num == 3){
            log.error("token失效,请联系管理员");
            throw new RuntimeException("token失效,请联系管理员");
         }
         num++;
         accountLogin = null;
         return getFenceByPoint(longitude, latitude, num);
      }
      log.info("【验证当前位置是否在围栏内】返回结果:" + execute.body());
      JSONObject result = JSON.parseObject(execute.body());
      Integer code = result.getInteger("code");
      if(0 != code){
         log.error(result.getString("msg"));
         throw new RuntimeException("【验证当前位置是否在围栏内】失败:" + execute.body());
      }
      Integer data = result.getInteger("data");
      return 1 == data;
   }
   
   public static void main(String[] args) {
//      SM4 sm4 = SmUtil.sm4("EP77VsBj9yeOKpcO".getBytes());
@@ -499,8 +593,8 @@
//      locationRealTimeInfoCache(0);
      
      
      List<Vehicle> 粤AFX998 = VideoGateway.getVehicleList("粤AFX998", null, null, 0);
      System.err.println(粤AFX998);
      List<VehicleOnline> vehicleOnlines = queryRuntimeInfoByCache(0);
      System.err.println(vehicleOnlines);
   }
   
//   public static void main(String[] args) {