From af10a1fa0fb721b8b58aab05413f53a6aace812c Mon Sep 17 00:00:00 2001 From: guo Date: Wed, 6 Mar 2024 09:24:32 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/base/HikvisionCarInfo.java | 2 + .../com/zhgd/xmgl/call/HikvisionCall.java | 168 +++++++++++++----- .../service/impl/WorkerInfoServiceImpl.java | 4 + 3 files changed, 130 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java b/src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java index 7c93cd4f6..70db31c27 100644 --- a/src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java +++ b/src/main/java/com/zhgd/xmgl/base/HikvisionCarInfo.java @@ -6,6 +6,8 @@ import lombok.Data; @Data public class HikvisionCarInfo { + @JsonProperty("vehicleId") + private String vehicleId; @JsonProperty("clientId") private Long clientId; @JsonProperty("plateNo") diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 260c711d3..27fcb6d36 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -73,7 +73,8 @@ public class HikvisionCall { * 海康请求失败重试定时 */ @Scheduled(cron = "4 0 0 * * ?") - public void getMonthAmmeterTask() { + @PostMapping(value = "/failRetry") + public void failRetry() { List hikvisionRequestRetries = hikvisionRequestRetryMapper.selectList(new LambdaQueryWrapper() .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().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947")); - getOrg(project); - return null; - } - - @GetMapping("/getPark") - public Result getParkList() { - Project project = projectMapper.selectOne(new LambdaQueryWrapper().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().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947")); + getOrg(project); + return null; + } + + /** + * 测试查询停车场 + * + * @return + */ + @GetMapping("/getPark") + public Result getParkList() { + Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947")); + JSONArray parkList = getParkList(project); + return null; + } + + /** + * 查询车辆列表v2 + * + * @return + */ + @GetMapping("/getCarList") + public Result getCarList() { + Project project = projectMapper.selectOne(new LambdaQueryWrapper().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 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 getWorkerFaceIds(WorkerInfo workerInfo, Project project) { + JSONObject joData = getWorkerInfo(workerInfo, project); + ArrayList 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 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 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 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()); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 60be99c21..ffb3b0ffe 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -1593,12 +1593,16 @@ public class WorkerInfoServiceImpl extends ServiceImpl