jiangping
2024-12-10 3bc8c584155ce04d1ba04496a4d94d82174df488
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -1,29 +1,25 @@
package com.doumee.core.haikang.model;
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.SpringContextUtil;
import com.doumee.core.haikang.model.param.request.CarPictureRequest;
import com.doumee.core.haikang.model.param.request.FacePictureCheckRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.service.business.InterfaceLogService;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.tomcat.util.bcel.Const;
import org.yaml.snakeyaml.scanner.Constant;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Slf4j
@@ -33,11 +29,12 @@
   public static void main(String[] args) throws Exception {
      ArtemisConfig.host = "10.50.60.253";
      ArtemisConfig.appKey = "27786546";
      ArtemisConfig.appSecret = "kC5dohxU7CvEqgGhVt4R";
      ArtemisConfig.host = "10.50.250.253:1443";
      ArtemisConfig.appKey = "23154099";
      ArtemisConfig.appSecret = "88wFsg3xfn7o8QMsWEO2";
      HKConstants.https = "https://";
      CarPictureRequest param = new CarPictureRequest();
   /*   CarPictureRequest param = new CarPictureRequest();
      param.setPicUri( "HKIMG=/pic?0dd400=4c40ip-feo831-933*9o4=3=2109*2l0001893117*0t7=6*2ps==014b*=787d*069d70361-95754d-9*l108od0b192=001");
      param.setAswSyscode("3fa3e5e3-db3e-41ba-97fc-39c948778dfe");
      InputStream is = HKService.getCarPicture(param);
@@ -56,11 +53,15 @@
         outStream.close(); //写入数据
      } catch ( Exception e) {
         throw new RuntimeException(e);
      }
      }*/
      FacePictureCheckRequest param = new FacePictureCheckRequest();
      param.setFacePicUrl("http://10.50.250.253:8088/file/member/20241016/d0cded86-a55d-43be-bc01-4f628a1400cf.jpg");
      System.out.println(facePictureCheck(JSONObject.toJSONString(param)));
   }
   public static InterfaceLogService interfaceLogService = null;
   private static void saveInterfaceLog(String s, String result,Map<String, String> path) {
   private static void saveInterfaceLog(String s, String result,Map<String, String> path,String name) {
//      InterfaceLogService bean = SpringContextUtil.getBean(InterfaceLogService.class);
      if(interfaceLogService !=null){
         InterfaceLog hkMonitoryLogDO=new InterfaceLog();
@@ -69,7 +70,7 @@
         hkMonitoryLogDO.setIsdeleted(0);
         hkMonitoryLogDO.setRequest(s);
         hkMonitoryLogDO.setRepose(result);
         hkMonitoryLogDO.setName(path.get(HKConstants.https));
         hkMonitoryLogDO.setName("【安防平台】"+name);
         hkMonitoryLogDO.setUrl(HKConstants.https + ArtemisConfig.host+path.get(HKConstants.https));
         interfaceLogService.create(hkMonitoryLogDO);
      }
@@ -78,9 +79,9 @@
   private static Map<String, String> getPath(String str) {
      final String getCamsApi = HKConstants.ARTEMIS_PATH  + str;
      Map<String, String> path = new HashMap<String, String>(2) {
         {
            put(HKConstants.https, getCamsApi);// 根据现场环境部署确认是http还是https
         }
      {
         put(HKConstants.https, getCamsApi);// 根据现场环境部署确认是http还是https
      }
      };
      return  path;
   }
@@ -237,7 +238,7 @@
    */
   public static InputStream getFaceInputStream(String body)  throws  Exception{
      Map<String, String> path = getPath(HKConstants.InterfacePath.facePicture);
      Map<String, String> path = getPath(HKConstants.InterfacePath.facePicture[0]);
      //参数根据接口实际情况设置
      HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
      if (200==resp.getStatusLine().getStatusCode()) {
@@ -245,6 +246,7 @@
         InputStream in = entity.getContent();
         return  in;
      }else{
         log.error("人脸下载出错");
         throw  new Exception("人脸下载出错");
      }
   }
@@ -254,7 +256,7 @@
    * @return
    */
   public static InputStream getVisitPicture(String body)  throws  Exception{
      Map<String, String> path = getPath(HKConstants.InterfacePath.visitPicture);
      Map<String, String> path = getPath(HKConstants.InterfacePath.visitPicture[0]);
      //参数根据接口实际情况设置
      HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
      if (200==resp.getStatusLine().getStatusCode()) {
@@ -272,7 +274,7 @@
    */
   public static InputStream getDevicePicture(String body)  throws  Exception{
      Map<String, String> path = getPath(HKConstants.InterfacePath.devicePicture);
      Map<String, String> path = getPath(HKConstants.InterfacePath.devicePicture[0]);
      //参数根据接口实际情况设置
      HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
      if (200==resp.getStatusLine().getStatusCode()) {
@@ -291,7 +293,7 @@
    */
   public static InputStream getCarPicture(String body)  throws  Exception{
      Map<String, String> path = getPath(HKConstants.InterfacePath.carPicture);
      Map<String, String> path = getPath(HKConstants.InterfacePath.carPicture[0]);
      //参数根据接口实际情况设置
      HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null);
      if (200==resp.getStatusLine().getStatusCode()) {
@@ -301,6 +303,14 @@
      }else{
         throw  new Exception("查询车辆抓拍图片下载出错");
      }
   }
   /**
    * 分页获取待办列表
    * @param body
    * @return
    */
   public static String getTodoListPage(Map<String, String> body)  throws  Exception{
      return startDoGetStringArtemis(HKConstants.InterfacePath.getTodoListPage,body);
   }
   /**
    *   获取门禁点列表
@@ -324,7 +334,7 @@
    * @return
    */
   public static String acsDeviceTimeRangeList(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.acsDeviceList,body);
      return startDoPostStringArtemis(HKConstants.InterfacePath.acsDeviceTimeRangeList,body);
   }
   /**
    *   访客预约
@@ -333,6 +343,22 @@
    */
   public static String visitAppiontment(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.visitAppiontment,body);
   }
   /**
    *   访客预约
    * @param body
    * @return
    */
   public static String iccmAppointment(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.iccmAppointment,body);
   }
   /**
    *   访客免登记预约
    * @param body
    * @return
    */
   public static String iccmAppointmentMDJ(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.iccmAppointmentMDJ,body);
   }
   /**
    *   访客免登记预约
@@ -352,12 +378,44 @@
      return  startDoPostStringArtemis(HKConstants.InterfacePath.visitCancel,body);
   }
   public static String startDoPostStringArtemis(String pathStr,String body){
      Map<String, String> path = getPath(pathStr);
   public static String startDoPostStringArtemis(String[] pathStr,String body ){
      Map<String, String> path = getPath(pathStr[0]);
      Map<String, String> header = new HashMap<>();
      header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
      String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", header);// post请求application/json类型参数
      saveInterfaceLog(body,result,path);
      saveInterfaceLog(body,result,path,pathStr[1]);
      return result;
   }
   public static String startDoGetStringArtemis(String[] pathStr,Map<String,String> body ){
      Map<String, String> path = getPath(pathStr[0]);
      Map<String, String> header = new HashMap<>();
      header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
      String result = ArtemisHttpUtil.doGetArtemis(path, body, null, null,  header);
      saveInterfaceLog(JSONObject.toJSONString(body),result,path,pathStr[1]);
      return result;
   }
   public static String startDoGetStringArtemisJson(String[] pathStr,Map<String,String> body ){
      Map<String, String> path = getPath(pathStr[0]);
      Map<String, String> header = new HashMap<>();
      String result = ArtemisHttpUtil.doGetArtemis(path, body, null, "application/json",  header);
      saveInterfaceLog(JSONObject.toJSONString(body),result,path,pathStr[1]);
      return result;
   }
   public static String startDoPostStringArtemis(String[] pathStr,String param,String body ){
      Map<String, String> path = getPath(pathStr[0]+StringUtils.defaultString(param,""));
      Map<String, String> header = new HashMap<>();
      header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
      String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", header);// post请求application/json类型参数
      saveInterfaceLog(body,result,path,pathStr[1]);
      return result;
   }
   public static String startDoPostStringArtemis(String[] pathStr,Map<String, String> querys,Map<String, String> header,String body){
      Map<String, String> path = getPath(pathStr[0]);
      header.put("tagId", UUID.randomUUID().toString().replace("-", ""));
      String result = ArtemisHttpUtil.doPostStringArtemis(path, body, querys, null, "application/json", header);// post请求application/json类型参数
      saveInterfaceLog(body,result,path,pathStr[1]);
      return result;
   }
@@ -495,6 +553,14 @@
   }
   /**
    *   获取全量组织信息
    * @param body
    * @return
    */
   public static String orgAllList(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.orgAllList,body);
   }
   /**
    *   获取访客预约记录列表
    * @param body
    * @return
@@ -502,13 +568,84 @@
   public static String appointmentRecords(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.appointmentRecords,body);
   }
   /**
    *   获取全量组织列表
    *   获取访客预约记录列表 iccm
    * @param body
    * @return
    */
   public static String orgAllList(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.orgAllList,body);
   public static String iccmAppointmentRecords(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.iccmAppointmentRecords,body);
   }
   /**
    *   根据微信公众号信息获取AccessToken
    * @return
    */
   public static String wxAccessToken(HashMap<String,String> params ) {
//      String[] wxAccessToken= new String[2];
//      String url = HKConstants.InterfacePath.wxAccessToken[0]+"?tagId="+tagId+"&configId="+configId;
//      String t = HKConstants.InterfacePath.wxAccessToken[1];
//      wxAccessToken[0] = url;
//      wxAccessToken[1] = t;
      return startDoGetStringArtemisJson(HKConstants.InterfacePath.wxAccessToken,params);
   }
   /**
    *   根据配置微信公众号编号查询微信公众号信息
    * @param body
    * @return
    */
   public static String getWxConfig(Map<String,String>  body) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.getWxConfig,body);
   }
   /**
    *   根据配置微信公众号编号查询微信公众号信息
    * @param body
    * @return
    */
   public static String nhEventPageList(Map<String,String> body) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.nhEventPageList,body);
   }
   /**
    *   查询消防设备部件状态
    * @param body
    * @return
    */
   public static String fireDeviceStatusSearch(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fireDeviceStatusSearch,body);
   }
   /**
    * 分页查询消防传感器部件状态
    * @param body
    * @return
    */
   public static String sensorStatusSearch(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.sensorStatusSearch,body);
   }
   /**
    * 分页查询设备下的所有报警记录
    * @param body
    * @return
    */
   public static String findDeviceAlarmPage(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.findDeviceAlarmPage,body);
   }
   /**
    *   询消防设备列表
    * @param body
    * @return
    */
   public static String fireChannelSearch(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fireChannelSearch,body);
   }
   /**
    *   询消防设备列表
    * @param body
    * @return
    */
   public static String fireDeviceSearch(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fireDeviceSearch,body);
   }
   /**
    *   获取全量用户列表
@@ -583,6 +720,273 @@
   public static String acsDeviceStatus(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.acsDeviceStatus,body);
   }
   /**
    * 分页获取广播点
    * @param body
    * @return
    */
   public static String fetchAudioChannel(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fetchAudioChannel,body);
   }
   /**
    * 分页获取广播设备列表
    * @param body
    * @return
    */
   public static String fetchAudioDevice(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fetchAudioDevice,body);
   }
   /**
    * 根据设备信息获取广播点
    * @param body
    * @return
    */
   public static String fetchAudioChannelByDevice(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fetchAudioChannelByDevice,body);
   }
   /**
    * 获取全部月台信息
    * @param body
    * @return
    */
   public static String platformsList(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.platformsList,body);
   }
   /**
    * 获取消防传感器列表
    * @param body
    * @return
    */
   public static String pageFireChannel(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.pageFireChannel,body);
   }
   /**
    * 查询消防传感器部件状态v2
    * @param body
    * @return
    */
   public static String pageSensorStatus(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.pageSensorStatus,body);
   }
   /**
    * 安防看板-今日告警事件-根据eventType字段3
    * @param body
    * @return
    */
   public static String ruleEventSearch(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.ruleEventSearch,body);
   }
   /**
    * 安防看板-园区安防设备-各类型设备状态数据列表
    * @param body
    * @return
    */
   public static String getSecureDevStatusList(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.getSecureDevStatusList,body);
   }
   /**
    * 能耗看板-6按月查询近12个月的用电总量数据
    * @param body
    * @return
    */
   public static String energyTrend(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.energyTrend,body);
   }
   /**
    * 消防维保统计
    * @param body
    * @return
    */
   public static String fireStatistic(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fireStatistic,body);
   }
   /**
    * 消防维保每月新增统计
    * @param body
    * @return
    */
   public static String fireStatisticMonth(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.fireStatisticMonth,body);
   }
   /**
    * 消防看板-消防设备在离线1
    * @param body
    * @return
    */
   public static String getFireDevStatusTotal(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.getFireDevStatusTotal,body);
   }
   /**
    * 消防看板-各类型设备在线率2
    * @param body
    * @return
    */
   public static String getFireDevStatusList(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.getFireDevStatusList,body);
   }
   /**
    *消防看板-4报警信息统计
    * @param body
    * @return
    */
   public static String findAlarmBaseDataStatistic(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.findAlarmBaseDataStatistic,body);
   }
   /**
    *安防看板-- b
    * @param body
    * @return
    */
   public static String findHomeAlarmInfoPage(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.findHomeAlarmInfoPage,body);
   }
   /**
    *保存用户及openId绑定信息微信公众号
    * @param body
    * @return
    */
   public static String userOpenidSave(String body) {
      Map<String,String> header = new HashMap<>();
      header.put("userId","admin");
      return startDoPostStringArtemis(HKConstants.InterfacePath.userOpenidSave,null,header,body);
   }
   /**
    *分页查询设备监测历史数据
    * @param body
    * @return
    */
   public static String minitorDataSearch(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.minitorDataSearch,body);
   }
   /**
    * 统计园区总体的安防设备数量,在线数、在线率、离线数、离线率
    * @param body
    * @return
    */
   public static String getSecureDevStatusTotal(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.getSecureDevStatusTotal,body);
   }
   /**
    * 统安防看板--园区实时车数量4
    * @return
    */
   public static String getParkingStatistics() {
      return startDoGetStringArtemis(HKConstants.InterfacePath.getParkingStatistics,null);
   }
   /**
    * 能耗看板-1.获取本月用能总量-自然月
    * @return
    */
   public static String getCurrentMonthDataByMeterType(Map<String,String>   powerType) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.getCurrentMonthDataByMeterType,powerType);
   }
   /**
    * 能耗看板-2.获取区域用能前N位
    * @return
    */
   public static String regionTopPower(Map<String,String>   params) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.regionTopPower,params);
   }
   /**
    * 能耗看板-3.获取各区域用能及总能耗
    * @return
    */
   public static String regionEnergyList(Map<String,String>   params) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.regionEnergyList,params);
   }
   /**
    * 能耗看板-4.获取上月用能费用,一天刷新,凌晨某个点刷
    * @return
    */
   public static String lastMonthFeeByMeterType(Map<String,String>   params) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.lastMonthFeeByMeterType,params);
   }
   /**
    * 能耗看板-5.园区实时负荷曲线
    * @return
    */
   public static String energyTodayLoadData( ) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.energyTodayLoadData,null);
   }
   /**
    * 获取月台状态
    * @return
    */
   public static String platformStatus(String param) {
      if(StringUtils.isNotBlank(param)){
         return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus,"?platformIds="+param,null);
      }else{
         return startDoPostStringArtemis(HKConstants.InterfacePath.platformStatus,null);
      }
   }
   /**
    * 获取菜单
    * @param body
    * @return
    */
   public static String getHkMenu(Map<String,String> body) {
      return startDoGetStringArtemis(HKConstants.InterfacePath.getMenus,body);
   }
   /**
    * 分页获取区域列表
    * @param body
    * @return
    */
   public static String pageRegions(Map<String,String> header,String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.pageRegions,null,header,body);
   }
   /**
    * 分页获取监控点资源
    * @param body
    * @return
    */
   public static String pageCameras(Map<String,String> header,String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.pageCameras,null,header,body);
   }
   /**
    * 获取监控点预览取流URL
    * @param body
    * @return
    */
   public static String cameraPreviewURLs(Map<String,String> header,String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.cameraPreviewURLs,null,header,body);
   }
   /**
    * 发送短信验证码
    * @param body
    * @return
    */
   public static String sendSms(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.sendSms,body);
   }
   /**
    * 获取月台组件配置的LED设备清单
    * @param body
    * @return
    */
   public static String ledRecords(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.ledRecords,body);
   }
   /**
    * 用于设置广播的自定播放和停止
    * @param body
    * @return
    */
   public static String customBroadcast(String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.customBroadcast,body);
   }
   /**
    * 发送消息给LED
    * @param body
    * @return
    */
   public static String transparentchannel(Map<String,String> header,String body) {
      return startDoPostStringArtemis(HKConstants.InterfacePath.transparentchannel,null,header,body);
   }
   /**
    * 查询场内车停车信息
@@ -610,4 +1014,9 @@
      return startDoPostStringArtemis(HKConstants.InterfacePath.applyST,body);
   }
   public static String getMenuUrl(String componentId,String menuId, String token) {
      String url = HKConstants.InterfacePath.goMenuUrl[0];
      url = url.replace("${componentId}",componentId).replace("${menuId}", menuId).replace("${token}",token);
      return  url;
   }
}