From a8711f6d19febca5fdc0974048716a6a6192e345 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 9 Sep 2025 09:46:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(viid):=20=E4=BF=AE=E5=A4=8D=E4=BA=BA?= =?UTF-8?q?=E8=84=B8=E4=B8=8A=E4=BC=A0=E9=80=82=E9=85=8D=E5=99=A8=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加了对人脸上传适配器为空的检查,避免空指针异常 - 优化了人脸添加的逻辑,增加了异常捕获和日志记录 - 调整了任务调度的顺序,确保人脸添加成功后再添加任务 --- .../basic/controller/viid/ViidController.java | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/ycwl/basic/controller/viid/ViidController.java b/src/main/java/com/ycwl/basic/controller/viid/ViidController.java index 1050e8e..f5d5a70 100644 --- a/src/main/java/com/ycwl/basic/controller/viid/ViidController.java +++ b/src/main/java/com/ycwl/basic/controller/viid/ViidController.java @@ -308,6 +308,10 @@ public class ViidController { } IStorageAdapter scenicStorageAdapter = scenicService.getScenicStorageAdapter(scenicId); IFaceBodyAdapter faceBodyAdapter = scenicService.getScenicFaceBodyAdapter(scenicId); + if (faceBodyAdapter == null) { + log.warn("人脸上传适配器不存在:" + scenicId); + continue; + } FacePositionObject facePosition = new FacePositionObject(); facePosition.setLtY(face.getLeftTopY()); facePosition.setLtX(face.getLeftTopX()); @@ -344,13 +348,18 @@ public class ViidController { faceSampleMapper.add(faceSample); ThreadPoolExecutor executor = getExecutor(scenicId); executor.execute(() -> { - if (faceBodyAdapter != null) { - taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString()); - AddFaceResp addFaceResp = faceBodyAdapter.addFace(scenicId.toString(), faceSample.getId().toString(), url, newFaceSampleId.toString()); - if (addFaceResp != null) { - faceSample.setScore(addFaceResp.getScore()); - faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); - } + taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.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) { + faceSample.setScore(addFaceResp.getScore()); + faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); + } if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) { DynamicTaskGenerator.addTask(faceSample.getId()); @@ -436,16 +445,20 @@ public class ViidController { DynamicTaskGenerator.addTask(faceSample.getId()); ThreadPoolExecutor executor = getExecutor(scenicId); executor.execute(() -> { - if (faceBodyAdapter != null) { - taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString()); - AddFaceResp addFaceResp = faceBodyAdapter.addFace(scenicId.toString(), faceSample.getId().toString(), url, newFaceSampleId.toString()); - if (addFaceResp != null) { - faceSample.setScore(addFaceResp.getScore()); - faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); - } + taskFaceService.assureFaceDb(faceBodyAdapter, scenicId.toString()); + AddFaceResp addFaceResp; + try { + addFaceResp = faceBodyAdapter.addFace(scenicId.toString(), faceSample.getId().toString(), url, newFaceSampleId.toString()); + } catch (Exception e) { + log.error("人脸添加失败:{}", e.getMessage()); + return; } - if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) { - DynamicTaskGenerator.addTask(faceSample.getId()); + if (addFaceResp != null) { + faceSample.setScore(addFaceResp.getScore()); + faceSampleMapper.updateScore(faceSample.getId(), addFaceResp.getScore()); + if (Integer.valueOf(1).equals(deviceConfig.getInteger("enable_pre_book"))) { + DynamicTaskGenerator.addTask(faceSample.getId()); + } } }); log.info("模式1人脸信息入库成功!设备ID:{}", deviceID);