bug修复
This commit is contained in:
parent
eced94a9ef
commit
448aa2bf8d
@ -1,6 +1,7 @@
|
||||
package com.zhgd.xmgl.call;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -12,6 +13,8 @@ import com.zhgd.xmgl.base.HikvisionCarInfo;
|
||||
import com.zhgd.xmgl.base.HikvisionEventsPictureRq;
|
||||
import com.zhgd.xmgl.base.HikvisionOrganization;
|
||||
import com.zhgd.xmgl.base.SubscribeEventQo;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.HikvisionRequestRetry;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.HikvisionRequestRetryMapper;
|
||||
import com.zhgd.xmgl.modules.car.entity.CarInfo;
|
||||
import com.zhgd.xmgl.modules.car.entity.CarPassRecord;
|
||||
import com.zhgd.xmgl.modules.car.mapper.CarPassRecordMapper;
|
||||
@ -32,16 +35,14 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@ -61,6 +62,21 @@ public class HikvisionCall {
|
||||
@Autowired
|
||||
@Lazy
|
||||
private CarPassRecordMapper carPassRecordMapper;
|
||||
@Autowired
|
||||
@Lazy
|
||||
private HikvisionRequestRetryMapper hikvisionRequestRetryMapper;
|
||||
|
||||
/**
|
||||
* 海康请求失败重试定时
|
||||
*/
|
||||
@Scheduled(cron = "4 0 0 * * ?")
|
||||
public void getMonthAmmeterTask() {
|
||||
List<HikvisionRequestRetry> hikvisionRequestRetries = hikvisionRequestRetryMapper.selectList(new LambdaQueryWrapper<HikvisionRequestRetry>()
|
||||
.lt(HikvisionRequestRetry::getRequestNum, 4));
|
||||
for (HikvisionRequestRetry retry : hikvisionRequestRetries) {
|
||||
HikvisionUtil.doPost(retry.getHost(), retry.getPath(), retry.getBody(), null, retry.getAppKey(), retry.getAppSecret());
|
||||
}
|
||||
}
|
||||
|
||||
public void addWorkerForHikvision(WorkerInfo workerInfo) {
|
||||
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
|
||||
@ -120,6 +136,18 @@ public class HikvisionCall {
|
||||
String host = "https://" + project.getArtemisConfigHost();
|
||||
String body = getWorkerJson(workerInfo);
|
||||
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
|
||||
|
||||
editWorkerFace(workerInfo, project);
|
||||
}
|
||||
|
||||
private void editWorkerFace(WorkerInfo workerInfo, Project project) {
|
||||
final String ARTEMIS_PATH = "/artemis";
|
||||
final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/update";
|
||||
String host = "https://" + project.getArtemisConfigHost();
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("personId", workerInfo.getId());
|
||||
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(imageUrlPrefix + "/" + workerInfo.getFieldAcquisitionUrl())));
|
||||
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
|
||||
}
|
||||
|
||||
|
||||
@ -135,6 +163,51 @@ public class HikvisionCall {
|
||||
jsonBody.put("personIds", Arrays.asList(workerInfo.getId()));
|
||||
String body = jsonBody.toJSONString();
|
||||
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
|
||||
|
||||
deleteWorkerFace(workerInfo, project);
|
||||
|
||||
}
|
||||
|
||||
private void deleteWorkerFace(WorkerInfo workerInfo, Project project) {
|
||||
ArrayList<String> workerFaceIds = getWorkerFaceIds(workerInfo, project);
|
||||
if (CollUtil.isNotEmpty(workerFaceIds)) {
|
||||
for (String workerFaceId : workerFaceIds) {
|
||||
sendDeleteWorkerFace(project, workerFaceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sendDeleteWorkerFace(Project project, String workerFaceId) {
|
||||
final String ARTEMIS_PATH = "/artemis";
|
||||
final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/delete";
|
||||
String host = "https://" + project.getArtemisConfigHost();
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("faceId", workerFaceId);
|
||||
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
|
||||
}
|
||||
|
||||
private ArrayList<String> getWorkerFaceIds(WorkerInfo workerInfo, Project project) {
|
||||
final String ARTEMIS_PATH = "/artemis";
|
||||
final String path = ARTEMIS_PATH + "/api/resource/v1/person/condition/personInfo";
|
||||
String host = "https://" + project.getArtemisConfigHost();
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("paramName", "personId");
|
||||
jo.put("paramValue", Arrays.asList(String.valueOf(workerInfo.getId())));
|
||||
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
|
||||
JSONObject joData = HikvisionUtil.getJSONObjectData(rs);
|
||||
ArrayList<String> ids = new ArrayList<>();
|
||||
if (joData != null) {
|
||||
Integer total = joData.getInteger("total");
|
||||
if (Objects.equals(total, 1)) {
|
||||
JSONArray jsonArray = joData.getJSONArray("list");
|
||||
for (int i = 0; i < jsonArray.size(); i++) {
|
||||
JSONObject jsonObject = jsonArray.getJSONObject(i);
|
||||
ids.add(jsonObject.getString("personPhotoIndexCode"));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
|
||||
public void addCarInfoForHikvision(CarInfo carInfo) {
|
||||
|
||||
@ -0,0 +1,100 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @Description: 海康请求重试表
|
||||
* @author: pds
|
||||
* @date: 2024-03-01
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("hikvision_request_retry")
|
||||
@ApiModel(value = "HikvisionRequestRetry实体类", description = "HikvisionRequestRetry")
|
||||
public class HikvisionRequestRetry implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "id")
|
||||
private Long id;
|
||||
private String host;
|
||||
private String path;
|
||||
/**
|
||||
* 请求URL
|
||||
*/
|
||||
@Excel(name = "请求URL", width = 15)
|
||||
@ApiModelProperty(value = "请求URL")
|
||||
private String url;
|
||||
/**
|
||||
* 请求方法:1GET2POST
|
||||
*/
|
||||
@Excel(name = "请求方法:1GET2POST", width = 15)
|
||||
@ApiModelProperty(value = "请求方法:1GET2POST")
|
||||
private Integer method;
|
||||
/**
|
||||
* 请求参数
|
||||
*/
|
||||
@Excel(name = "请求参数", width = 15)
|
||||
@ApiModelProperty(value = "请求参数")
|
||||
private String param;
|
||||
/**
|
||||
* 请求body
|
||||
*/
|
||||
@Excel(name = "请求body", width = 15)
|
||||
@ApiModelProperty(value = "请求body")
|
||||
private String body;
|
||||
/**
|
||||
* 上次请求结果
|
||||
*/
|
||||
@Excel(name = "上次请求结果", width = 15)
|
||||
@ApiModelProperty(value = "上次请求结果")
|
||||
private String lastResult;
|
||||
/**
|
||||
* 请求次数
|
||||
*/
|
||||
@Excel(name = "请求次数", width = 15)
|
||||
@ApiModelProperty(value = "请求次数")
|
||||
private Integer requestNum;
|
||||
/**
|
||||
* appKey
|
||||
*/
|
||||
@Excel(name = "appKey", width = 15)
|
||||
@ApiModelProperty(value = "appKey")
|
||||
private String appKey;
|
||||
/**
|
||||
* appSecret
|
||||
*/
|
||||
@Excel(name = "appSecret", width = 15)
|
||||
@ApiModelProperty(value = "appSecret")
|
||||
private String appSecret;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
/**
|
||||
* 更新时间 yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Excel(name = "更新时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.HikvisionRequestRetry;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @Description: 海康请求重试表
|
||||
* @author: pds
|
||||
* @date: 2024-03-01
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface HikvisionRequestRetryMapper extends BaseMapper<HikvisionRequestRetry> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.basicdata.mapper.HikvisionRequestRetryMapper">
|
||||
</mapper>
|
||||
@ -0,0 +1,25 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.HikvisionRequestRetry;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 海康请求重试表
|
||||
* @author: pds
|
||||
* @date: 2024-03-01
|
||||
* @version: V1.0
|
||||
*/
|
||||
public interface IHikvisionRequestRetryService extends IService<HikvisionRequestRetry> {
|
||||
|
||||
IPage<HikvisionRequestRetry> queryPageList(HashMap<String, Object> paramMap);
|
||||
|
||||
List<HikvisionRequestRetry> queryList(HashMap<String, Object> paramMap);
|
||||
|
||||
void add(HikvisionRequestRetry hikvisionRequestRetry);
|
||||
|
||||
void edit(HikvisionRequestRetry hikvisionRequestRetry);
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package com.zhgd.xmgl.modules.basicdata.service.impl;
|
||||
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.HikvisionRequestRetry;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.HikvisionRequestRetryMapper;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.IHikvisionRequestRetryService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* @Description: 海康请求重试表
|
||||
* @author: pds
|
||||
* @date: 2024-03-01
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class HikvisionRequestRetryServiceImpl extends ServiceImpl<HikvisionRequestRetryMapper, HikvisionRequestRetry> implements IHikvisionRequestRetryService {
|
||||
@Autowired
|
||||
private HikvisionRequestRetryMapper hikvisionRequestRetryMapper;
|
||||
|
||||
@Override
|
||||
public IPage<HikvisionRequestRetry> queryPageList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<HikvisionRequestRetry> queryWrapper = getQueryWrapper(paramMap);
|
||||
Page<HikvisionRequestRetry> page = PageUtil.getPage(paramMap);
|
||||
IPage<HikvisionRequestRetry> pageList = this.page(page, queryWrapper);
|
||||
pageList.setRecords(dealList(pageList.getRecords()));
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HikvisionRequestRetry> queryList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<HikvisionRequestRetry> queryWrapper = getQueryWrapper(paramMap);
|
||||
return dealList(this.list(queryWrapper));
|
||||
}
|
||||
|
||||
private QueryWrapper<HikvisionRequestRetry> getQueryWrapper(HashMap<String, Object> paramMap) {
|
||||
String alias = "";
|
||||
QueryWrapper<HikvisionRequestRetry> queryWrapper = QueryGenerator.initPageQueryWrapper(HikvisionRequestRetry.class, paramMap, alias);
|
||||
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(HikvisionRequestRetry::getId));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private List<HikvisionRequestRetry> dealList(List<HikvisionRequestRetry> list) {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(HikvisionRequestRetry hikvisionRequestRetry) {
|
||||
hikvisionRequestRetry.setId(null);
|
||||
baseMapper.insert(hikvisionRequestRetry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(HikvisionRequestRetry hikvisionRequestRetry) {
|
||||
baseMapper.updateById(hikvisionRequestRetry);
|
||||
}
|
||||
}
|
||||
@ -1,11 +1,17 @@
|
||||
package com.zhgd.xmgl.util;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.hikvision.artemis.sdk.Client;
|
||||
import com.hikvision.artemis.sdk.Request;
|
||||
import com.hikvision.artemis.sdk.Response;
|
||||
import com.hikvision.artemis.sdk.constant.Constants;
|
||||
import com.hikvision.artemis.sdk.enums.Method;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.HikvisionRequestRetry;
|
||||
import com.zhgd.xmgl.modules.basicdata.mapper.HikvisionRequestRetryMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -14,7 +20,16 @@ import java.util.Map;
|
||||
* 海康接口
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class HikvisionUtil {
|
||||
|
||||
private static HikvisionRequestRetryMapper hikvisionRequestRetryMapper;
|
||||
|
||||
@Autowired
|
||||
public void setHikvisionRequestRetryMapper(HikvisionRequestRetryMapper hikvisionRequestRetryMapper) {
|
||||
HikvisionUtil.hikvisionRequestRetryMapper = hikvisionRequestRetryMapper;
|
||||
}
|
||||
|
||||
public static String doPost(String host, String path, String body, Map<String, String> querys, String appKey, String appSecret) {
|
||||
log.info("HikvisionUtil#doPost.url:{}", host + path);
|
||||
String responseStr = null;
|
||||
@ -31,6 +46,18 @@ public class HikvisionUtil {
|
||||
log.info("HikvisionUtil#doPost.getResponseResult:{}", responseStr);
|
||||
} catch (Exception var10) {
|
||||
var10.printStackTrace();
|
||||
HikvisionRequestRetry entity = new HikvisionRequestRetry();
|
||||
entity.setUrl(host + path);
|
||||
entity.setHost(host);
|
||||
entity.setPath(path);
|
||||
entity.setMethod(2);
|
||||
entity.setParam(JSON.toJSONString(querys));
|
||||
entity.setBody(body);
|
||||
entity.setLastResult(null);
|
||||
entity.setRequestNum(1);
|
||||
entity.setAppKey(appKey);
|
||||
entity.setAppSecret(appSecret);
|
||||
hikvisionRequestRetryMapper.insert(entity);
|
||||
}
|
||||
return responseStr;
|
||||
}
|
||||
@ -47,4 +74,15 @@ public class HikvisionUtil {
|
||||
|
||||
return responseStr;
|
||||
}
|
||||
|
||||
public static JSONObject getJSONObjectData(String rs) {
|
||||
JSONObject rsJo = JSONObject.parseObject(rs);
|
||||
Integer code = rsJo.getInteger("code");
|
||||
if (code == 0) {
|
||||
return rsJo.getJSONObject("data");
|
||||
} else {
|
||||
log.error("海康解析结果失败:{}", rs);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user