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.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.*; @Slf4j public class HKTools { // private static final Logger logger = LoggerFactory.getLogger(HKUtil.class); public static void main(String[] args) throws Exception { ArtemisConfig.host = "10.50.60.253"; ArtemisConfig.appKey = "27786546"; ArtemisConfig.appSecret = "kC5dohxU7CvEqgGhVt4R"; HKConstants.https = "https://"; 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); File imageFile = new File("D:\\visit\\111"+UUID.randomUUID().toString()+".png"); try { byte[] bytes = new byte[1024]; FileOutputStream outStream = new FileOutputStream(imageFile); int index; while ((index = is.read(bytes)) != -1) { outStream.write(bytes, 0, index); outStream.flush(); } // outStream = new FileOutputStream(imageFile); // outStream.write(bytes); //关闭输出流 outStream.close(); //写入数据 } catch ( Exception e) { throw new RuntimeException(e); } } public static InterfaceLogService interfaceLogService = null; private static void saveInterfaceLog(String s, String result,Map path,String name) { // InterfaceLogService bean = SpringContextUtil.getBean(InterfaceLogService.class); if(interfaceLogService !=null){ InterfaceLog hkMonitoryLogDO=new InterfaceLog(); hkMonitoryLogDO.setType(0); hkMonitoryLogDO.setCreateDate(new Date()); hkMonitoryLogDO.setIsdeleted(0); hkMonitoryLogDO.setRequest(s); hkMonitoryLogDO.setRepose(result); hkMonitoryLogDO.setName("【安防平台】"+name); hkMonitoryLogDO.setUrl(HKConstants.https + ArtemisConfig.host+path.get(HKConstants.https)); interfaceLogService.create(hkMonitoryLogDO); } } private static Map getPath(String str) { final String getCamsApi = HKConstants.ARTEMIS_PATH + str; Map path = new HashMap(2) { { put(HKConstants.https, getCamsApi);// 根据现场环境部署确认是http还是https } }; return path; } /** * 获取门禁时间数据集合 * @return */ public static String getRootOrg() { return startDoPostStringArtemis(HKConstants.InterfacePath.rootOrg,null); } /** * 更新组织信息 * @param body * @return */ public static String editOrg(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.editOrg,body); } /** * 新增组织信息 * @param body * @return */ public static String addBatchOrg(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.addBatchOrg,body); } /** * 删除组织信息 * @param body * @return */ public static String delOrg(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.delBatchOrg,body); } /** * 新增人员信息 * @param body * @return */ public static String addUser(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.addUser,body); } /** * 批量新增人员信息 * @param body * @return */ public static String addBatchUser(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.addBatchUser,body); } /** * 批量删除人员信息 * @param body * @return */ public static String delBatchUser(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.delBatchUser,body); } /** * 修改人员信息 * @param body * @return */ public static String editUser(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.editUser,body); } /** * 添加人脸信息 * @param body * @return */ public static String addFace(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.addFace,body); } /** * 编辑人脸信息 * @param body * @return */ public static String editFace(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.editFace,body); } /** * 删除人脸信息 * @param body * @return */ public static String delFace(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.delFace,body); } /** * 全量获取车库信息 * @param body * @return */ public static String parkList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.getParkList,body); } /** * 根据车库编码查询出入口列表 * @param body * @return */ public static String entranceList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.getEntranceList,body); } /** * 车辆预约 * @param body * @return */ public static String parkAddition(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.parkAddition,body); } /** * 车辆取消预约 * @param body * @return */ public static String parkDeletion(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.parkDeletion,body); } /** * 固定车辆充值(包期) * @param body * @return */ public static String carChargeAddtion(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.carChargeAddtion,body); } /** * 固定车辆取消包期 * @param body * @return */ public static String carChargeDeletion(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.carChargeDeletion,body); } /** * 获取人脸数据(提取人脸访问地址) * @param body * @return */ public static InputStream getFaceInputStream(String body) throws Exception{ Map path = getPath(HKConstants.InterfacePath.facePicture[0]); //参数根据接口实际情况设置 HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null); if (200==resp.getStatusLine().getStatusCode()) { HttpEntity entity = resp.getEntity(); InputStream in = entity.getContent(); return in; }else{ throw new Exception("人脸下载出错"); } } /** * 获取访客记录中的图片 * @param body * @return */ public static InputStream getVisitPicture(String body) throws Exception{ Map path = getPath(HKConstants.InterfacePath.visitPicture[0]); //参数根据接口实际情况设置 HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null); if (200==resp.getStatusLine().getStatusCode()) { HttpEntity entity = resp.getEntity(); InputStream in = entity.getContent(); return in; }else{ throw new Exception("获取访客记录中的图片下载出错"); } } /** * 获取门禁事件的图片 * @param body * @return */ public static InputStream getDevicePicture(String body) throws Exception{ Map path = getPath(HKConstants.InterfacePath.devicePicture[0]); //参数根据接口实际情况设置 HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null); if (200==resp.getStatusLine().getStatusCode()) { HttpEntity entity = resp.getEntity(); InputStream in = entity.getContent(); return in; }else{ throw new Exception("获取门禁事件的图片下载出错"); } } /** * 查询车辆抓拍图片 * @param body * @return */ public static InputStream getCarPicture(String body) throws Exception{ Map path = getPath(HKConstants.InterfacePath.carPicture[0]); //参数根据接口实际情况设置 HttpResponse resp = ArtemisHttpUtil.doPostStringImgArtemis( path, body, null, null,"application/json",null); if (200==resp.getStatusLine().getStatusCode()) { HttpEntity entity = resp.getEntity(); InputStream in = entity.getContent(); return in; }else{ throw new Exception("查询车辆抓拍图片下载出错"); } } /** * 获取门禁点列表 * @param body * @return */ public static String doorSearch(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.doorSearch,body); } /** * 获取门禁设备列表 * @param body * @return */ public static String acsDeviceList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.acsDeviceList,body); } /** * 增量获取门禁设备列表 * @param body * @return */ public static String acsDeviceTimeRangeList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.acsDeviceTimeRangeList,body); } /** * 访客预约 * @param body * @return */ 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); } /** * 访客免登记预约 * @param body * @return */ public static String visitAppiontmentMDJ(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.visitAppiontmentMDJ,body); } /** * 取消访客预约 * @param body * @return */ public static String visitCancel(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.visitCancel,body); } public static String startDoPostStringArtemis(String[] pathStr,String body ){ Map path = getPath(pathStr[0]); Map 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,String param,String body ){ Map path = getPath(pathStr[0]+StringUtils.defaultString(param,"")); Map 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 querys,Map header,String body){ Map 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; } /** * 签离访客预约 * @param body * @return */ public static String visitOut(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.visitOut,body); } /** * 访客权限组 * @param body * @return */ public static String privilegeGroup(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.privilegeGroup,body); } public static String privilegIccmeGroup(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.privilegIccmeGroup,body); } /** * 事件订阅 * @param body * @return */ public static String eventSub(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.eventSub,body); } /** * 取消事件订阅 * @param body * @return */ public static String cancelEventSub(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.cancelEventSub,body); } /** * 创建一卡通权限下载任务 * @param body * @return */ public static String taskAddition(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.taskAddition,body); } /** * 查询一卡通权限查询设备通道的人员权限下载详情总数v2 * @param body * @return */ public static String taskProgress(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.taskProgress,body); } /** * 查询一卡通权限下载任务进度 * @param body * @return */ public static String taskProgressNum(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.taskProgressNum,body); } /** * 一卡通权限下载任务中添加数据_根据人员与设备通道指定下载 * @param body * @return */ public static String taskDataAddition(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.taskDataAddition,body); } /** * 一卡通开始下载任务 * @param body * @return */ public static String taskStart(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.taskStart,body); } /** * 查询权限条目列表 * @param body * @return */ public static String authItemList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.authItemList,body); } /** * 批量开卡 * @param body * @return */ public static String cardBingding(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.cardBingding,body); } /** * 退卡 * @param body * @return */ public static String cardDeletion(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.cardDeletion,body); } /** * 批量挂失 * @param body * @return */ public static String cardLoss(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.cardLoss,body); } /** * 批量解挂 * @param body * @return */ public static String cardUnloss(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.cardUnloss,body); } /** * 查询设备通道的人员权限下载详情 * @param body * @return */ public static String taskPersoDetail(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.taskPersoDetail,body); } /** * 获取访客预约记录列表 * @param body * @return */ public static String visitingRecords(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.visitingRecords,body); } /** * 获取访客预约记录列表 * @param body * @return */ public static String appointmentRecords(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.appointmentRecords,body); } /** * 获取访客预约记录列表 iccm * @param body * @return */ public static String iccmAppointmentRecords(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.iccmAppointmentRecords,body); } /** * 获取全量组织列表 * @param body * @return */ public static String orgAllList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.orgAllList,body); } /** * 获取全量用户列表 * @param body * @return */ public static String userAllList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.userAllList,body); } /** * 获取全量用户列表2(根据条件分页查询) * @param body * @return */ public static String personList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.personList,body); } /** * 增量获取组织列表 * @param body * @return */ public static String orgTimeRangeList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.orgTimeRangeList,body); } /** * 增量获取用户列表 * @param body * @return */ public static String userTimeRangeList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.userTimeRangeList,body); } /** * 增量获取车辆列表 * @param body * @return */ public static String vehicleTimeRangeList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.vehicleTimeRangeList,body); } /** * 全量获取车辆列表 * @param body * @return */ public static String vehicleList(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.vehicleList,body); } /** * 停车场过车记录查询 * @param body * @return */ public static String parkCrossRecords(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.parkCrossRecords,body); } /** * 人脸评分 * @param body * @return */ public static String facePictureCheck(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.facePictureCheck,body); } /** * 获取门禁设备在线状态 * @param body * @return */ 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); } /** * 获取月台状态 * @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); } } /** * 获取月台组件配置的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 header,String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.transparentchannel,null,header,body); } /** * 查询场内车停车信息 * @param body * @return */ public static String tempCarInRecords(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.tempCarInRecords,body); } /** * 根据用户标识获取客户端TGC接口 * @param body * @return */ public static String applyCTGT(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.applyCTGT,body); } /** * 根据登录标识TGC申请登录凭证ST接口 * @param body * @return */ public static String applyST(String body) { return startDoPostStringArtemis(HKConstants.InterfacePath.applyST,body); } }