From bcffb5b0acec2bf8843a9544214634edec801045 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 14 Jun 2024 18:54:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E5=8F=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/async/AsyncHikvision.java | 84 +++++++++++++------ 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index e4f09066c..d324a2172 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -562,16 +562,16 @@ public class AsyncHikvision { return null; } if (CollUtil.isNotEmpty(addAuthWorkerIds)) { - JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, addAuthWorkerIds)); + JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, addAuthWorkerIds, devSnToIscDevSnMap)); HikvisionUtil.getJSONObjectData(aaRJo); } if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) { - JSONObject aaRJo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, deleteAuthWorkerIds)); + JSONObject aaRJo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, deleteAuthWorkerIds, devSnToIscDevSnMap)); HikvisionUtil.getJSONObjectData(aaRJo); } String devSn = devSnToJoEntry.getKey(); //然后调用【根据出入权限配置快捷下载】(设备列表)(【添加权限配置】+【快捷下发】这是一个流程,你添加了几个权限,下发成功之后,就清零了) - JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(devSnToJoEntry)); + JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(devSnToJoEntry, devSnToIscDevSnMap)); JSONObject daRtJo = HikvisionUtil.getJSONObjectData(daJo); //然后调用【查询下载任务进度】(上面那个的任务) int totalPercent = 0; @@ -586,15 +586,26 @@ public class AsyncHikvision { JSONObject qaiJo = HikvisionUtil.queryAuthItem(project, getQueryAuthItemParam(devSnToJoEntry, devSnToIscDevSnMap)); JSONObject qaiRtJo = HikvisionUtil.getJSONObjectData(qaiJo); JSONArray qaiList = qaiRtJo.getJSONArray("list"); + Set rtWorkerIdSet; if (CollUtil.isNotEmpty(qaiList)) { for (int i = 0; i < qaiList.size(); i++) { - handlerBatchWorkersResultForAddAuth(workerIdMap, devSnMap, iscDevSnToMyMap, qaiList, i, devSn, projectSn); + handlerBatchWorkersResult(workerIdMap, devSnMap, qaiList, i, devSn, projectSn, addAuthWorkerIds); } + rtWorkerIdSet = qaiList.stream().map(o -> ((JSONObject) o).getString("personId")).collect(Collectors.toSet()); + } else { + rtWorkerIdSet = new HashSet<>(); } //处理删除权限的结果的 + //1. 删除权限配置,还没删除的时候,权限变成 2更新待删除 + //2. 删除以后,删除的权限状态是 4未配置 + //3. 这个人的权限都没了以后,你就查不到这个权限条目了 //handlerBatchWorkersResultForDeleteAuth(); if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) { for (String workerId : deleteAuthWorkerIds) { + if (rtWorkerIdSet.contains(workerId)) { + //已经处理过了 + continue; + } hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(workerId), 3, 3, devSn); if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), @@ -619,65 +630,84 @@ public class AsyncHikvision { * * @param workerIdMap * @param devSnMap - * @param iscDevSnToMyMap * @param qaiList * @param i * @param devSn * @param projectSn + * @param addAuthWorkerIds */ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) - public void handlerBatchWorkersResultForAddAuth(Map workerIdMap, Map devSnMap, Map> iscDevSnToMyMap, JSONArray qaiList, int i, String devSn, String projectSn) { + public void handlerBatchWorkersResult(Map workerIdMap, Map devSnMap, JSONArray qaiList, int i, String devSn, String projectSn, List addAuthWorkerIds) { JSONObject jo = qaiList.getJSONObject(i); String personId = jo.getString("personId"); - String resourceIndexCode = jo.getString("resourceIndexCode"); - String channelNo = jo.getString("channelNo"); //人脸状态 //0:已配置未下载 //1:更新待下载 //2:更新待删除 //3:已下载 //4:未配置 + //1. 删除权限配置,还没删除的时候,权限变成 2更新待删除 + //2. 删除以后,删除的权限状态是 4未配置 + //3. 这个人的权限都没了以后,你就查不到这个权限条目了 Integer faceStatus = jo.getInteger("faceStatus"); UfaceDev dev = devSnMap.get(devSn); - if (Objects.equals(faceStatus, 3)) { - hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); + if (addAuthWorkerIds.contains(personId)) { + //添加权限 + if (Objects.equals(faceStatus, 3)) { + hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); + } else { + hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); + } + if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { + noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), + StrUtil.format("[{}]下发到[{}]{}", + workerIdMap.get(personId).getWorkerName(), + dev.getDevName(), + Objects.equals(faceStatus, 3) ? "成功" : "失败,下发异常"), + "人员下发设备提醒", "1"); + } } else { - hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); - } - if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { - noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), - StrUtil.format("[{}]下发到[{}]{}", - workerIdMap.get(personId).getWorkerName(), - dev.getDevName(), - Objects.equals(faceStatus, 3) ? "成功" : "失败,下发异常"), - "人员下发设备提醒", "1"); + //删除权限 + if (Objects.equals(faceStatus, 4)) { + hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 3, dev.getDevSn()); + } else { + hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 3, dev.getDevSn()); + } + if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { + noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), + StrUtil.format("[{}]取消下发到[{}]{}", + workerIdMap.get(personId).getWorkerName(), + dev.getDevName(), + Objects.equals(faceStatus, 4) ? "成功" : "失败,下发异常"), + "人员下发设备提醒", "1"); + } } } @NotNull - private JSONObject getAddOrDeleteAuthParam(Map.Entry> entry, List workerIds) { + private JSONObject getAddOrDeleteAuthParam(Map.Entry> entry, List workerIds, Map devSnToIscDevSnMap) { JSONObject aaJo = new JSONObject(); aaJo.put("personDatas", Collections.singletonList(new MapBuilder() .put("indexCodes", workerIds) .put("personDataType", "person") .build())); - aaJo.put("resourceInfos", getDevRqParam(entry)); + aaJo.put("resourceInfos", getDevRqParam(entry, devSnToIscDevSnMap)); return aaJo; } @NotNull - private List getDevRqParam(Map.Entry> entry) { + private List getDevRqParam(Map.Entry> entry, Map devSnToIscDevSnMap) { return Collections.singletonList(new JoBuilder() - .put("resourceIndexCode", entry.getKey()) - .put("resourceType", "door") - .put("channelNos", Collections.singletonList(1)) + .put("resourceIndexCode", devSnToIscDevSnMap.get(entry.getKey()).getString("parentIndexCode")) + .put("resourceType", "acsDevice") + .put("channelNos", Collections.singletonList(devSnToIscDevSnMap.get(entry.getKey()).getString("channelNo"))) .build()); } - private JSONObject getQueryDownloadProgressParam(Map.Entry> entry) { + private JSONObject getQueryDownloadProgressParam(Map.Entry> entry, Map devSnToIscDevSnMap) { JSONObject aaJo = new JSONObject(); aaJo.put("taskType", 4); - aaJo.put("resourceInfos", getDevRqParam(entry)); + aaJo.put("resourceInfos", getDevRqParam(entry, devSnToIscDevSnMap)); return aaJo; }