bug修复

This commit is contained in:
guo 2024-03-06 09:24:32 +08:00
parent 1d3bd4b522
commit af10a1fa0f
3 changed files with 130 additions and 44 deletions

View File

@ -6,6 +6,8 @@ import lombok.Data;
@Data
public class HikvisionCarInfo {
@JsonProperty("vehicleId")
private String vehicleId;
@JsonProperty("clientId")
private Long clientId;
@JsonProperty("plateNo")

View File

@ -73,7 +73,8 @@ public class HikvisionCall {
* 海康请求失败重试定时
*/
@Scheduled(cron = "4 0 0 * * ?")
public void getMonthAmmeterTask() {
@PostMapping(value = "/failRetry")
public void failRetry() {
List<HikvisionRequestRetry> hikvisionRequestRetries = hikvisionRequestRetryMapper.selectList(new LambdaQueryWrapper<HikvisionRequestRetry>()
.lt(HikvisionRequestRetry::getRequestNum, 4));
for (HikvisionRequestRetry retry : hikvisionRequestRetries) {
@ -81,20 +82,6 @@ public class HikvisionCall {
}
}
@GetMapping("/getOrg")
public Result getOrg() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
getOrg(project);
return null;
}
@GetMapping("/getPark")
public Result getParkList() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
JSONArray parkList = getParkList(project);
return null;
}
@ApiOperation(value = "海康事件回调", notes = "海康事件回调", httpMethod = "POST")
@PostMapping(value = "/eventCallback")
public Result eventCallback(@ApiIgnore @RequestBody JSONObject jsonObject) {
@ -186,6 +173,43 @@ public class HikvisionCall {
return Result.ok();
}
/**
* 测试查询组织
*
* @return
*/
@GetMapping("/getOrg")
public Result getOrg() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
getOrg(project);
return null;
}
/**
* 测试查询停车场
*
* @return
*/
@GetMapping("/getPark")
public Result getParkList() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
JSONArray parkList = getParkList(project);
return null;
}
/**
* 查询车辆列表v2
*
* @return
*/
@GetMapping("/getCarList")
public Result getCarList() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
getCarList(project);
return null;
}
/**
* 添加人员
*
@ -248,13 +272,18 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
String host = "https://" + project.getArtemisConfigHost();
String body = getWorkerJson(workerInfo);
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
JSONObject wiJo = getWorkerInfo(workerInfo, project);
if (wiJo != null) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
String host = "https://" + project.getArtemisConfigHost();
String body = getWorkerJson(workerInfo);
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
editWorkerFace(workerInfo, project);
editWorkerFace(workerInfo, project);
} else {
addWorkerForHikvision(workerInfo);
}
}
/**
@ -264,13 +293,18 @@ public class HikvisionCall {
* @param 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("faceId", workerInfo.getId());
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl())));
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
ArrayList<String> workerFaceIds = getWorkerFaceIds(workerInfo, project);
if (CollUtil.isNotEmpty(workerFaceIds)) {
for (String workerFaceId : workerFaceIds) {
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("faceId", workerFaceId);
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl())));
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
}
}
/**
@ -319,8 +353,36 @@ public class HikvisionCall {
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**
* 获取人员人脸id列表
*
* @param workerInfo
* @param project
* @return
*/
private ArrayList<String> getWorkerFaceIds(WorkerInfo workerInfo, Project project) {
JSONObject joData = getWorkerInfo(workerInfo, project);
ArrayList<String> ids = new ArrayList<>();
if (joData != null) {
JSONArray ppJa = joData.getJSONArray("personPhoto");
if (ppJa != null) {
for (int j = 0; j < ppJa.size(); j++) {
JSONObject jo1 = ppJa.getJSONObject(j);
ids.add(jo1.getString("personPhotoIndexCode"));
}
}
}
return ids;
}
/**
* 获取单个劳务人员信息根据人员id
*
* @param workerInfo
* @param project
* @return
*/
private JSONObject getWorkerInfo(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();
@ -329,21 +391,20 @@ public class HikvisionCall {
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 jsonObject;
}
}
}
return ids;
return null;
}
/**
* 添加车辆
*
@ -367,9 +428,12 @@ public class HikvisionCall {
private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) {
HikvisionCarInfo hikvisionCarInfo = new HikvisionCarInfo();
hikvisionCarInfo.setClientId(carInfo.getId());
hikvisionCarInfo.setVehicleId(String.valueOf(carInfo.getId()));
hikvisionCarInfo.setPlateNo(carInfo.getCarNumber());
hikvisionCarInfo.setPersonId(carInfo.getDriverWorkerId());
String[] driverList = StringUtils.split(carInfo.getDriverWorkerId(), ",");
if (driverList != null && driverList.length > 0) {
hikvisionCarInfo.setPersonId(driverList[0]);
}
hikvisionCarInfo.setPlateType(null);
hikvisionCarInfo.setPlateColor(getPlateColor(carInfo));
hikvisionCarInfo.setVehicleType(getVehicleType(carInfo));
@ -473,10 +537,9 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/single/update";
String host = "https://" + project.getArtemisConfigHost();
HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo);
ArrayList<HikvisionCarInfo> list = new ArrayList<>();
list.add(hikvisionCarInfo);
HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
HikvisionUtil.doPost(host, path, JSON.toJSONString(hikvisionCarInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
//预约车辆
reservationCar(project, carInfo);
}
@ -494,11 +557,10 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/delete";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
JsonArray array = new JsonArray();
String body = array.toString();
array.add(carInfo.getId());
jo.put("vehicleIds", array);
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
ArrayList<String> list = new ArrayList<>();
list.add(String.valueOf(carInfo.getId()));
jo.put("vehicleIds", list);
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
deleteReservationCarInfo(carInfo);
}
@ -575,7 +637,8 @@ public class HikvisionCall {
* @param artemisConfigAppSecret
* @return
*/
public static String getHikvisionEventsPicture(HikvisionEventsPictureRq rq, String artemisConfigHost, String artemisConfigAppKey, String artemisConfigAppSecret) {//获取视频事件的图片
public static String getHikvisionEventsPicture(HikvisionEventsPictureRq rq, String artemisConfigHost, String
artemisConfigAppKey, String artemisConfigAppSecret) {//获取视频事件的图片
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/video/v1/events/picture";
String host = "https://" + artemisConfigHost;
@ -883,5 +946,22 @@ public class HikvisionCall {
return parkReservation;
}
/**
* 查询车辆列表v2
*
* @param project
*/
public void getCarList(Project project) {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/vehicle/advance/vehicleList";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("pageNo", 1);
jo.put("pageSize", 1000);
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
}

View File

@ -1593,12 +1593,16 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
}
workerInfo.setId(oldWorkerInfo.getId());
workerInfoMapper.updateById(workerInfo);
//同步海康
asyncHikvision.editWorkerForHikvision(workerInfo);
} else {
String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
workerInfo.setPersonSn(uuid);
workerInfo.setAddTime(new Date());
workerInfo.setAttendanceNumber(workerInfo.getIdCard());
workerInfoMapper.insert(workerInfo);
//同步海康
asyncHikvision.addWorkerForHikvision(workerInfo);
}
asyncJiLianDa.saveWorkerInfo(workerInfo);
}