下发修改

This commit is contained in:
guoshengxiong 2024-06-14 18:54:36 +08:00
parent 947002d9b6
commit bcffb5b0ac

View File

@ -562,16 +562,16 @@ public class AsyncHikvision {
return null; return null;
} }
if (CollUtil.isNotEmpty(addAuthWorkerIds)) { if (CollUtil.isNotEmpty(addAuthWorkerIds)) {
JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, addAuthWorkerIds)); JSONObject aaRJo = HikvisionUtil.addAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, addAuthWorkerIds, devSnToIscDevSnMap));
HikvisionUtil.getJSONObjectData(aaRJo); HikvisionUtil.getJSONObjectData(aaRJo);
} }
if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) { if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) {
JSONObject aaRJo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, deleteAuthWorkerIds)); JSONObject aaRJo = HikvisionUtil.deleteAuth(project, getAddOrDeleteAuthParam(devSnToJoEntry, deleteAuthWorkerIds, devSnToIscDevSnMap));
HikvisionUtil.getJSONObjectData(aaRJo); HikvisionUtil.getJSONObjectData(aaRJo);
} }
String devSn = devSnToJoEntry.getKey(); String devSn = devSnToJoEntry.getKey();
//然后调用根据出入权限配置快捷下载设备列表添加权限配置+快捷下发这是一个流程你添加了几个权限下发成功之后就清零了 //然后调用根据出入权限配置快捷下载设备列表添加权限配置+快捷下发这是一个流程你添加了几个权限下发成功之后就清零了
JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(devSnToJoEntry)); JSONObject daJo = HikvisionUtil.downloadAuth(project, getQueryDownloadProgressParam(devSnToJoEntry, devSnToIscDevSnMap));
JSONObject daRtJo = HikvisionUtil.getJSONObjectData(daJo); JSONObject daRtJo = HikvisionUtil.getJSONObjectData(daJo);
//然后调用查询下载任务进度上面那个的任务 //然后调用查询下载任务进度上面那个的任务
int totalPercent = 0; int totalPercent = 0;
@ -586,15 +586,26 @@ public class AsyncHikvision {
JSONObject qaiJo = HikvisionUtil.queryAuthItem(project, getQueryAuthItemParam(devSnToJoEntry, devSnToIscDevSnMap)); JSONObject qaiJo = HikvisionUtil.queryAuthItem(project, getQueryAuthItemParam(devSnToJoEntry, devSnToIscDevSnMap));
JSONObject qaiRtJo = HikvisionUtil.getJSONObjectData(qaiJo); JSONObject qaiRtJo = HikvisionUtil.getJSONObjectData(qaiJo);
JSONArray qaiList = qaiRtJo.getJSONArray("list"); JSONArray qaiList = qaiRtJo.getJSONArray("list");
Set<String> rtWorkerIdSet;
if (CollUtil.isNotEmpty(qaiList)) { if (CollUtil.isNotEmpty(qaiList)) {
for (int i = 0; i < qaiList.size(); i++) { 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(); //handlerBatchWorkersResultForDeleteAuth();
if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) { if (CollUtil.isNotEmpty(deleteAuthWorkerIds)) {
for (String workerId : deleteAuthWorkerIds) { for (String workerId : deleteAuthWorkerIds) {
if (rtWorkerIdSet.contains(workerId)) {
//已经处理过了
continue;
}
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(workerId), 3, 3, devSn); hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(workerId), 3, 3, devSn);
if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) {
noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(),
@ -619,26 +630,29 @@ public class AsyncHikvision {
* *
* @param workerIdMap * @param workerIdMap
* @param devSnMap * @param devSnMap
* @param iscDevSnToMyMap
* @param qaiList * @param qaiList
* @param i * @param i
* @param devSn * @param devSn
* @param projectSn * @param projectSn
* @param addAuthWorkerIds
*/ */
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public void handlerBatchWorkersResultForAddAuth(Map<String, WorkerInfo> workerIdMap, Map<String, UfaceDev> devSnMap, Map<String, Map<String, JSONObject>> iscDevSnToMyMap, JSONArray qaiList, int i, String devSn, String projectSn) { public void handlerBatchWorkersResult(Map<String, WorkerInfo> workerIdMap, Map<String, UfaceDev> devSnMap, JSONArray qaiList, int i, String devSn, String projectSn, List<String> addAuthWorkerIds) {
JSONObject jo = qaiList.getJSONObject(i); JSONObject jo = qaiList.getJSONObject(i);
String personId = jo.getString("personId"); String personId = jo.getString("personId");
String resourceIndexCode = jo.getString("resourceIndexCode");
String channelNo = jo.getString("channelNo");
//人脸状态 //人脸状态
//0已配置未下载 //0已配置未下载
//1更新待下载 //1更新待下载
//2更新待删除 //2更新待删除
//3已下载 //3已下载
//4未配置 //4未配置
//1. 删除权限配置还没删除的时候权限变成 2更新待删除
//2. 删除以后删除的权限状态是 4未配置
//3. 这个人的权限都没了以后你就查不到这个权限条目了
Integer faceStatus = jo.getInteger("faceStatus"); Integer faceStatus = jo.getInteger("faceStatus");
UfaceDev dev = devSnMap.get(devSn); UfaceDev dev = devSnMap.get(devSn);
if (addAuthWorkerIds.contains(personId)) {
//添加权限
if (Objects.equals(faceStatus, 3)) { if (Objects.equals(faceStatus, 3)) {
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn());
} else { } else {
@ -652,32 +666,48 @@ public class AsyncHikvision {
Objects.equals(faceStatus, 3) ? "成功" : "失败,下发异常"), Objects.equals(faceStatus, 3) ? "成功" : "失败,下发异常"),
"人员下发设备提醒", "1"); "人员下发设备提醒", "1");
} }
} else {
//删除权限
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 @NotNull
private JSONObject getAddOrDeleteAuthParam(Map.Entry<String, List<JSONObject>> entry, List<String> workerIds) { private JSONObject getAddOrDeleteAuthParam(Map.Entry<String, List<JSONObject>> entry, List<String> workerIds, Map<String, JSONObject> devSnToIscDevSnMap) {
JSONObject aaJo = new JSONObject(); JSONObject aaJo = new JSONObject();
aaJo.put("personDatas", Collections.singletonList(new MapBuilder<String, Object>() aaJo.put("personDatas", Collections.singletonList(new MapBuilder<String, Object>()
.put("indexCodes", workerIds) .put("indexCodes", workerIds)
.put("personDataType", "person") .put("personDataType", "person")
.build())); .build()));
aaJo.put("resourceInfos", getDevRqParam(entry)); aaJo.put("resourceInfos", getDevRqParam(entry, devSnToIscDevSnMap));
return aaJo; return aaJo;
} }
@NotNull @NotNull
private List<JSONObject> getDevRqParam(Map.Entry<String, List<JSONObject>> entry) { private List<JSONObject> getDevRqParam(Map.Entry<String, List<JSONObject>> entry, Map<String, JSONObject> devSnToIscDevSnMap) {
return Collections.singletonList(new JoBuilder() return Collections.singletonList(new JoBuilder()
.put("resourceIndexCode", entry.getKey()) .put("resourceIndexCode", devSnToIscDevSnMap.get(entry.getKey()).getString("parentIndexCode"))
.put("resourceType", "door") .put("resourceType", "acsDevice")
.put("channelNos", Collections.singletonList(1)) .put("channelNos", Collections.singletonList(devSnToIscDevSnMap.get(entry.getKey()).getString("channelNo")))
.build()); .build());
} }
private JSONObject getQueryDownloadProgressParam(Map.Entry<String, List<JSONObject>> entry) { private JSONObject getQueryDownloadProgressParam(Map.Entry<String, List<JSONObject>> entry, Map<String, JSONObject> devSnToIscDevSnMap) {
JSONObject aaJo = new JSONObject(); JSONObject aaJo = new JSONObject();
aaJo.put("taskType", 4); aaJo.put("taskType", 4);
aaJo.put("resourceInfos", getDevRqParam(entry)); aaJo.put("resourceInfos", getDevRqParam(entry, devSnToIscDevSnMap));
return aaJo; return aaJo;
} }