From 2f855d3d1e2c41a59f7a79ad154f281becb68c35 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Mon, 1 Jul 2024 09:51:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/async/AsyncHikvision.java | 323 ++++++++++++-- .../com/zhgd/xmgl/call/HikvisionCall.java | 402 ++++++++++++++++-- .../XzHikvisionCompareDataServiceImpl.java | 10 +- .../com/zhgd/xmgl/task/HikvisionTask.java | 10 +- .../com/zhgd/xmgl/task/VideoItemTask.java | 6 +- .../com/zhgd/xmgl/util/HikvisionUtil.java | 276 ++++++++---- 6 files changed, 854 insertions(+), 173 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 17e77e615..f5c2ad1d5 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -46,12 +46,13 @@ import java.util.function.Function; import java.util.stream.Collectors; /** - * 海康 + * 异步海康 */ @Slf4j @Component public class AsyncHikvision { public static final String XZ_HIKVISION_SYNC_TIME = "xzHikvisionSyncTime"; + public static final int MAX_PAGE_SIZE = 1000; @Lazy @Autowired public CarInfoServiceImpl carInfoService; @@ -97,6 +98,11 @@ public class AsyncHikvision { @Autowired private RedisRepository redisRepository; + /** + * 获取下发的时间,如果不存在就新建 + * + * @return + */ public static Date getSyncTimeWithInitIfAbsent() { Date now = ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME); if (now == null) { @@ -107,6 +113,8 @@ public class AsyncHikvision { } /** + * 获取下发的时间,如果不存在就新建,并删除同步表中对应的数据 + * * @param bigType 1人员2车辆 * @param tableId * @return @@ -125,10 +133,23 @@ public class AsyncHikvision { return now; } + /** + * 获取同步时间 + * + * @return + */ public static Date getSyncTime() { return ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME); } + /** + * 异步添加人员和权限 + * + * @param workerInfo + * @param isSaveWorker + * @param isSaveWorkerFace + * @return + */ @Async("workerHkExecutor") public Future addWorkerAndAuthAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { this.addWorkerAsync(workerInfo, true, true); @@ -153,20 +174,48 @@ public class AsyncHikvision { } } + /** + * 添加人员 + * + * @param workerInfo + * @param isSaveWorker + * @param isSaveWorkerFace + */ public void addWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { this.addWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace); } + /** + * 编辑人员和权限 + * + * @param workerInfo + * @param isSaveWorker + * @param isSaveWorkerFace + */ @Async("workerHkExecutor") public void editWorkerAndAuthAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { this.saveWorkerAsync(workerInfo, true, true); projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo); } + /** + * 保存人员 + * + * @param workerInfo + * @param isSaveWorker + * @param isSaveWorkerFace + */ public void saveWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { this.saveWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace); } + /** + * 异步保存人员 + * + * @param workerInfo + * @param isSaveWorker + * @param isSaveWorkerFace + */ @Async("workerHkExecutor") public void saveWorkerAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { try { @@ -177,10 +226,24 @@ public class AsyncHikvision { } } + /** + * 编辑人员 + * + * @param workerInfo + * @param isSaveWorker + * @param isSaveWorkerFace + */ public void editWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { this.saveWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace); } + /** + * 为人员发送通知和设置下发状态 + * + * @param workerInfo + * @param e + * @param action + */ private void sendNoticeForWorker(WorkerInfo workerInfo, Exception e, String action) { String title = action + "人员到海康isc失败"; String type = "23"; @@ -198,6 +261,12 @@ public class AsyncHikvision { hikvisionCall.updateAllFailStatusIfNull(workerInfo.getProjectSn(), workerInfo.getId(), 1); } + /** + * 异步删除人员 + * + * @param uniqueId + * @param workerInfo + */ @Async("workerHkExecutor") public void deleteWorkerForHikvisionAsync(String uniqueId, WorkerInfo workerInfo) { try { @@ -208,10 +277,21 @@ public class AsyncHikvision { } } + /** + * 删除人员 + * + * @param uniqueId + * @param workerInfo + */ public void deleteWorkerForHikvision(String uniqueId, WorkerInfo workerInfo) { this.deleteWorkerForHikvisionAsync(uniqueId, workerInfo); } + /** + * 异步添加车辆 + * + * @param carInfo + */ @Async("carInfoExecutor") public void addCarInfoForHikvisionAsync(CarInfo carInfo) { try { @@ -222,10 +302,22 @@ public class AsyncHikvision { } } + /** + * 添加车辆 + * + * @param carInfo + */ public void addCarInfoForHikvision(CarInfo carInfo) { this.addCarInfoForHikvisionAsync(carInfo); } + /** + * 为车辆发送通知和设置下发状态 + * + * @param carInfo + * @param e + * @param action + */ private void sendNoticeForCar(CarInfo carInfo, Exception e, String action) { String title = action + "车辆到海康isc失败"; String type = "24"; @@ -243,6 +335,12 @@ public class AsyncHikvision { hikvisionCall.updateAllFailStatusIfNull(carInfo.getProjectSn(), carInfo.getId(), 2); } + /** + * 异步编辑车辆 + * + * @param carInfo + * @param old + */ @Async("carInfoExecutor") public void editCarInfoForHikvisionAsync(CarInfo carInfo, CarInfo old) { try { @@ -253,10 +351,22 @@ public class AsyncHikvision { } } + /** + * 编辑车辆 + * + * @param carInfo + * @param old + */ public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) { this.editCarInfoForHikvisionAsync(carInfo, old); } + /** + * 异步删除车辆并设置车辆黑名单状态 + * + * @param carInfo + * @param isSetBlack + */ @Async("carInfoExecutor") public void deleteCarInfoAndSetBlackForHikvisionAsync(CarInfo carInfo, boolean isSetBlack) { try { @@ -267,10 +377,21 @@ public class AsyncHikvision { } } + /** + * 删除车辆并设置车辆黑名单状态 + * + * @param carInfo + * @param isSetBlack + */ public void deleteCarInfoAndSetBlackForHikvision(CarInfo carInfo, boolean isSetBlack) { this.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, isSetBlack); } + /** + * 添加企业 + * + * @param enterpriseInfo + */ @Async("carInfoExecutor") public void addEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) { try { @@ -281,6 +402,13 @@ public class AsyncHikvision { } } + /** + * 为组织发送通知和设置下发状态 + * + * @param name + * @param e + * @param action + */ private void sendNoticeForOrg(String name, Exception e, String action) { String title = action + "组织到海康isc失败"; String type = "23"; @@ -298,6 +426,11 @@ public class AsyncHikvision { xzHikvisionCompareDataService.compareRetryFail(); } + /** + * 编辑企业 + * + * @param enterpriseInfo + */ @Async("carInfoExecutor") public void editEnterpriseInfoForHikvision(EnterpriseInfo enterpriseInfo) { try { @@ -308,6 +441,12 @@ public class AsyncHikvision { } } + /** + * 删除企业 + * + * @param projectSn + * @param enterpriseName + */ @Async("carInfoExecutor") public void deleteEnterpriseInfoForHikvision(String projectSn, String enterpriseName) { try { @@ -318,6 +457,11 @@ public class AsyncHikvision { } } + /** + * 异步编辑班组 + * + * @param teamInfo + */ @Async("carInfoExecutor") public void editTeamInfoForHikvision(TeamInfo teamInfo) { try { @@ -328,6 +472,12 @@ public class AsyncHikvision { } } + /** + * 异步删除班组 + * + * @param id + * @param teamInfo + */ @Async("carInfoExecutor") public void deleteTeamInfoForHikvision(String id, TeamInfo teamInfo) { try { @@ -338,6 +488,11 @@ public class AsyncHikvision { } } + /** + * 异步添加班组 + * + * @param teamInfo + */ @Async("carInfoExecutor") public void addTeamInfoForHikvision(TeamInfo teamInfo) { try { @@ -348,6 +503,11 @@ public class AsyncHikvision { } } + /** + * 异步编辑部门 + * + * @param teamInfo + */ @Async("carInfoExecutor") public void editDepartmentInfoForHikvision(DepartmentInfo teamInfo) { try { @@ -358,6 +518,11 @@ public class AsyncHikvision { } } + /** + * 异步添加部门 + * + * @param teamInfo + */ @Async("carInfoExecutor") public void addDepartmentInfoForHikvision(DepartmentInfo teamInfo) { try { @@ -368,6 +533,12 @@ public class AsyncHikvision { } } + /** + * 异步删除部门 + * + * @param uniqueId + * @param departmentInfo + */ @Async("carInfoExecutor") public void deleteDepartmentInfoForHikvision(String uniqueId, DepartmentInfo departmentInfo) { try { @@ -378,6 +549,11 @@ public class AsyncHikvision { } } + /** + * 异步编辑项目 + * + * @param project + */ @Async("carInfoExecutor") public void editProjectForHikvision(Project project) { try { @@ -387,6 +563,12 @@ public class AsyncHikvision { } } + /** + * 异步添加人员权限 + * + * @param workerInfo + * @param devSns + */ @Async("hikvisionExecutor") public void addPersonAuthAsync(WorkerInfo workerInfo, String devSns) { try { @@ -430,10 +612,12 @@ public class AsyncHikvision { } } - public void addPersonAuth(WorkerInfo workerInfo, String devSns) { - this.addPersonAuthAsync(workerInfo, devSns); - } - + /** + * 异步删除人员权限 + * + * @param workerInfo + * @param devSns + */ @Async("hikvisionExecutor") public void deletePersonAuthAsync(WorkerInfo workerInfo, String devSns) { try { @@ -479,15 +663,21 @@ public class AsyncHikvision { } } - public void deletePersonAuth(WorkerInfo workerInfo, String devSn) { - this.deletePersonAuthAsync(workerInfo, devSn); - } - + /** + * 异步获取车辆通行数据 + * + * @param paramMap + */ @Async("getRecordForHikvisionTask") public void getCrossRecordsAsync(HashMap paramMap) { hikvisionCall.getCrossRecords(paramMap); } + /** + * 异步获取人员通行数据 + * + * @param paramMap + */ @Async("getRecordForHikvisionTask") public void getDoorEventsAsync(HashMap paramMap) { hikvisionCall.getDoorEvents(paramMap); @@ -527,7 +717,7 @@ public class AsyncHikvision { Map devSnMap = allDevList.stream().collect(Collectors.toMap(UfaceDev::getDevSn, Function.identity())); Map> devSnToJoMap = workerAndDevSnList.stream().collect(Collectors.groupingBy(jsonObject -> jsonObject.getString("devSn"))); JSONObject gdvJo = HikvisionUtil.getDoorsV2(project, HikvisionUtil.addPageParamIfAbsent(new JSONObject())); - JSONObject gdvDataJo = HikvisionUtil.getJSONObjectData(gdvJo); + JSONObject gdvDataJo = HikvisionUtil.getJsonObjectData(gdvJo); //门禁设备编号:parentIndexCode,门禁点编号:indexCode,门禁设备资源通道号:channelNo Map devSnToIscDevSnMap = gdvDataJo.getJSONArray("list").stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("indexCode"), o -> (JSONObject) o)); futures = new ArrayList<>(); @@ -596,6 +786,15 @@ public class AsyncHikvision { } } + /** + * 获取需要编辑的人员 + * + * @param workerList + * @param project + * @param workerIdMap + * @return + * @throws Exception + */ private ArrayList getNeedEditWorkers(List workerList, ProjectInfoExtVo project, Map workerIdMap) throws Exception { ArrayList needEditWorkers = new ArrayList<>(); JSONArray plListJa = getPersonListByWorkerList(workerList, project); @@ -618,15 +817,23 @@ public class AsyncHikvision { return needEditWorkers; } + /** + * 根据人员列表获取isc人员列表 + * + * @param workerList + * @param project + * @return + * @throws Exception + */ private JSONArray getPersonListByWorkerList(List workerList, ProjectInfoExtVo project) throws Exception { JSONArray rtJa = new JSONArray(); - for (List splitList : CollUtil.splitList(workerList, 1000)) { + for (List splitList : CollUtil.splitList(workerList, MAX_PAGE_SIZE)) { JSONObject plJo = HikvisionUtil.queryPersonList(project, new JoBuilder() .put("personIds", StrUtil.join(",", splitList.stream().map(WorkerInfo::getId).collect(Collectors.toList()))) .put("pageNo", 1) - .put("pageSize", 1000) + .put("pageSize", MAX_PAGE_SIZE) .build()); - JSONObject plDataJo = HikvisionUtil.getJSONObjectData(plJo); + JSONObject plDataJo = HikvisionUtil.getJsonObjectData(plJo); JSONArray plListJa = plDataJo.getJSONArray("list"); rtJa.addAll(plListJa); } @@ -665,15 +872,15 @@ public class AsyncHikvision { } //然后调用【根据出入权限配置快捷下载】(设备列表)(【添加权限配置】+【快捷下发】这是一个流程,你添加了几个权限,下发成功之后,就清零了) JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(devSnToJoEntry, devSnToIscDevSnMap)); - JSONObject daRtJo = HikvisionUtil.getJSONObjectData(daJo); + JSONObject daRtJo = HikvisionUtil.getJsonObjectData(daJo); //然后调用【查询下载任务进度】(上面那个的任务) int totalPercent = 0; do { JSONObject qdpJo = HikvisionUtil.queryDownloadProgress(project, new JoBuilder() .put("taskId", daRtJo.getString("taskId")) .build()); - totalPercent = HikvisionUtil.getJSONObjectData(qdpJo).getInteger("totalPercent"); - Thread.sleep(1000); + totalPercent = HikvisionUtil.getJsonObjectData(qdpJo).getInteger("totalPercent"); + Thread.sleep(MAX_PAGE_SIZE); } while (totalPercent != 100); //权限下发后(进度100后),用【查询权限条目列表】(人员列表,设备列表)接口去查,返回参数有权限状态,返回已下载的就是有权限 List workerIds = devSnToJoEntry.getValue().stream().map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList()); @@ -719,11 +926,21 @@ public class AsyncHikvision { return null; } + /** + * 为人员列表查询权限列表 + * + * @param project + * @param workerIds + * @param devSnToJoEntry + * @param devSnToIscDevSnMap + * @return + * @throws Exception + */ private JSONArray queryAuthItemByWorkerList(ProjectInfoExtVo project, List workerIds, Map.Entry> devSnToJoEntry, Map devSnToIscDevSnMap) throws Exception { JSONArray rtJa = new JSONArray(); - for (List splitList : CollUtil.splitList(workerIds, 1000)) { + for (List splitList : CollUtil.splitList(workerIds, MAX_PAGE_SIZE)) { JSONObject qaiJo = HikvisionUtil.queryAuthItem(project, getQueryAuthItemParam(devSnToJoEntry, devSnToIscDevSnMap, splitList)); - JSONObject qaiRtJo = HikvisionUtil.getJSONObjectData(qaiJo); + JSONObject qaiRtJo = HikvisionUtil.getJsonObjectData(qaiJo); JSONArray qaiList = qaiRtJo.getJSONArray("list"); if (CollUtil.isNotEmpty(qaiList)) { rtJa.addAll(qaiList); @@ -732,17 +949,35 @@ public class AsyncHikvision { return rtJa; } + /** + * 为人员列表删除权限 + * + * @param project + * @param devSnToIscDevSnMap + * @param devSnToJoEntry + * @param deleteAuthWorkerIds + * @throws Exception + */ private void deleteAuthByWorkerList(ProjectInfoExtVo project, Map devSnToIscDevSnMap, Map.Entry> devSnToJoEntry, List deleteAuthWorkerIds) throws Exception { - for (List splitWorkerIds : CollUtil.splitList(deleteAuthWorkerIds, 1000)) { - JSONObject aaRJo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap)); - HikvisionUtil.getJSONObjectData(aaRJo); + for (List splitWorkerIds : CollUtil.splitList(deleteAuthWorkerIds, MAX_PAGE_SIZE)) { + JSONObject jo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap)); + HikvisionUtil.getJsonObjectData(jo); } } + /** + * 为人员列表添加权限 + * + * @param project + * @param devSnToIscDevSnMap + * @param devSnToJoEntry + * @param addAuthWorkerIds + * @throws Exception + */ private void addAuthByWorkerList(ProjectInfoExtVo project, Map devSnToIscDevSnMap, Map.Entry> devSnToJoEntry, List addAuthWorkerIds) throws Exception { - for (List splitWorkerIds : CollUtil.splitList(addAuthWorkerIds, 1000)) { - JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap)); - HikvisionUtil.getJSONObjectData(aaRJo); + for (List splitWorkerIds : CollUtil.splitList(addAuthWorkerIds, MAX_PAGE_SIZE)) { + JSONObject jo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, splitWorkerIds, devSnToIscDevSnMap)); + HikvisionUtil.getJsonObjectData(jo); } } @@ -771,7 +1006,8 @@ public class AsyncHikvision { if (sendNotice) { if (addAuthWorkerIds.contains(personId)) { //添加权限 - if (Objects.equals(faceStatus, 3)) { + int addAuth = 3; + if (Objects.equals(faceStatus, addAuth)) { hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); Long syncId = ThreadLocalUtil.getByKey(Cts.TL_HK_SYNC_ID, Long.class); if (syncId != null) { @@ -791,7 +1027,8 @@ public class AsyncHikvision { } } else { //删除权限 - if (Objects.equals(faceStatus, 4)) { + int deleteAuth = 4; + if (Objects.equals(faceStatus, deleteAuth)) { hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 3, dev.getDevSn()); } else { hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 3, dev.getDevSn()); @@ -802,13 +1039,21 @@ public class AsyncHikvision { StrUtil.format("[{}]取消下发到[{}]{}", workerIdMap.get(personId).getWorkerName(), dev.getDevName(), - Objects.equals(faceStatus, 4) ? "成功" : "失败,下发异常"), + Objects.equals(faceStatus, deleteAuth) ? "成功" : "失败,下发异常"), "人员下发设备提醒", "1"); } } } } + /** + * 获取添加或删除权限的参数 + * + * @param entry + * @param workerIds + * @param devSnToIscDevSnMap + * @return + */ @NotNull private JSONObject getAddOrDeleteAuthParam(Map.Entry> entry, List workerIds, Map devSnToIscDevSnMap) { JSONObject aaJo = new JSONObject(); @@ -820,6 +1065,13 @@ public class AsyncHikvision { return aaJo; } + /** + * 获取《删除权限配置》接口的设备请求的参数 + * + * @param entry + * @param devSnToIscDevSnMap + * @return + */ @NotNull private List getDevRqParam(Map.Entry> entry, Map devSnToIscDevSnMap) { return Collections.singletonList(new JoBuilder() @@ -829,6 +1081,13 @@ public class AsyncHikvision { .build()); } + /** + * 获取《根据出入权限配置快捷下载》接口的请求的参数 + * + * @param entry + * @param devSnToIscDevSnMap + * @return + */ private JSONObject getQueryDownloadProgressParam(Map.Entry> entry, Map devSnToIscDevSnMap) { JSONObject aaJo = new JSONObject(); aaJo.put("taskType", 4); @@ -836,6 +1095,14 @@ public class AsyncHikvision { return aaJo; } + /** + * 获取《查询权限条目列表》的请求参数 + * + * @param entry + * @param devSnToIscDevSnMap + * @param workerIds + * @return + */ private JSONObject getQueryAuthItemParam(Map.Entry> entry, Map devSnToIscDevSnMap, List workerIds) { JSONObject aaJo = new JSONObject(); aaJo.put("personIds", workerIds); @@ -846,7 +1113,7 @@ public class AsyncHikvision { .build())); aaJo.put("queryType", "acsDevice"); aaJo.put("pageNo", 1); - aaJo.put("pageSize", 1000); + aaJo.put("pageSize", MAX_PAGE_SIZE); return aaJo; } diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index e47c33cb3..26b129c01 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -108,11 +108,13 @@ public class HikvisionCall { public static final String MSG = "msg"; public static final String DATA = "data"; public static final String X_00072002 = "0x00072002"; - public static final String Fail = "失败"; + public static final String FAIL = "失败"; public static final String SUC = "成功"; public static final String X_15403007 = "0x15403007"; public static final String X_02401033 = "0x02401033"; public static final String LIST = "list"; + public static final String EVENT_PMS = "event_pms"; + public static final String EVENT_VSS = "event_vss"; private static final String FIXED_CAR_GROUP_NAME = "业主车辆"; public AsyncHikvision asyncHikvision; @Autowired @@ -289,8 +291,8 @@ public class HikvisionCall { if (Objects.equals(method, onEventNotify)) { JSONObject paramsJo = jsonObject.getJSONObject("params"); String ability = paramsJo.getString("ability"); - String event_acs = "event_acs"; - if (Objects.equals(ability, event_acs)) { + String eventAcs = "event_acs"; + if (Objects.equals(ability, eventAcs)) { log.info("人员通行记录事件"); //人员通行记录 JSONArray eventsJa = paramsJo.getJSONArray("events"); @@ -332,7 +334,7 @@ public class HikvisionCall { hikvisionCall.saveEventCallbackAttendanceAsync(dataJo, workerInfo, srcIndex, project, idCard, time, passType); } } - } else if (Objects.equals(ability, "event_pms")) { + } else if (Objects.equals(ability, EVENT_PMS)) { log.info("车辆出入场事件"); //车辆入场压线(放行)、出场压线(放行) JSONArray eventsJa = paramsJo.getJSONArray("events"); @@ -388,7 +390,7 @@ public class HikvisionCall { JSONArray eventDetails = dataEvent.getJSONArray("eventDetails"); JSONObject eventDetail = eventDetails.getJSONObject(0); ability = eventDetail.getString("ability"); - if (Objects.equals(ability, "event_vss")) { + if (Objects.equals(ability, EVENT_VSS)) { log.info("AI识别告警=======" + paramsJo); //摄像机名称 String srcName = eventDetail.getString("srcName"); @@ -408,7 +410,7 @@ public class HikvisionCall { hikvisionCall.saveEventCallbackAiAsync(dataEvent, srcName, eventType, imageUrl, srcIndex, dev); } else if (Objects.equals(ability, EVENT_IAS)) { log.info("临边防护告警=======" + paramsJo); - String srcName = eventDetail.getString("srcName");//srcName + String srcName = eventDetail.getString("srcName"); String srcParentIndex = dataEvent.getString("srcParentIndex"); String happenTime = dataEvent.getString("happenTime"); String ds = srcName + "报警"; @@ -428,6 +430,11 @@ public class HikvisionCall { return Result.ok(); } + /** + * 添加红外对射预警数据 + * + * @param paramsJo + */ private void addFrontierProtectionNoNetData(JSONObject paramsJo) { log.info("临边防护告警事件========" + paramsJo); JSONArray eventsJa = paramsJo.getJSONArray("events"); @@ -435,6 +442,11 @@ public class HikvisionCall { hikvisionCall.saveEventCallbackIasAsync(dataEvent); } + /** + * 异步添加红外对射预警数据 + * + * @param dataEvent + */ @Async("saveEventCallbackAiAsync") public void saveEventCallbackIasAsync(JSONObject dataEvent) { String devCode = dataEvent.getString("srcIndex"); @@ -456,6 +468,16 @@ public class HikvisionCall { frontierProtectionNoNetDataService.add(data1); } + /** + * 异步添加ai数据 + * + * @param dataEvent + * @param srcName + * @param eventType + * @param imageUrl + * @param deviceId + * @param dev + */ @Async("saveEventCallbackAiAsync") public void saveEventCallbackAiAsync(JSONObject dataEvent, String srcName, String eventType, String imageUrl, String deviceId, AiAnalyseHardWareRecord dev) { String happenTime = dataEvent.getString("happenTime"); @@ -489,6 +511,15 @@ public class HikvisionCall { asyncAiAnalyse.sendAiAnalyse(record, Cts.PROJECT_LEVEL_AND_CHILDREN); } + /*** + * 异步添加车辆通行数据 + * @param dataJo + * @param srcIndex + * @param plateNo + * @param carCamera + * @param project + * @param time + */ @Async("saveEventCallbackCarPassRecord") public void saveEventCallbackCarPassRecordAsync(JSONObject dataJo, String srcIndex, String plateNo, CarCamera carCamera, Project project, String time) { CarPassRecord carPassRecord = new CarPassRecord(); @@ -543,9 +574,20 @@ public class HikvisionCall { } } + /** + * 异步保存人员通行数据 + * + * @param dataJo + * @param workerInfo + * @param srcIndex + * @param project + * @param idCard + * @param time + * @param passType + */ @Async("saveEventCallbackAttendance") public void saveEventCallbackAttendanceAsync(JSONObject dataJo, WorkerInfo workerInfo, String srcIndex, Project project, String idCard, String time, int passType) { - HashMap map = new HashMap<>(); + HashMap map = new HashMap<>(16); map.put("passTime", time); map.put("idCard", idCard); map.put("attendanceNumber", workerInfo.getAttendanceNumber()); @@ -613,6 +655,15 @@ public class HikvisionCall { return Result.ok("已在后台同步人员数据,请耐心等待!"); } + /** + * 获取门禁事件的数据 + * + * @param startTime + * @param endTime + * @param param + * @param projectSn + * @param projects + */ @Async("getDoorEvents") public void getDoorEventsAsync(String startTime, String endTime, JSONObject param, String projectSn, List projects) { for (Project project : projects) { @@ -633,7 +684,7 @@ public class HikvisionCall { log.error("err:", e); return; } - JSONObject joData = HikvisionUtil.getJSONObjectData(rs); + JSONObject joData = HikvisionUtil.getJsonObjectData(rs); if (joData != null) { total = joData.getInteger("total"); if (!Objects.equals(total, 0)) { @@ -651,7 +702,7 @@ public class HikvisionCall { log.error("未找到该人员信息,personName:{}", personName); continue; } - HashMap map = new HashMap<>(); + HashMap map = new HashMap<>(16); String time = DateUtil.formatDateTime(DateUtil.parse(eventTime)); map.put("passTime", time); map.put("idCard", workerInfo.getIdCard()); @@ -721,6 +772,14 @@ public class HikvisionCall { return Result.ok("已在后台同步车辆通行数据,请耐心等待!"); } + /** + * 异步同步车辆通行数据 + * + * @param startTime + * @param endTime + * @param param + * @param projects + */ @Async("getCrossRecords") public void getCrossRecordsAsync(String startTime, String endTime, JSONObject param, List projects) { for (Project project : projects) { @@ -744,7 +803,7 @@ public class HikvisionCall { log.error("err:", e); return; } - JSONObject joData = HikvisionUtil.getJSONObjectData(rs); + JSONObject joData = HikvisionUtil.getJsonObjectData(rs); if (joData != null) { total = joData.getInteger("total"); if (!Objects.equals(total, 0)) { @@ -892,6 +951,12 @@ public class HikvisionCall { return null; } + /** + * 获取进出类型 + * + * @param passType + * @return + */ private Integer getPassType(Integer passType) { if (passType == null) { return null; @@ -927,6 +992,13 @@ public class HikvisionCall { } } + /** + * 添加人员 + * + * @param workerInfo + * @param project + * @throws Exception + */ public void addWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { String rs = HikvisionUtil.addWorker(workerInfo, project); sendNoticeAndSetStatusForWorker("添加人员到海康isc", rs, workerInfo, 1, 1, true); @@ -972,6 +1044,13 @@ public class HikvisionCall { } } + /** + * 更新人员 + * + * @param workerInfo + * @param project + * @throws Exception + */ public void editWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { String rs = HikvisionUtil.editWorker(workerInfo, project); sendNoticeAndSetStatusForWorker("更新人员到海康isc", rs, workerInfo, 1, 2, true); @@ -991,6 +1070,17 @@ public class HikvisionCall { } } + /** + * 为车辆发送通知和设置下发状态 + * + * @param title + * @param rs + * @param carInfo + * @param type + * @param operate + * @param setSuc + * @param isNotice + */ public void sendNoticeAndSetStatusForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate, Boolean setSuc, boolean isNotice) { String msg; if (setSuc == null) { @@ -1006,10 +1096,10 @@ public class HikvisionCall { if (fOp.isPresent() && fOp.get().size() != 0) { if (X_00052102.equals(fOp.get().getJSONObject(0).getString(CODE))) { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆绑定的人员在isc不存在"; - title += Fail; + title += FAIL; } else { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } else { msg = "同步成功,车牌号码:" + carInfo.getCarNumber(); @@ -1039,30 +1129,31 @@ public class HikvisionCall { String errMsg = "Car reservation failed! The plateNo has reserved in the parking!"; if (Objects.equals(msg1, errMsg)) { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆预约记录已存在"; - title += Fail; + title += FAIL; } else { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } } else if (Objects.equals(code, X_02_E_33400)) { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车"; - title += Fail; + title += FAIL; } else if (Objects.equals(code, X_00072003)) { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!"; - title += Fail; + title += FAIL; } else if (Objects.equals(code, X_00052301)) { String msg1 = jo.getString(MSG); - if (Objects.equals(msg1, "PersonId Not Exists")) { + String errMsg = "PersonId Not Exists"; + if (Objects.equals(msg1, errMsg)) { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆绑定的人员ID不存在"; - title += Fail; + title += FAIL; } else { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } else { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } } else { @@ -1071,7 +1162,7 @@ public class HikvisionCall { title += SUC; } else { msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } @@ -1096,6 +1187,13 @@ public class HikvisionCall { } } + /** + * 为组织发送通知和设置下发状态 + * + * @param title + * @param rs + * @param orgName + */ private void sendNoticeForOrg(String title, String rs, String orgName) { if (StringUtils.isBlank(rs)) { return; @@ -1111,11 +1209,11 @@ public class HikvisionCall { if (fOp.isPresent() && fOp.get().size() != 0) { if (X_00052102.equals(fOp.get().getJSONObject(0).getString(CODE))) { msg = "同步失败,组织名称:" + orgName + "。失败原因:上级组织不存在"; - title += Fail; + title += FAIL; success = false; } else { msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常"; - title += Fail; + title += FAIL; success = false; } } else { @@ -1128,11 +1226,11 @@ public class HikvisionCall { String errMsg = "Exists Child Org"; if (X_00052102.equals(dataJa.getJSONObject(0).getString(CODE)) && errMsg.equals(dataJa.getJSONObject(0).getString(MSG))) { msg = "同步失败,组织名称:" + orgName + "。失败原因:ISC存在下级组织"; - title += Fail; + title += FAIL; success = false; } else { msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常"; - title += Fail; + title += FAIL; success = false; } } else { @@ -1145,7 +1243,7 @@ public class HikvisionCall { } } else { msg = "同步失败,组织名称:" + orgName + "。失败原因:" + rs; - title += Fail; + title += FAIL; success = false; } if (success) { @@ -1158,6 +1256,16 @@ public class HikvisionCall { } } + /** + * 为人员发送通知和设置下发状态 + * + * @param title + * @param rs + * @param workerInfo + * @param type + * @param operate + * @param sendNotice + */ private void sendNoticeAndSetStatusForWorker(String title, String rs, WorkerInfo workerInfo, int type, int operate, boolean sendNotice) { boolean callSuc = HikvisionUtil.isSuccess(rs); String msg = ""; @@ -1175,10 +1283,10 @@ public class HikvisionCall { String errMsg = "Please Change Picture,Picture Max Size Is Limit 200KB"; if (Objects.equals(msg1, errMsg)) { msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:人脸图片不能大于200KB"; - title += Fail; + title += FAIL; } else { msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } else if (Objects.equals(code, X_00052301)) { String msg1 = jo.getString(MSG); @@ -1193,7 +1301,7 @@ public class HikvisionCall { pN = "部门"; } msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:" + pN + "未同步成功"; - title += Fail; + title += FAIL; } else if (Objects.equals(msg1, personIdAlreadyInDb)) { //成功 success = true; @@ -1201,24 +1309,24 @@ public class HikvisionCall { title += SUC; } else if (Objects.equals(msg1, personNotExists)) { msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:人员不存在"; - title += Fail; + title += FAIL; } else { msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } else if (Objects.equals(code, X_00072003)) { String msg1 = jo.getString(MSG); String errMsg = "The format of parameter phoneNo is not correct."; if (Objects.equals(msg1, errMsg)) { msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:手机号码格式不正确"; - title += Fail; + title += FAIL; } else { msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } else { msg = "同步失败,人员名称:" + workerInfo.getWorkerName() + ",身份证号:" + workerInfo.getIdCard() + "。失败原因:下发异常"; - title += Fail; + title += FAIL; } } if (success) { @@ -1271,6 +1379,14 @@ public class HikvisionCall { } } + /** + * 更新某个为失败状态 + * + * @param projectSn + * @param whoId + * @param bigType + * @param operate + */ @Transactional(rollbackFor = Exception.class) public void updateAllFailStatusIfNullForAuth(String projectSn, Long whoId, Integer bigType, Integer operate) { xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper() @@ -1284,6 +1400,13 @@ public class HikvisionCall { this.updateTotalStatus(projectSn, whoId, bigType); } + /** + * 更新某个为失败状态 + * + * @param projectSn + * @param whoId + * @param bigType + */ @Transactional(rollbackFor = Exception.class) public void updateAllFailStatusIfNull(String projectSn, Long whoId, Integer bigType) { xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper() @@ -1295,6 +1418,15 @@ public class HikvisionCall { updateTotalStatus(projectSn, whoId, bigType); } + /** + * 更新某个为失败状态 + * + * @param projectSn + * @param whoId + * @param type + * @param operate + * @param deviceSn + */ public void updateFailStatus(String projectSn, Long whoId, Integer type, Integer operate, String deviceSn) { updateStatus(projectSn, whoId, type, operate, deviceSn, false); } @@ -1312,6 +1444,16 @@ public class HikvisionCall { updateStatus(projectSn, whoId, type, operate, deviceSn, true); } + /** + * 更新某个状态 + * + * @param projectSn + * @param whoId + * @param type + * @param operate + * @param deviceSn + * @param isSuccess + */ @Transactional(rollbackFor = Exception.class) public void updateStatus(String projectSn, Long whoId, Integer type, Integer operate, String deviceSn, Boolean isSuccess) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() @@ -1414,11 +1556,29 @@ public class HikvisionCall { deleteWorkerFromHttp(uniqueId, workerInfo, project, sendNotice); } + /** + * 删除人员到海康isc + * + * @param uniqueId + * @param workerInfo + * @param project + * @param sendNotice + * @throws Exception + */ public void deleteWorkerFromHttp(String uniqueId, WorkerInfo workerInfo, Project project, boolean sendNotice) throws Exception { String rs = HikvisionUtil.deleteWorkerById(uniqueId, project).toJSONString(); sendNoticeAndSetStatusForWorker("删除人员到海康isc", rs, workerInfo, 1, 3, sendNotice); } + /** + * 删除人员图片到海康isc + * + * @param uniqueId + * @param workerInfo + * @param project + * @param sendNotice + * @throws Exception + */ public void deleteWorkerFace(String uniqueId, WorkerInfo workerInfo, Project project, boolean sendNotice) throws Exception { List workerFaceIds = getWorkerFaceIds(uniqueId, project); if (CollUtil.isNotEmpty(workerFaceIds)) { @@ -1492,7 +1652,7 @@ public class HikvisionCall { jo.put("pageSize", 1); JSONObject joRs = HikvisionUtil.getBlackCarList(project, jo); if (HikvisionUtil.isSuccess(joRs)) { - JSONObject dataJo = HikvisionUtil.getJSONObjectData(joRs); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(joRs); JSONArray listJa = dataJo.getJSONArray(LIST); if (CollUtil.isEmpty(listJa)) { if (carInfo.getIsBlack() == 1) { @@ -1526,6 +1686,11 @@ public class HikvisionCall { } } + /** + * 添加车辆黑名单失败报警通知 + * + * @param carInfo + */ private void failAlarmNotice(CarInfo carInfo) { if (carInfo.getIsBlack() == 1) { sendNoticeAndSetStatusForCarInfo("车辆添加黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false, true); @@ -1555,6 +1720,14 @@ public class HikvisionCall { } } + /** + * 通过车牌号获取isc的车辆id + * + * @param carNumber + * @param project + * @return + * @throws Exception + */ private String getRemoteCarIdByCarNumber(String carNumber, Project project) throws Exception { JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carNumber, project); return oldCarInfo == null ? null : oldCarInfo.getString("vehicleId"); @@ -1571,6 +1744,13 @@ public class HikvisionCall { bindCar(project, carInfo); } + /** + * 获取绑定的固定车辆群组 + * + * @param project + * @return + * @throws Exception + */ @NotNull private String getCategoryCode(Project project) throws Exception { //绑定固定的群组 @@ -1578,6 +1758,13 @@ public class HikvisionCall { return getFixedCarGroupName(ja); } + /** + * 添加车辆 + * + * @param carInfo + * @param project + * @throws Exception + */ public void addCarInfoFromHttp(CarInfo carInfo, Project project) throws Exception { final String artemisPath = "/artemis"; final String path = artemisPath + "/api/resource/v1/vehicle/batch/add"; @@ -1589,6 +1776,12 @@ public class HikvisionCall { sendNoticeAndSetStatusForCarInfo("添加车辆白名单到海康isc", rs, carInfo, 4, 1, null, true); } + /** + * 获取车辆 + * + * @param carInfo + * @return + */ private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) { HikvisionCarInfo hikvisionCarInfo = new HikvisionCarInfo(); hikvisionCarInfo.setVehicleId(carInfo.getHikvisionVehicleId()); @@ -1605,6 +1798,12 @@ public class HikvisionCall { return hikvisionCarInfo; } + /** + * 获取isc的车牌颜色 + * + * @param carInfo + * @return + */ private String getPlateColor(CarInfo carInfo) { String carColor = carInfo.getCarColor(); if (StringUtils.isBlank(carColor)) { @@ -1630,6 +1829,12 @@ public class HikvisionCall { return null; } + /** + * 获取isc的车辆类型 + * + * @param carInfo + * @return + */ private String getVehicleType(CarInfo carInfo) { String carTypeName = carInfoMapper.getCarTypeName(carInfo); switch (carTypeName) { @@ -1646,6 +1851,12 @@ public class HikvisionCall { return null; } + /** + * 获取isc的车辆颜色 + * + * @param carColor + * @return + */ private String getVehicleColor(String carColor) { if (StringUtils.isBlank(carColor)) { return null; @@ -1786,6 +1997,13 @@ public class HikvisionCall { handleAlarmCar(project, c); } + /** + * 删除固定车 + * + * @param carInfo + * @param project + * @throws Exception + */ private void deleteFixedCarForHikvision(CarInfo carInfo, Project project) throws Exception { //根据车牌号删除车辆 JSONObject oldCarInfo = searchCarInfoByCarNumberFromHttp(carInfo.getCarNumber(), project); @@ -1798,6 +2016,14 @@ public class HikvisionCall { } } + /** + * 根据车牌号查询车辆 + * + * @param carNumber + * @param project + * @return + * @throws Exception + */ private JSONObject searchCarInfoByCarNumberFromHttp(String carNumber, Project project) throws Exception { long total = 0; JSONObject o1 = null; @@ -1805,7 +2031,7 @@ public class HikvisionCall { do { JSONObject jo = HikvisionUtil.getFixCarListByCarNumber(carNumber, project, ++pageNo); if (HikvisionUtil.isSuccess(jo)) { - JSONObject dataJo = HikvisionUtil.getJSONObjectData(jo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(jo); total = dataJo.getInteger("total"); JSONArray listJa = dataJo.getJSONArray(LIST); Optional plateNoOpt = listJa.stream().filter(o -> { @@ -1864,6 +2090,13 @@ public class HikvisionCall { addOrgNoticeFromHttp(project, hikvisionOrganization); } + /** + * 映射isc的组织 + * + * @param enterpriseInfo + * @param orgIndexCode + * @return + */ private HikvisionOrganization getHikvisionOrganization(EnterpriseInfo enterpriseInfo, String orgIndexCode) { HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); hikvisionOrganization.setClientId(null); @@ -1948,7 +2181,7 @@ public class HikvisionCall { param.put("orgName", orgName); param.put("parentOrgIndexCodes", project.getProjectSn()); String rs = HikvisionUtil.getOrgV2(project, param); - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rs); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rs); JSONArray listJa = dataJo.getJSONArray(LIST); for (int i = 0; i < listJa.size(); i++) { JSONObject jo = listJa.getJSONObject(i); @@ -1973,6 +2206,14 @@ public class HikvisionCall { addOrgNoticeFromHttp(project, hikvisionOrganization); } + /** + * 映射isc的组织 + * + * @param teamInfo + * @param project + * @return + * @throws Exception + */ private HikvisionOrganization getHikvisionOrganization(TeamInfo teamInfo, Project project) throws Exception { HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); hikvisionOrganization.setClientId(null); @@ -2000,16 +2241,38 @@ public class HikvisionCall { } } + /** + * 更新组织到海康isc + * + * @param project + * @param hikvisionOrganization + * @throws Exception + */ private void editOrgFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception { String rs = HikvisionUtil.editOrg(project, hikvisionOrganization); sendNoticeForOrg("更新组织到海康isc", rs, hikvisionOrganization.getOrgName()); } + /** + * 删除组织到海康isc + * + * @param project + * @param idList + * @param orgName + * @throws Exception + */ private void deleteOrgFromHttp(Project project, List idList, String orgName) throws Exception { String rs = HikvisionUtil.deleteOrgByIndexCodes(project, idList); sendNoticeForOrg("删除组织到海康isc", rs, orgName); } + /** + * 添加组织到海康isc + * + * @param project + * @param hikvisionOrganization + * @throws Exception + */ private void addOrgNoticeFromHttp(Project project, HikvisionOrganization hikvisionOrganization) throws Exception { String rs = HikvisionUtil.addOrg(project, hikvisionOrganization); sendNoticeForOrg("添加组织到海康isc", rs, hikvisionOrganization.getOrgName()); @@ -2043,6 +2306,14 @@ public class HikvisionCall { addOrgNoticeFromHttp(project, hikvisionOrganization); } + /** + * 映射isc的组织 + * + * @param departmentInfo + * @param project + * @return + * @throws Exception + */ private HikvisionOrganization getHikvisionOrganization(DepartmentInfo departmentInfo, Project project) throws Exception { HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); hikvisionOrganization.setClientId(null); @@ -2126,10 +2397,16 @@ public class HikvisionCall { param.put("orgIndexCodes", orgIndexs); param.put("parentOrgIndexCodes", parentOrgIndexCode); String rs = HikvisionUtil.getOrgV2(project, param); - JSONObject jo = HikvisionUtil.getJSONObjectData(rs); + JSONObject jo = HikvisionUtil.getJsonObjectData(rs); return jo.getJSONArray(LIST); } + /** + * 映射isc的组织 + * + * @param project + * @return + */ private HikvisionOrganization getHikvisionOrganization(Project project) { HikvisionOrganization hikvisionOrganization = new HikvisionOrganization(); hikvisionOrganization.setClientId(null); @@ -2166,6 +2443,13 @@ public class HikvisionCall { HikvisionUtil.chargeDeletion(project, new ChargeDeletionParam(parkIndexCode, carInfo.getCarNumber())); } + /** + * 添加预约车辆到海康isc + * + * @param project + * @param carInfo + * @throws Exception + */ private void reservationCarFromHttp(Project project, CarInfo carInfo) throws Exception { final String artemisPath = "/artemis"; final String path = artemisPath + "/api/pms/v2/parkingSpace/reservations/addition"; @@ -2175,13 +2459,21 @@ public class HikvisionCall { sendNoticeAndSetStatusForCarInfo("添加预约车辆到海康isc", rs, carInfo, 6, 1, null, true); } + /** + * 映射车辆预约信息 + * + * @param project + * @param carInfo + * @return + * @throws Exception + */ private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception { String parkIndexCode = HikvisionUtil.getProjectParkCode(project); WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId()); ParkReservation parkReservation = new ParkReservation(); parkReservation.setParkSyscode(parkIndexCode); parkReservation.setPlateNo(carInfo.getCarNumber()); - if (Objects.equals(carInfo.getCarModuleType(), 3)) { + if (Objects.equals(carInfo.getCarModuleType(), ParamEnum.CarInfoCarModuleTypeEnum.LS.getValue())) { parkReservation.setOwner(carInfo.getDriverWorkerName()); } else if (workerInfo != null) { parkReservation.setOwner(workerInfo.getWorkerName()); @@ -2194,7 +2486,12 @@ public class HikvisionCall { return parkReservation; } - + /** + * 保存图片本体 + * + * @param url + * @return + */ public String saveToLocal(String url) { return UrlUtil.saveToLocal(url, basePath, IdUtil.simpleUUID() + ".png"); } @@ -2250,6 +2547,14 @@ public class HikvisionCall { } } + /** + * 获取isc的海康的车辆ids + * + * @param project + * @param carInfo + * @return + * @throws Exception + */ @NotNull private Set getHkCarIds(Project project, CarInfo carInfo) throws Exception { JSONObject param = new JSONObject(); @@ -2260,7 +2565,7 @@ public class HikvisionCall { do { param.put("pageNo", param.getInteger("pageNo") + 1); JSONObject hkFixCars = HikvisionUtil.getFixCarList(project, param); - JSONObject jo = HikvisionUtil.getJSONObjectData(hkFixCars); + JSONObject jo = HikvisionUtil.getJsonObjectData(hkFixCars); total = jo.getInteger("total"); JSONArray oneList = jo.getJSONArray(LIST); listJa.addAll(oneList); @@ -2290,7 +2595,7 @@ public class HikvisionCall { String host = "https://" + project.getArtemisConfigHost(); String rs = HikvisionUtil.doPost(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); if (HikvisionUtil.isSuccess(rs)) { - JSONObject rsJo = HikvisionUtil.getJSONObjectData(rs); + JSONObject rsJo = HikvisionUtil.getJsonObjectData(rs); return rsJo.getBoolean("checkResult"); } else { return false; @@ -2298,6 +2603,8 @@ public class HikvisionCall { } /** + * 更新人员权限 + * * @param i 0新增,2删除 */ public void updatePersonAuth(WorkerInfo workerInfo, String devSn, StringBuilder sucSb, StringBuilder failSb, int i) throws Exception { @@ -2321,7 +2628,7 @@ public class HikvisionCall { " ],\n" + "}"; JSONObject rs = HikvisionUtil.getDoorsV2(project, JSONObject.parseObject(json)); - JSONObject jo = HikvisionUtil.getJSONObjectData(rs); + JSONObject jo = HikvisionUtil.getJsonObjectData(rs); JSONArray listJa = jo.getJSONArray(LIST); if (CollUtil.isEmpty(listJa)) { throw new OpenAlertException("失败信息:isc不存在该设备"); @@ -2356,7 +2663,7 @@ public class HikvisionCall { } return; } - JSONObject sdRsJo = HikvisionUtil.getJSONObjectData(sdRs); + JSONObject sdRsJo = HikvisionUtil.getJsonObjectData(sdRs); Integer downloadResult = sdRsJo.getJSONObject("resourceDownloadResult").getInteger("downloadResult"); if (downloadResult == 0) { updateSucForUpdatePersonAuth(workerInfo, devSn, i); @@ -2367,6 +2674,13 @@ public class HikvisionCall { } } + /** + * 为人员权限设置成功下发状态 + * + * @param workerInfo + * @param devSn + * @param i + */ private void updateSucForUpdatePersonAuth(WorkerInfo workerInfo, String devSn, int i) { updateSuccessStatus(workerInfo.getProjectSn(), workerInfo.getId(), 3, i == 0 ? 1 : 3, devSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java index e3fd83872..a486634ed 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java @@ -218,7 +218,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl() .eq(XzHikvisionSync::getBigType, 1) .eq(XzHikvisionSync::getType, type) @@ -392,7 +392,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl enterpriseInfos = BeanUtil.copyToList(enterpriseInfoService.getEnterpriseInfoList(new MapBuilder().put(Cts.PROJECT_SN, project.getProjectSn()).build()), EnterpriseInfo.class); - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo); JSONArray listJa = dataJo.getJSONArray("list"); if (CollUtil.isEmpty(listJa)) { for (EnterpriseInfo enterpriseInfo : enterpriseInfos) { @@ -253,7 +253,7 @@ public class HikvisionTask { .put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()); List departmentInfoList = departmentInfoMapper.getDepartmentInfoList(new MapBuilder() .put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()); - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo); JSONArray listJa = dataJo.getJSONArray("list"); if (CollUtil.isEmpty(listJa)) { for (TeamInfo teamInfo : teamList) { @@ -323,7 +323,7 @@ public class HikvisionTask { .put(type == 2, Cts.DEPARTMENT_ID, orgIndex) .build()); List workerInfoList = workerPage.getRecords(); - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo); JSONArray listJa = dataJo.getJSONArray("list"); if (CollUtil.isEmpty(listJa)) { for (WorkerInfo workerInfo : workerInfoList) { @@ -381,7 +381,7 @@ public class HikvisionTask { .put("carModuleType", 1) .put("isBlack", 0) .build()); - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo); JSONArray listJa = dataJo.getJSONArray("list"); compareAndAddData(project, listJa, carInfoList, 1); } @@ -417,7 +417,7 @@ public class HikvisionTask { jo.put("pageNo", 1); jo.put("pageSize", 1000); JSONObject joRs = HikvisionUtil.getBlackCarList(project, jo); - JSONObject dataJo = HikvisionUtil.getJSONObjectData(joRs); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(joRs); JSONArray listJa = dataJo.getJSONArray("list"); List carInfoList = carInfoService.selectCarList(new MapBuilder() .put(Cts.PROJECT_SN, project.getProjectSn()) diff --git a/src/main/java/com/zhgd/xmgl/task/VideoItemTask.java b/src/main/java/com/zhgd/xmgl/task/VideoItemTask.java index 78edcabe7..9a3893c46 100644 --- a/src/main/java/com/zhgd/xmgl/task/VideoItemTask.java +++ b/src/main/java/com/zhgd/xmgl/task/VideoItemTask.java @@ -102,7 +102,7 @@ public class VideoItemTask { jo.put("indexCodes", videoItems.stream().map(entityMap -> entityMap.get("serialNumber")).filter(Objects::nonNull).collect(Collectors.toList())); JSONObject rsJo = hikvisionVideoCall.getNmsRecordForHikvisionForHttp(project, jo); if (HikvisionUtil.isSuccess(rsJo)) { - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rsJo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rsJo); JSONArray listJa = dataJo.getJSONArray("list"); for (int i = 0; i < listJa.size(); i++) { JSONObject oneJo = listJa.getJSONObject(i); @@ -155,7 +155,7 @@ public class VideoItemTask { jo.put("indexCodes", videoItems.stream().map(entityMap -> entityMap.get("serialNumber")).filter(Objects::nonNull).collect(Collectors.toList())); JSONObject rsJo = hikvisionVideoCall.getVqdForHikvisionForHttp(project, jo); if (HikvisionUtil.isSuccess(rsJo)) { - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rsJo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rsJo); JSONArray listJa = dataJo.getJSONArray("list"); for (int i = 0; i < listJa.size(); i++) { JSONObject oneJo = listJa.getJSONObject(i); @@ -188,7 +188,7 @@ public class VideoItemTask { jo.put("indexCodes", videoItems.stream().map(entityMap -> entityMap.get("serialNumber")).filter(Objects::nonNull).collect(Collectors.toList())); JSONObject rsJo = hikvisionVideoCall.getCameraOnlineForHttp(project, jo); if (HikvisionUtil.isSuccess(rsJo)) { - JSONObject dataJo = HikvisionUtil.getJSONObjectData(rsJo); + JSONObject dataJo = HikvisionUtil.getJsonObjectData(rsJo); JSONArray listJa = dataJo.getJSONArray("list"); for (int i = 0; i < listJa.size(); i++) { JSONObject oneJo = listJa.getJSONObject(i); diff --git a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java index 29112ded2..57e1de908 100644 --- a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java @@ -28,14 +28,40 @@ import java.util.*; @Component public class HikvisionUtil { + public static final String SUC_CODE = "0"; + + /** + * 获取JSONObject的请求结果 + * + * @param host + * @param path + * @param body + * @param querys + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ public static JSONObject doPostRtObj(String host, String path, String body, Map querys, String appKey, String appSecret) throws Exception { return JSONObject.parseObject(doPost(host, path, body, querys, appKey, appSecret)); } + /** + * 发送Post请求 + * + * @param host + * @param path + * @param body + * @param querys + * @param appKey + * @param appSecret + * @return + * @throws Exception + */ public static String doPost(String host, String path, String body, Map querys, String appKey, String appSecret) throws Exception { log.info("调用海康接口.url:{}", host + path); log.info("调用海康接口.body:{}", body); - Map headers = new HashMap(); + Map headers = new HashMap<>(16); headers.put("Accept", "*/*"); headers.put("Content-Type", "application/json"); Request request = new Request(Method.POST_STRING, host, path, appKey, appSecret, Constants.DEFAULT_TIMEOUT * 30); @@ -48,10 +74,18 @@ public class HikvisionUtil { return responseStr; } + /** + * 获取响应结果 + * + * @param response + * @return + */ private static String getResponseResult(Response response) { String responseStr = null; int statusCode = response.getStatusCode(); - if (!String.valueOf(statusCode).startsWith("2") && !String.valueOf(statusCode).startsWith("3")) { + String prefix2 = "2"; + String prefix3 = "3"; + if (!String.valueOf(statusCode).startsWith(prefix2) && !String.valueOf(statusCode).startsWith(prefix3)) { responseStr = response.getBody(); } else { responseStr = response.getBody(); @@ -66,10 +100,10 @@ public class HikvisionUtil { * @param rs * @return */ - public static JSONObject getJSONObjectData(String rs) { + public static JSONObject getJsonObjectData(String rs) { JSONObject rsJo = JSONObject.parseObject(rs); String code = rsJo.getString("code"); - if (Objects.equals(code, "0")) { + if (Objects.equals(code, SUC_CODE)) { return rsJo.getJSONObject("data"); } else { log.error("海康返回错误码:{}", rs); @@ -83,9 +117,9 @@ public class HikvisionUtil { * @param rsJo * @return */ - public static JSONObject getJSONObjectData(JSONObject rsJo) { + public static JSONObject getJsonObjectData(JSONObject rsJo) { String code = rsJo.getString("code"); - if (Objects.equals(code, "0")) { + if (Objects.equals(code, SUC_CODE)) { return rsJo.getJSONObject("data"); } else { log.error("海康返回错误码:{}", rsJo.toJSONString()); @@ -93,10 +127,16 @@ public class HikvisionUtil { } } - public static JSONArray getJSONArrayData(String rs) { + /** + * 获取响应结果 + * + * @param rs + * @return + */ + public static JSONArray getJsonArrayData(String rs) { JSONObject rsJo = JSONArray.parseObject(rs); String code = rsJo.getString("code"); - if (Objects.equals(code, "0")) { + if (Objects.equals(code, SUC_CODE)) { return rsJo.getJSONArray("data"); } else { log.error("海康返回错误码:{}", rs); @@ -113,7 +153,7 @@ public class HikvisionUtil { public static boolean isSuccess(String rs) { JSONObject rsJo = JSONObject.parseObject(rs); String code = rsJo.getString("code"); - if (Objects.equals(code, "0")) { + if (Objects.equals(code, SUC_CODE)) { return true; } else { return false; @@ -128,7 +168,7 @@ public class HikvisionUtil { */ public static boolean isSuccess(JSONObject rsJo) { String code = rsJo.getString("code"); - if (Objects.equals(code, "0")) { + if (Objects.equals(code, SUC_CODE)) { return true; } else { return false; @@ -143,14 +183,19 @@ public class HikvisionUtil { */ public static boolean isFail(JSONObject rsJo) { String code = rsJo.getString("code"); - if (Objects.equals(code, "0")) { + if (Objects.equals(code, SUC_CODE)) { return false; } else { return true; } } - + /** + * 添加初始化分页 + * + * @param param + * @return + */ public static JSONObject addPageParamIfAbsent(JSONObject param) { param.putIfAbsent("pageNo", 1); param.putIfAbsent("pageSize", 1000); @@ -167,8 +212,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v2/vehicle/advance/vehicleList"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v2/vehicle/advance/vehicleList"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -195,12 +240,12 @@ public class HikvisionUtil { * 查询车辆分类 */ public static JSONArray getCategoryList(Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/car/category/search"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v1/car/category/search"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - return getJSONArrayData(rs); + return getJsonArrayData(rs); } /** @@ -215,8 +260,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/car/categoryBind"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v1/car/categoryBind"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -229,8 +274,8 @@ public class HikvisionUtil { * @return */ public static JSONObject deleteWorkerFace(Project project, String workerFaceId) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/delete"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/face/single/delete"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); jo.put("faceId", workerFaceId); @@ -247,8 +292,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject deleteWorkerById(String uniqueId, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/person/batch/delete"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jsonBody = new JSONObject(); jsonBody.put("personIds", Arrays.asList(uniqueId)); @@ -264,8 +309,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject queryWorkerByCondition(Project project, JSONObject param) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/person/condition/personInfo"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/person/condition/personInfo"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -279,12 +324,12 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/park/parkList"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/park/parkList"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - return getJSONArrayData(rs); + return getJsonArrayData(rs); } /** @@ -315,8 +360,8 @@ public class HikvisionUtil { * @param project */ public static JSONObject getReservationCarInfoList(String carNumber, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v2/reserveRecord/page"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v2/reserveRecord/page"; String host = "https://" + project.getArtemisConfigHost(); HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carNumber, project); return doPostRtObj(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); @@ -330,10 +375,17 @@ public class HikvisionUtil { */ public static JSONArray getReservationCarInfoDataList(String carNumber, Project project) throws Exception { JSONObject jo = getReservationCarInfoList(carNumber, project); - return getJSONObjectData(jo).getJSONArray("list"); + return getJsonObjectData(jo).getJSONArray("list"); } - + /** + * 映射车辆预约信息 + * + * @param carNumber + * @param project + * @return + * @throws Exception + */ private static HikvisionReservationCarInfo getHikvisionReservationCarInfoObj(String carNumber, Project project) throws Exception { String projectParkCode = HikvisionUtil.getProjectParkCode(project); HikvisionReservationCarInfo hikvisionReservationCarInfo = new HikvisionReservationCarInfo(); @@ -360,8 +412,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v2/org/advance/orgList"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v2/org/advance/orgList"; String host = "https://" + project.getArtemisConfigHost(); return doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -375,17 +427,25 @@ public class HikvisionUtil { * @throws Exception */ public static String addOrg(Project project, HikvisionOrganization hikvisionOrganization) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/add"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/org/batch/add"; String host = "https://" + project.getArtemisConfigHost(); ArrayList list = new ArrayList<>(); list.add(hikvisionOrganization); return doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } + /** + * 批量删除组织 + * + * @param project + * @param indexCodes + * @return + * @throws Exception + */ public static String deleteOrgByIndexCodes(Project project, List indexCodes) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/org/batch/delete"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/org/batch/delete"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); jo.put("indexCodes", indexCodes); @@ -402,8 +462,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/page"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v1/alarmCar/page"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } @@ -418,8 +478,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v2/person/orgIndexCode/personList"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v2/person/orgIndexCode/personList"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } @@ -434,8 +494,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/org/orgIndexCodes/orgInfo"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/org/orgIndexCodes/orgInfo"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } @@ -450,8 +510,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/org/parentOrgIndexCode/subOrgList"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/org/parentOrgIndexCode/subOrgList"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } @@ -466,8 +526,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/car/charge/deletion"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v1/car/charge/deletion"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } @@ -482,32 +542,56 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/acps/v1/authDownload/task/simpleDownload"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/acps/v1/authDownload/task/simpleDownload"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, param, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } + /** + * 添加人员 + * + * @param workerInfo + * @param project + * @return + * @throws Exception + */ public static String addWorker(WorkerInfo workerInfo, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v2/person/single/add"; String host = "https://" + project.getArtemisConfigHost(); String body = HikvisionCall.getWorkerJson(workerInfo); String rs = doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); return rs; } + /** + * 编剧人员 + * + * @param workerInfo + * @param project + * @return + * @throws Exception + */ public static String editWorker(WorkerInfo workerInfo, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/person/single/update"; String host = "https://" + project.getArtemisConfigHost(); String body = HikvisionCall.getWorkerJson(workerInfo); return doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } + /** + * 添加人脸 + * + * @param workerInfo + * @param project + * @return + * @throws Exception + */ public static String addWorkerFace(WorkerInfo workerInfo, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/face/single/add"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/face/single/add"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); jo.put("personId", String.valueOf(workerInfo.getId())); @@ -525,8 +609,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/addition"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v1/alarmCar/addition"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } @@ -541,15 +625,23 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/deletion"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v1/alarmCar/deletion"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } + /** + * 删除车辆 + * + * @param carId + * @param project + * @return + * @throws Exception + */ public static String deleteCarInfoById(String carId, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/delete"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/vehicle/batch/delete"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); ArrayList list = new ArrayList<>(); @@ -569,8 +661,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/acs/v2/door/events"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/acs/v2/door/events"; String host = "https://" + project.getArtemisConfigHost(); return doPost(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -585,8 +677,8 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/crossRecords/page"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/pms/v1/crossRecords/page"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); jo.put("pageNo", param.getIntValue("pageNo")); @@ -609,15 +701,23 @@ public class HikvisionUtil { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return null; } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v2/door/search"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v2/door/search"; String host = "https://" + project.getArtemisConfigHost(); return JSON.parseObject(doPost(host, path, param.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())); } + /** + * 编辑组织 + * + * @param project + * @param hikvisionOrganization + * @return + * @throws Exception + */ public static String editOrg(Project project, HikvisionOrganization hikvisionOrganization) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/org/single/update"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/org/single/update"; String host = "https://" + project.getArtemisConfigHost(); String rs = doPost(host, path, JSONArray.toJSONString(hikvisionOrganization), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); return rs; @@ -632,8 +732,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject addAuth(Project project, JSONObject param) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/acps/v1/auth_config/add"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/acps/v1/auth_config/add"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -647,8 +747,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject deleteAuth(Project project, JSONObject param) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/acps/v1/auth_config/delete"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/acps/v1/auth_config/delete"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -662,8 +762,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject downloadAuth(Project project, JSONObject param) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/acps/v1/authDownload/configuration/shortcut"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/acps/v1/authDownload/configuration/shortcut"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -677,8 +777,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject queryDownloadProgress(Project project, JSONObject param) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/acps/v1/authDownload/task/progress"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/acps/v1/authDownload/task/progress"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -693,8 +793,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject queryAuthItem(Project project, JSONObject param) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/acps/v1/auth_item/list/search"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/acps/v1/auth_item/list/search"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -708,8 +808,8 @@ public class HikvisionUtil { * @throws Exception */ public static JSONObject queryPersonList(Project project, JSONObject param) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v2/person/advance/personList"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v2/person/advance/personList"; String host = "https://" + project.getArtemisConfigHost(); return doPostRtObj(host, path, JSONArray.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -722,14 +822,14 @@ public class HikvisionUtil { * @return */ public static JSONObject getWorkerInfoByPersonId(String uniqueId, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/person/condition/personInfo"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/person/condition/personInfo"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); jo.put("paramName", "personId"); jo.put("paramValue", Collections.singletonList(uniqueId)); String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - JSONObject joData = getJSONObjectData(rs); + JSONObject joData = getJsonObjectData(rs); Integer total = joData.getInteger("total"); if (Objects.equals(total, 1)) { JSONArray jsonArray = joData.getJSONArray("list"); @@ -748,14 +848,14 @@ public class HikvisionUtil { * @return */ public static JSONObject getWorkerInfoByCertificateNo(WorkerInfo workerInfo, Project project) throws Exception { - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/resource/v1/person/condition/personInfo"; + final String artemisPath = "/artemis"; + final String path = artemisPath + "/api/resource/v1/person/condition/personInfo"; String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); jo.put("paramName", "certificateNo"); jo.put("paramValue", Collections.singletonList(String.valueOf(workerInfo.getIdCard()))); String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - JSONObject joData = getJSONObjectData(rs); + JSONObject joData = getJsonObjectData(rs); Integer total = joData.getInteger("total"); if (Objects.equals(total, 1)) { JSONArray jsonArray = joData.getJSONArray("list");