fix(viid): 修复人脸上传适配器为空时的处理逻辑

- 增加了对人脸上传适配器为空的检查,避免空指针异常
- 优化了人脸添加的逻辑,增加了异常捕获和日志记录
- 调整了任务调度的顺序,确保人脸添加成功后再添加任务
This commit is contained in:
2025-09-09 09:46:12 +08:00
parent 7bb2905462
commit a8711f6d19

View File

@@ -308,6 +308,10 @@ public class ViidController {
} }
IStorageAdapter scenicStorageAdapter = scenicService.getScenicStorageAdapter(scenicId); IStorageAdapter scenicStorageAdapter = scenicService.getScenicStorageAdapter(scenicId);
IFaceBodyAdapter faceBodyAdapter = scenicService.getScenicFaceBodyAdapter(scenicId); IFaceBodyAdapter faceBodyAdapter = scenicService.getScenicFaceBodyAdapter(scenicId);
if (faceBodyAdapter == null) {
log.warn("人脸上传适配器不存在:" + scenicId);
continue;
}
FacePositionObject facePosition = new FacePositionObject(); FacePositionObject facePosition = new FacePositionObject();
facePosition.setLtY(face.getLeftTopY()); facePosition.setLtY(face.getLeftTopY());
facePosition.setLtX(face.getLeftTopX()); facePosition.setLtX(face.getLeftTopX());
@@ -344,13 +348,18 @@ public class ViidController {
faceSampleMapper.add(faceSample); faceSampleMapper.add(faceSample);
ThreadPoolExecutor executor = getExecutor(scenicId); ThreadPoolExecutor executor = getExecutor(scenicId);
executor.execute(() -> { executor.execute(() -> {
if (faceBodyAdapter != null) {
taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString()); taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString());
AddFaceResp addFaceResp = faceBodyAdapter.addFace(scenicId.toString(), faceSample.getId().toString(), url, newFaceSampleId.toString()); AddFaceResp addFaceResp;
try {
addFaceResp = faceBodyAdapter.addFace(scenicId.toString(), faceSample.getId().toString(), url, newFaceSampleId.toString());
} catch (Exception e) {
log.error("人脸添加失败:{}", e.getMessage());
return;
}
if (addFaceResp != null) { if (addFaceResp != null) {
faceSample.setScore(addFaceResp.getScore()); faceSample.setScore(addFaceResp.getScore());
faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore());
}
} }
if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) { if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) {
DynamicTaskGenerator.addTask(faceSample.getId()); DynamicTaskGenerator.addTask(faceSample.getId());
@@ -436,17 +445,21 @@ public class ViidController {
DynamicTaskGenerator.addTask(faceSample.getId()); DynamicTaskGenerator.addTask(faceSample.getId());
ThreadPoolExecutor executor = getExecutor(scenicId); ThreadPoolExecutor executor = getExecutor(scenicId);
executor.execute(() -> { executor.execute(() -> {
if (faceBodyAdapter != null) {
taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString()); taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString());
AddFaceResp addFaceResp = faceBodyAdapter.addFace(scenicId.toString(), faceSample.getId().toString(), url, newFaceSampleId.toString()); AddFaceResp addFaceResp;
try {
addFaceResp = faceBodyAdapter.addFace(scenicId.toString(), faceSample.getId().toString(), url, newFaceSampleId.toString());
} catch (Exception e) {
log.error("人脸添加失败:{}", e.getMessage());
return;
}
if (addFaceResp != null) { if (addFaceResp != null) {
faceSample.setScore(addFaceResp.getScore()); faceSample.setScore(addFaceResp.getScore());
faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore());
}
}
if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) { if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) {
DynamicTaskGenerator.addTask(faceSample.getId()); DynamicTaskGenerator.addTask(faceSample.getId());
} }
}
}); });
log.info("模式1人脸信息入库成功!设备ID:{}", deviceID); log.info("模式1人脸信息入库成功!设备ID:{}", deviceID);
} }