diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 0fdc69a4d..c8c92adb5 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.gexin.fastjson.JSON; import com.zhgd.jeecg.common.execption.OpenPromptException; import com.zhgd.jeecg.common.util.SpringContextUtils; import com.zhgd.jeecg.common.util.pass.HttpUtils; @@ -601,6 +602,20 @@ public class AsyncHikvision { ProjectInfoExtVo project = projectService.getProjectInfoBySn(projectSn); //判断人员的图片存在isc Map workerIdMap = workerList.stream().collect(Collectors.toMap(workerInfo -> workerInfo.getId() + "", Function.identity())); + Map devSnMap = allDevList.stream().collect(Collectors.toMap(UfaceDev::getDevSn, Function.identity())); + for (JSONObject jo : workerAndDevSnList) { + String workerId = jo.getString("workerId"); + String devSn = jo.getString("devSn"); + WorkerInfo workerInfo = workerIdMap.get(workerId); + if (workerInfo != null) { + jo.put("workerName", workerInfo.getWorkerName()); + } + UfaceDev ufaceDev = devSnMap.get(devSn); + if (ufaceDev != null) { + jo.put("devName", ufaceDev.getDevName()); + } + } + log.info("开始准备下发人员到isc:{}", JSONObject.toJSONString(workerAndDevSnList)); ArrayList futures = new ArrayList<>(); if (checkEditWorkers) { ArrayList needEditWorkers = getNeedEditWorkers(workerList, project, workerIdMap); @@ -614,12 +629,12 @@ public class AsyncHikvision { future.get(); } } - Map devSnMap = allDevList.stream().collect(Collectors.toMap(UfaceDev::getDevSn, Function.identity())); JSONObject gdvJo = HikvisionUtil.getDoorsV2(project, HikvisionUtil.addPageParamIfAbsent(new JSONObject())); 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)); workerAndDevSnList = this.addNeedSimpleAuthProp(workerAndDevSnList, devSnToIscDevSnMap, project); + log.info("准备下发人员到isc:{}", JSONObject.toJSONString(workerAndDevSnList)); Map> devSnToJoMap = workerAndDevSnList.stream().collect(Collectors.groupingBy(jsonObject -> jsonObject.getString("devSn"))); futures = new ArrayList<>(); for (Map.Entry> entry : devSnToJoMap.entrySet()) { @@ -809,6 +824,7 @@ public class AsyncHikvision { */ @Async("workerBeWaitHkExecutor") public Future sendBatchWorkersForOneDevAsync(UfaceDev dev, Map.Entry> devSnToJoEntry, Map workerIdMap, List workerList, ProjectInfoExtVo project, String projectSn, boolean sendNotice, Long flowStartUser, JSONObject iscDevSnObj) { + log.info("一个设备批量下发人员:{}", JSON.toJSONString(devSnToJoEntry)); String devSn = devSnToJoEntry.getKey(); List addAuthWorkerIds = devSnToJoEntry.getValue().stream().filter(jo -> jo.getBoolean(Cts.IS_ADD_AUTH)).map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList()); List deleteAuthWorkerIds = devSnToJoEntry.getValue().stream().filter(jo -> !jo.getBoolean(Cts.IS_ADD_AUTH) && !jo.getBoolean(Cts.IS_SIMPLE_DELETE_AUTH)).map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList()); @@ -846,7 +862,7 @@ public class AsyncHikvision { } while (totalPercent != 100); //权限下发后(进度100后),用【查询权限条目列表】(人员列表,设备列表)接口去查,返回参数有权限状态,返回已下载的就是有权限 List workerIds = devSnToJoEntry.getValue().stream().map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList()); - JSONArray qaiList = queryAuthItemByWorkerList(project, workerIds, getDevRqParam(iscDevSnObj)); + JSONArray qaiList = this.queryAuthItemByWorkerList(project, workerIds, getDevRqParam(iscDevSnObj)); Set rtWorkerIdSet; if (CollUtil.isNotEmpty(qaiList)) { for (int i = 0; i < qaiList.size(); i++) { @@ -960,8 +976,10 @@ public class AsyncHikvision { * @param flowStartUser */ public void handlerBatchWorkersResult(Map workerIdMap, List addAuthWorkerIds, boolean sendNotice, UfaceDev dev, Long flowStartUser, JSONObject jo) { - String projectSn = dev.getProjectSn(); String personId = jo.getString("personId"); + String workerName = workerIdMap.get(personId).getWorkerName(); + log.info("处理结果一个设备批量下发人员:{},{}", workerName, dev.getDevName()); + String projectSn = dev.getProjectSn(); //人脸状态 //0:已配置未下载 //1:更新待下载 @@ -989,7 +1007,7 @@ public class AsyncHikvision { for (Long noticeUserId : noticeUserIds) { noticeService.addUserNotice(noticeUserId, "人员下发设备提醒", StrUtil.format("[{}]下发到[{}]{}", - workerIdMap.get(personId).getWorkerName(), + workerName, dev.getDevName(), Objects.equals(faceStatus, 3) ? "成功" : "失败,下发异常"), "1"); @@ -1006,7 +1024,7 @@ public class AsyncHikvision { for (Long noticeUserId : noticeUserIds) { noticeService.addUserNotice(noticeUserId, "人员下发设备提醒", StrUtil.format("[{}]取消下发到[{}]{}", - workerIdMap.get(personId).getWorkerName(), + workerName, dev.getDevName(), Objects.equals(faceStatus, deleteAuth) ? "成功" : "失败,下发异常"), "1");