| | |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.hikvision.artemis.sdk.ArtemisHttpUtil; |
| | | import com.hikvision.artemis.sdk.config.ArtemisConfig; |
| | | import com.ycl.platform.domain.param.HK.BaseParam; |
| | | import com.ycl.platform.domain.param.HK.FaceDetectParam; |
| | | import com.ycl.utils.DateUtils; |
| | | import com.ycl.utils.bean.BeanUtils; |
| | | import constant.ApiConstants; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.lang.reflect.Field; |
| | | import java.lang.reflect.Modifier; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | |
| | | |
| | | |
| | | /** |
| | | * 调用海康接口 |
| | | * 调用海康接口 基础数据平台 Post请求 |
| | | * |
| | | * @param apiUrl 接口地址:/api/dqd/service/rs/v2/data/faceDetect/query |
| | | * @param params 请求参数 |
| | |
| | | return dataList; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 调用海康接口 基础数据平台 Get请求 |
| | | * |
| | | * @param apiUrl 接口地址: |
| | | * @param params 请求参数 |
| | | * @param resultType 响应结果接收类 |
| | | * @return 调用结果 |
| | | */ |
| | | public static <T> List<T> sendGetAPI(String host,String appKey,String appSecret,String apiUrl, BaseParam params, Class<T> resultType) { |
| | | // STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数. |
| | | ArtemisConfig.host = host; // 平台的ip端口 |
| | | ArtemisConfig.appKey = appKey; // 密钥appkey |
| | | ArtemisConfig.appSecret = appSecret;// 密钥appSecret |
| | | |
| | | // STEP2:设置OpenAPI接口的上下文 |
| | | final String ARTEMIS_PATH = "/artemis/aaoo"; |
| | | |
| | | // STEP3:设置接口的URI地址 |
| | | final String previewURLsApi = ARTEMIS_PATH + apiUrl; |
| | | Map<String, String> path = new HashMap<String, String>(2) { |
| | | { |
| | | put("https://", previewURLsApi); |
| | | } |
| | | }; |
| | | |
| | | // STEP4:设置参数提交方式 |
| | | // STEP5:组装请求参数 |
| | | Map<String, String> queryMap = object2Map(params); |
| | | log.info("请求参数"+queryMap); |
| | | // STEP6:调用接口 |
| | | String result = null; |
| | | List<T> dataList = new ArrayList<>(); |
| | | for (int i = 0; i < 10; i++) { |
| | | result = ArtemisHttpUtil.doGetArtemis(path, queryMap, null, null , null); |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | log.info("请求结果"+jsonObject); |
| | | if(jsonObject.getString("code") == null || !ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))){ |
| | | log.error("请求失败{}",result); |
| | | dataList = null; |
| | | break; |
| | | } |
| | | List<T> resultList = HkApiUtil.getDataList(JSONObject.parseObject(result), resultType); |
| | | if(CollectionUtils.isEmpty(resultList) || resultList.size()<ApiConstants.HKPageSize) { |
| | | dataList.addAll(resultList); |
| | | break; |
| | | }else { |
| | | dataList.addAll(resultList); |
| | | params.setPageNo(params.getPageNo()+1); |
| | | } |
| | | } |
| | | |
| | | return dataList; |
| | | } |
| | | |
| | | //解析数据 |
| | | private static <T> List<T> getDataList(JSONObject jsonObject, Class<T> resultClass) { |
| | | if (jsonObject != null && ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))) { |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 实体对象转成Map |
| | | * @param obj 实体对象 |
| | | * @return |
| | | */ |
| | | public static Map<String, String> object2Map(Object obj) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | if (obj == null) { |
| | | return map; |
| | | } |
| | | Class clazz = obj.getClass(); |
| | | Field[] fields = clazz.getDeclaredFields(); |
| | | try { |
| | | for (Field field : fields) { |
| | | field.setAccessible(true); |
| | | map.put(field.getName(), field.get(obj).toString()); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * Map转成实体对象 |
| | | * @param map map实体对象包含属性 |
| | | * @param clazz 实体对象类型 |
| | | * @return |
| | | */ |
| | | public static Object map2Object(Map<String, Object> map, Class<?> clazz) { |
| | | if (map == null) { |
| | | return null; |
| | | } |
| | | Object obj = null; |
| | | try { |
| | | obj = clazz.newInstance(); |
| | | |
| | | Field[] fields = obj.getClass().getDeclaredFields(); |
| | | for (Field field : fields) { |
| | | int mod = field.getModifiers(); |
| | | if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { |
| | | continue; |
| | | } |
| | | field.setAccessible(true); |
| | | field.set(obj, map.get(field.getName())); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return obj; |
| | | } |
| | | } |
| | | |