编辑人员没有人脸就不要生成下发任务
This commit is contained in:
parent
2353b24d74
commit
55a0cd7710
@ -191,17 +191,6 @@ public class AsyncHikvision {
|
|||||||
projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo);
|
projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存人员
|
|
||||||
*
|
|
||||||
* @param workerInfo
|
|
||||||
* @param isSaveWorker
|
|
||||||
* @param isSaveWorkerFace
|
|
||||||
*/
|
|
||||||
public void saveWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
|
|
||||||
this.saveWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异步保存人员
|
* 异步保存人员
|
||||||
*
|
*
|
||||||
@ -860,10 +849,19 @@ public class AsyncHikvision {
|
|||||||
List<String> workerIds = devSnToJoEntry.getValue().stream().map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList());
|
List<String> workerIds = devSnToJoEntry.getValue().stream().map(jsonObject -> jsonObject.getString("workerId")).collect(Collectors.toList());
|
||||||
JSONArray qaiList = this.queryAuthItemByWorkerList(project, workerIds, getDevRqParam(iscDevSnObj));
|
JSONArray qaiList = this.queryAuthItemByWorkerList(project, workerIds, getDevRqParam(iscDevSnObj));
|
||||||
Map<String, Integer> personId2FaceStatusMap = qaiList.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("personId"), o -> ((JSONObject) o).getInteger("faceStatus"), (o1, o2) -> o1));
|
Map<String, Integer> personId2FaceStatusMap = qaiList.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("personId"), o -> ((JSONObject) o).getInteger("faceStatus"), (o1, o2) -> o1));
|
||||||
|
Map<String, Integer> personId2FaceOperatorTypeMap = qaiList.stream().collect(Collectors.toMap(o -> ((JSONObject) o).getString("personId"), o -> Optional.ofNullable(((JSONObject) o).getJSONObject("personDownloadDetail")).map(m -> m.getJSONArray("faces")).map(m -> {
|
||||||
|
if (CollUtil.isNotEmpty(m)) {
|
||||||
|
//操作类型,0新增;1修改;2删除
|
||||||
|
return m.getJSONObject(0).getInteger("operatorType");
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}).orElse(null), (o1, o2) -> o1));
|
||||||
for (int i = 0; i < workerIds.size(); i++) {
|
for (int i = 0; i < workerIds.size(); i++) {
|
||||||
String workerId = workerIds.get(i);
|
String workerId = workerIds.get(i);
|
||||||
Integer faceStatus = personId2FaceStatusMap.get(workerId);
|
Integer faceStatus = personId2FaceStatusMap.get(workerId);
|
||||||
handlerBatchWorkersResult(workerIdMap, addAuthWorkerIds, sendNotice, dev, flowStartUser, workerId, faceStatus);
|
Integer faceOperatorType = personId2FaceOperatorTypeMap.get(workerId);
|
||||||
|
handlerBatchWorkersResult(workerIdMap, addAuthWorkerIds, sendNotice, dev, flowStartUser, workerId, faceStatus, faceOperatorType);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("批量下发权限失败:", e);
|
log.error("批量下发权限失败:", e);
|
||||||
@ -939,15 +937,23 @@ public class AsyncHikvision {
|
|||||||
/**
|
/**
|
||||||
* 处理结果:一个设备批量下发人员
|
* 处理结果:一个设备批量下发人员
|
||||||
*
|
*
|
||||||
* @param personId
|
|
||||||
* @param faceStatus
|
|
||||||
* @param workerIdMap
|
* @param workerIdMap
|
||||||
* @param addAuthWorkerIds
|
* @param addAuthWorkerIds
|
||||||
* @param sendNotice
|
* @param sendNotice
|
||||||
* @param dev
|
* @param dev
|
||||||
* @param flowStartUser
|
* @param flowStartUser
|
||||||
|
* @param personId
|
||||||
|
* @param faceStatus
|
||||||
|
* @param faceOperatorType
|
||||||
*/
|
*/
|
||||||
public void handlerBatchWorkersResult(Map<String, WorkerInfo> workerIdMap, List<String> addAuthWorkerIds, boolean sendNotice, UfaceDev dev, Long flowStartUser, String personId, Integer faceStatus) {
|
public void handlerBatchWorkersResult(Map<String, WorkerInfo> workerIdMap,
|
||||||
|
List<String> addAuthWorkerIds,
|
||||||
|
boolean sendNotice,
|
||||||
|
UfaceDev dev,
|
||||||
|
Long flowStartUser,
|
||||||
|
String personId,
|
||||||
|
Integer faceStatus,
|
||||||
|
Integer faceOperatorType) {
|
||||||
String workerName = workerIdMap.get(personId).getWorkerName();
|
String workerName = workerIdMap.get(personId).getWorkerName();
|
||||||
log.info("处理结果一个设备批量下发人员:{},{}", workerName, dev.getDevName());
|
log.info("处理结果一个设备批量下发人员:{},{}", workerName, dev.getDevName());
|
||||||
String projectSn = dev.getProjectSn();
|
String projectSn = dev.getProjectSn();
|
||||||
@ -964,7 +970,7 @@ public class AsyncHikvision {
|
|||||||
if (addAuthWorkerIds.contains(personId)) {
|
if (addAuthWorkerIds.contains(personId)) {
|
||||||
//添加权限
|
//添加权限
|
||||||
int addAuth = 3;
|
int addAuth = 3;
|
||||||
if (Objects.equals(faceStatus, addAuth)) {
|
if (Objects.equals(faceStatus, addAuth) && !Objects.equals(faceOperatorType, 2)) {
|
||||||
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn());
|
hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn());
|
||||||
Long syncId = ThreadLocalUtil.getByKey(Cts.TL_HK_SYNC_ID, Long.class);
|
Long syncId = ThreadLocalUtil.getByKey(Cts.TL_HK_SYNC_ID, Long.class);
|
||||||
if (syncId != null) {
|
if (syncId != null) {
|
||||||
|
|||||||
@ -657,16 +657,24 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addHkSyncRecordAndResetStatusForEditAuth(WorkerInfo workerInfo) {
|
public void addHkSyncRecordAndResetStatusForEditAuth(WorkerInfo workerInfo) {
|
||||||
Pair<String, String> sendAndDeleteDevSnsPair = getSendAndDeleteDevSns(workerInfo);
|
if (StrUtil.isNotBlank(workerInfo.getFieldAcquisitionUrl())) {
|
||||||
String devSns = sendAndDeleteDevSnsPair.getLeft();
|
Pair<String, String> sendAndDeleteDevSnsPair = getSendAndDeleteDevSns(workerInfo);
|
||||||
for (String devSn : StrUtil.split(devSns, Cts.COMMA)) {
|
String devSns = sendAndDeleteDevSnsPair.getLeft();
|
||||||
XzHikvisionSync sync = new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(devSn).setBigType(1).setCreateDate(getSyncTimeWithInitAndDeleteSyncIfAbsent(1, workerInfo.getId()));
|
for (String devSn : StrUtil.split(devSns, Cts.COMMA)) {
|
||||||
saveSyncDev(workerInfo, devSn, sync);
|
XzHikvisionSync sync = new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(devSn).setBigType(1).setCreateDate(getSyncTimeWithInitAndDeleteSyncIfAbsent(1, workerInfo.getId()));
|
||||||
}
|
saveSyncDev(workerInfo, devSn, sync);
|
||||||
String deleteDevSns = sendAndDeleteDevSnsPair.getRight();
|
}
|
||||||
for (String deleteDevSn : StrUtil.split(deleteDevSns, Cts.COMMA)) {
|
String deleteDevSns = sendAndDeleteDevSnsPair.getRight();
|
||||||
XzHikvisionSync sync = new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(3).setWhoId(workerInfo.getId()).setDeviceSn(deleteDevSn).setBigType(1).setCreateDate(getSyncTimeWithInitAndDeleteSyncIfAbsent(1, workerInfo.getId()));
|
for (String deleteDevSn : StrUtil.split(deleteDevSns, Cts.COMMA)) {
|
||||||
saveSyncDev(workerInfo, deleteDevSn, sync);
|
XzHikvisionSync sync = new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(3).setWhoId(workerInfo.getId()).setDeviceSn(deleteDevSn).setBigType(1).setCreateDate(getSyncTimeWithInitAndDeleteSyncIfAbsent(1, workerInfo.getId()));
|
||||||
|
saveSyncDev(workerInfo, deleteDevSn, sync);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
xzHikvisionSyncService.remove(new LambdaQueryWrapper<XzHikvisionSync>()
|
||||||
|
.eq(XzHikvisionSync::getBigType, 1)
|
||||||
|
.eq(XzHikvisionSync::getType, 3)
|
||||||
|
.eq(XzHikvisionSync::getWhoId, workerInfo.getId())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
workerInfoService.updateWorkerHkStatus(workerInfo);
|
workerInfoService.updateWorkerHkStatus(workerInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
54
src/main/java/com/zhgd/xmgl/util/AsyncTaskUtil.java
Normal file
54
src/main/java/com/zhgd/xmgl/util/AsyncTaskUtil.java
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package com.zhgd.xmgl.util;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class AsyncTaskUtil {
|
||||||
|
|
||||||
|
private static ThreadPoolTaskExecutor doubleCarbonExecutor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行异步任务
|
||||||
|
*/
|
||||||
|
public static CompletableFuture<Void> runAsync(Runnable task) {
|
||||||
|
return runAsync(task, "异步任务执行异常");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行异步任务
|
||||||
|
*
|
||||||
|
* @param task
|
||||||
|
* @param errLogName 错误日志名称
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static CompletableFuture<Void> runAsync(Runnable task, String errLogName) {
|
||||||
|
return CompletableFuture.runAsync(task, doubleCarbonExecutor).exceptionally(throwable -> {
|
||||||
|
log.error(errLogName, throwable);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行异步任务并支持异常处理
|
||||||
|
*/
|
||||||
|
public static CompletableFuture<Void> runAsync(Runnable task, Consumer<Throwable> exceptionHandler) {
|
||||||
|
return CompletableFuture.runAsync(task, doubleCarbonExecutor)
|
||||||
|
.exceptionally(throwable -> {
|
||||||
|
exceptionHandler.accept(throwable);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public void setDoubleCarbonExecutor(@Qualifier("doubleCarbonExecutor") ThreadPoolTaskExecutor executor) {
|
||||||
|
AsyncTaskUtil.doubleCarbonExecutor = executor;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user