suntianwu пре 3 година
родитељ
комит
2f394703ef

+ 5 - 6
src/main/java/com/iden/bms/controller/PersonController.java

@@ -304,12 +304,11 @@ public class PersonController {
     public Result<Object> deletePerson(HttpServletRequest request,@RequestHeader("token") String token,
                                  @PathVariable("id") Long id){
         try {
-            if( this.personService.deleteById(id)){
-                return  Result.success("删除成功!");
-            } else {
-                return Result.error("人员被引用,删除失败!");
-            }
-
+            this.personService.deleteById(id);
+            return  Result.success("删除成功!");
+        } catch (BDException e) {
+            log.error("人员删除-出现异常",e);
+            return Result.error(e.getMessage());
         } catch (Exception e) {
             log.error("人员管理: 删除出现异常",e);
             return Result.error("删除失败!");

+ 12 - 8
src/main/java/com/iden/bms/service/FaceIdenService.java

@@ -73,11 +73,11 @@ public class FaceIdenService {
     public void initFaceDataset() {
         intPesontFaceDataset();
         intStrangerFaceDataset();
-        intTmprFaceDataset();
+        intTmpFaceDataset();
     }
 
     private void intPesontFaceDataset() {
-        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper();
+        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
         queryWrapper.select("id","name","feat_ptr");
         queryWrapper.lambda().isNotNull(IdenPerson::getFeatPtr);
         List<IdenPerson> idenPersonList = idenPersonService.list(queryWrapper);
@@ -121,10 +121,14 @@ public class FaceIdenService {
         }
     }
 
-    private void intTmprFaceDataset(){
+    private void intTmpFaceDataset(){
         FaceMonitor faceMonitorTmp = FaceIdenTool.initFaceMonitor(idenRoot);
         if(faceMonitorTmp != null){
-            FaceMoniterCache.setFaceMonitor(Constants.FACE_CACHE_TMP_KEY,faceMonitorTmp);
+            FaceMoniterCache.setFaceMonitor(Constants.FACE_CACHE_CONTINUE_TMP_KEY,faceMonitorTmp);
+        }
+        FaceMonitor faceMonitorTmp2 = FaceIdenTool.initFaceMonitor(idenRoot);
+        if(faceMonitorTmp != null){
+            FaceMoniterCache.setFaceMonitor(Constants.FACE_CACHE_CONTINUE_TMP_KEY,faceMonitorTmp);
         }
     }
 
@@ -135,7 +139,7 @@ public class FaceIdenService {
     public void destroyFaceDataset() {
         FaceIdenTool.releaseEngine(FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_PERSON_KEY));
         FaceIdenTool.releaseEngine(FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_STRANGER_KEY));
-        FaceIdenTool.releaseEngine(FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_TMP_KEY));
+        FaceIdenTool.releaseEngine(FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_CONTINUE_TMP_KEY));
     }
 
     /**
@@ -292,7 +296,7 @@ public class FaceIdenService {
     //查询以前的陌生人图库,进行人脸识别,若是同一个人,得到uid
     private String relevanceBeforeFace(String featPtrVisitor){
         FaceMonitor faceMonitorStranger = FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_STRANGER_KEY);
-        FaceRetrieveResultVO vo = FaceIdenTool.isHit(idenRoot,featPtrVisitor,faceMonitorStranger);
+        FaceRetrieveResultVO vo = FaceIdenTool.getHitResult(faceMonitorStranger,featPtrVisitor);
         if(vo != null) {
             long index = vo.getIndex();
             IdenFaceImage idenFaceImage = this.idenFaceImageService.getById(index);
@@ -332,7 +336,7 @@ public class FaceIdenService {
             logger.info("FaceIdenService.isContinuation ...4 featPtrList =" + featPtrList);
 
             if(CollUtil.isNotEmpty(featPtrList)){
-                FaceMonitor faceMonitorTmp = FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_TMP_KEY);
+                FaceMonitor faceMonitorTmp = FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_CONTINUE_TMP_KEY);
                 FaceModel[] dataset = new FaceModel[featPtrList.size()];
                 for(int i = 0; i< featPtrList.size(); i++) {
                     dataset[i].setPersonId(i);
@@ -341,7 +345,7 @@ public class FaceIdenService {
                 }
                 faceMonitorTmp.loadFaceDataset(dataset);
 
-                FaceRetrieveResultVO vo = FaceIdenTool.isHit(idenRoot,featPtr,faceMonitorTmp);
+                FaceRetrieveResultVO vo = FaceIdenTool.getHitResult(faceMonitorTmp,featPtr);
                 logger.info("FaceIdenService.isContinuation ... 5==" + vo);
                 return vo != null;
             } else {

+ 0 - 13
src/main/java/com/iden/bms/service/FaceImageService.java

@@ -125,17 +125,4 @@ public class FaceImageService {
         return null;
     }
 
-    /**
-     * 根据图像文件名称得到IdenFaceImage
-     * @param imageFileName
-     * @return
-     */
-    public IdenFaceImage getIdenFaceImageByImageFileName(String imageFileName){
-
-        QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(IdenFaceImage::getImage,imageFileName);
-        IdenFaceImage idenFaceImage = idenFaceImageService.getOne(queryWrapper);
-        return idenFaceImage;
-    }
-
 }

+ 94 - 68
src/main/java/com/iden/bms/service/PersonService.java

@@ -13,22 +13,18 @@ import com.face.monitor.model.FaceModel;
 import com.iden.bms.tool.FaceIdenTool;
 import com.iden.common.cache.DictCache;
 import com.iden.common.cache.FaceMoniterCache;
+import com.iden.common.cache.RedisKeyConstant;
+import com.iden.common.cache.RedisUtil;
 import com.iden.common.constant.Constants;
-import com.iden.common.entity.IdenCommunity;
-import com.iden.common.entity.IdenCrowd;
-import com.iden.common.entity.IdenPerson;
+import com.iden.common.entity.*;
 
-import com.iden.common.entity.IdenPersonCrowdRef;
 import com.iden.common.enums.CredentialsTypeEnum;
 import com.iden.common.enums.GenderEnum;
 import com.iden.common.enums.PersonTypeEnum;
 import com.iden.common.enums.PopulationTypeEnum;
 import com.iden.common.exceltool.RowWriteHandler;
 import com.iden.common.exception.BDException;
-import com.iden.common.service.IdenCommunityService;
-import com.iden.common.service.IdenCrowdService;
-import com.iden.common.service.IdenPersonCrowdRefService;
-import com.iden.common.service.IdenPersonService;
+import com.iden.common.service.*;
 import com.iden.common.util.ByteUtil;
 import com.iden.common.util.DateUtils;
 import com.iden.common.util.ImgUtil;
@@ -71,6 +67,11 @@ public class PersonService {
     private IdenCrowdService idenCrowdService;
     @Resource
     private IdenCommunityService idenCommunityService;
+    @Resource
+    private IdenWarningPersonService idenWarningPersonService;
+
+    @Resource
+    private RedisUtil redisUtil;
 
     @Value("${iden.root:#{null}}")
     private String idenRoot;
@@ -526,6 +527,7 @@ public class PersonService {
 
                         idenPerson.setCreateTime(new Date());
                         idenPersonService.save(idenPerson);
+                        appendFaceDataset(idenPerson);
 
                         personIdList.add(idenPerson.getId());
                         List<Long> crowdIds = item.getCrowdIds();
@@ -567,24 +569,46 @@ public class PersonService {
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public boolean deleteById(Long id){
-        IdenPerson idenPerson = this.idenPersonService.getById(id);
+    public void deleteById(Long id) throws BDException {
+        String key = RedisKeyConstant.PERSON_DELETE;
+        String requestId = UUID.randomUUID().toString();
+        boolean result = redisUtil.tryLock(key,requestId,10 * 60);
+        try {
+            if (result) {
+                QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
+                queryWrapper0.lambda().eq(IdenWarningPerson::getPersonId,id);
+                int cnt = this.idenWarningPersonService.count(queryWrapper0);
+                if(cnt > 0){
+                    throw new BDException("人员被引用,不能删除");
+                }
 
-        QueryWrapper<IdenPersonCrowdRef> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(IdenPersonCrowdRef::getPersonId,idenPerson.getId());
-        idenPersonCrowdRefService.remove(queryWrapper);
+                IdenPerson idenPerson = this.idenPersonService.getById(id);
 
-        String image = idenPerson.getImage();
-        IdenCommunity idenCommunity = this.idenCommunityService.getById(idenPerson.getCommunityId());
-        if (StringUtils.isNotEmpty(image) && idenCommunity != null) {
-            File imageFile = new File(idenRoot + "data/final/person/image/" + idenCommunity.getCode() + "/" + image.substring(image.lastIndexOf("/")));
-            if(imageFile.exists()){
-                imageFile.delete();
+                QueryWrapper<IdenPersonCrowdRef> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(IdenPersonCrowdRef::getPersonId,idenPerson.getId());
+                idenPersonCrowdRefService.remove(queryWrapper);
+
+                String image = idenPerson.getImage();
+                IdenCommunity idenCommunity = this.idenCommunityService.getById(idenPerson.getCommunityId());
+                if (StringUtils.isNotEmpty(image) && idenCommunity != null) {
+                    File imageFile = new File(idenRoot + "data/final/person/image/" + idenCommunity.getCode() + "/" + image.substring(image.lastIndexOf("/")));
+                    if(imageFile.exists()){
+                        imageFile.delete();
+                    }
+                }
+                this.idenPersonService.removeById(id);
+                reloadFaceDataset();
+
+            } else {
+                throw new BDException("不能多人同时删除,稍后再试");
             }
+        } catch (Exception e) {
+            e.getMessage();
+
+        }  finally {
+            redisUtil.releaseLock(key,requestId);
         }
-        this.idenPersonService.removeById(id);
-        reloadFaceDataset();
-        return true;
+
     }
 
     /**
@@ -744,47 +768,60 @@ public class PersonService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void updatePerson(PersonVO vo) throws BDException {
-        vo.setCommunityId(null);//不能修改小区
+        String key = RedisKeyConstant.PERSON_UPDATE;
+        String requestId = UUID.randomUUID().toString();
+        boolean result = redisUtil.tryLock(key,requestId,10 * 60);
+        try {
+            if (result) {
+                vo.setCommunityId(null);//不能修改小区
+
+                IdenPerson idenPerson = this.idenPersonService.getById(vo.getId());
+                Long communityId = idenPerson.getCommunityId();
+                IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
+
+                //保存人员
+                String oldImage = idenPerson.getImage();
+                BeanUtil.copyProperties(vo,idenPerson);
+                String newImage = vo.getImage();
+                if (StringUtils.isNotEmpty(newImage) && !newImage.equals(oldImage)){
+                    //识别
+                    String fileNameNew = newImage.substring(newImage.lastIndexOf("/"));
+                    File imgFileNew = new File(idenRoot + "data/final/person/image/" + idenCommunity.getCode() + "/" + fileNameNew);
+                    String featPtr = FaceIdenTool.getFeatPtr(idenRoot,imgFileNew);
+                    if (FaceIdenTool.isBad(featPtr)){
+                        File discardDir = new File(imgFileNew.getParentFile().getAbsolutePath().replace("final","discard"));
+                        if(!discardDir.exists()){
+                            discardDir.mkdirs();
+                        }
+                        File discardImgFile = new File(discardDir, fileNameNew);
+                        imgFileNew.renameTo(discardImgFile);//移动到废弃目录
+                        throw new BDException("图像识别失败,请上传正确人脸图像");
+                    }
 
-        IdenPerson idenPerson = this.idenPersonService.getById(vo.getId());
-        Long communityId = idenPerson.getCommunityId();
-        IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
+                    idenPerson.setFeatPtr(featPtr);
+                    // 删除老的文件
+                    if(StringUtils.isNotEmpty(oldImage)){
+                        String fileNameOld = oldImage.substring(oldImage.lastIndexOf("/"));
+                        File imgFileOld = new File(idenRoot + "data/final/person/image/" + idenCommunity.getCode() + "/" + fileNameOld);
+                        if(imgFileOld.exists()){
+                            imgFileOld.delete();
+                        }
+                    }
 
-        //保存人员
-        String oldImage = idenPerson.getImage();
-        BeanUtil.copyProperties(vo,idenPerson);
-        String newImage = vo.getImage();
-        if (StringUtils.isNotEmpty(newImage) && !newImage.equals(oldImage)){
-            //识别
-            String fileNameNew = newImage.substring(newImage.lastIndexOf("/"));
-            File imgFileNew = new File(idenRoot + "data/final/person/image/" + idenCommunity.getCode() + "/" + fileNameNew);
-            String featPtr = FaceIdenTool.getFeatPtr(idenRoot,imgFileNew);
-            if (FaceIdenTool.isBad(featPtr)){
-                File discardDir = new File(imgFileNew.getParentFile().getAbsolutePath().replace("final","discard"));
-                if(!discardDir.exists()){
-                    discardDir.mkdirs();
                 }
-                File discardImgFile = new File(discardDir, fileNameNew);
-                imgFileNew.renameTo(discardImgFile);//移动到废弃目录
-                throw new BDException("图像识别失败,请上传正确人脸图像");
-            }
+                idenPerson.setModifyTime(new Date());
 
-            idenPerson.setFeatPtr(featPtr);
-            // 删除老的文件
-            if(StringUtils.isNotEmpty(oldImage)){
-                String fileNameOld = oldImage.substring(oldImage.lastIndexOf("/"));
-                File imgFileOld = new File(idenRoot + "data/final/person/image/" + idenCommunity.getCode() + "/" + fileNameOld);
-                if(imgFileOld.exists()){
-                    imgFileOld.delete();
-                }
-            }
+                this.idenPersonService.updateById(idenPerson);
 
+                reloadFaceDataset();
+            } else {
+                throw new BDException("不能多人同时修改,稍后再试");
+            }
+        } catch (Exception e) {
+            e.getMessage();
+        }  finally {
+            redisUtil.releaseLock(key,requestId);
         }
-        idenPerson.setModifyTime(new Date());
-
-        this.idenPersonService.updateById(idenPerson);
-
-        reloadFaceDataset();
 
     }
 
@@ -817,16 +854,5 @@ public class PersonService {
        return featPtr;
 
     }
-    /**
-     * 根据图像文件名称得到IdenPerson
-     * @param imageFileName
-     * @return
-     */
-    public IdenPerson getPersonIdByImageFileName(String imageFileName){
 
-        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().like(IdenPerson::getImage,imageFileName);
-        IdenPerson idenPerson = idenPersonService.getOne(queryWrapper);
-        return idenPerson;
-    }
 }

+ 25 - 35
src/main/java/com/iden/bms/service/TraceService.java

@@ -20,6 +20,8 @@ import com.iden.common.exception.BDException;
 import com.iden.common.service.IdenCameraService;
 import com.iden.common.service.IdenCameraVideoService;
 import com.iden.common.service.IdenCommunityService;
+import com.iden.common.service.IdenFaceImageService;
+import com.iden.common.util.ByteUtil;
 import com.iden.common.util.DateUtils;
 import com.iden.common.util.FileUtil;
 import com.iden.common.util.ImgUtil;
@@ -49,14 +51,15 @@ import java.util.UUID;
 @Service
 public class TraceService {
 
-    @Resource
-    private FaceImageService faceImageService;
+
     @Resource
     private IdenCameraVideoService idenCameraVideoService;
     @Resource
     private IdenCommunityService idenCommunityService;
     @Resource
     private IdenCameraService idenCameraService;
+    @Resource
+    private IdenFaceImageService idenFaceImageService;
 
     @Value("${iden.root:#{null}}")
     private String idenRoot;
@@ -128,19 +131,32 @@ public class TraceService {
         FaceModel[] faceModels = FaceIdenTool.extractFeature(idenRoot,imgFiles);
 
         //初始化引擎,加载摄像头上传的在时间段内的图像人脸特征库
-        File cameraImageDirFile = new File(idenRoot + "data/final/camera/image");
-        File[] cameraImageFiles = getCameraImageFiles(cameraImageDirFile,dateBegin,dateEnd);
-        if(cameraImageFiles == null || cameraImageFiles.length == 0){
+        QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().isNotNull(IdenFaceImage::getFeatPtr)
+                .ge(IdenFaceImage::getPhotographTime,dateBegin)
+                .le(IdenFaceImage::getPhotographTime,dateEnd)
+                .orderByAsc(IdenFaceImage::getPhotographTime);
+
+        List<IdenFaceImage> idenFaceImageList = this.idenFaceImageService.list(queryWrapper);
+        if (CollUtil.isEmpty(idenFaceImageList)) {
             return result;
         }
 
-        FaceMonitor faceMonitorCamera = FaceIdenTool.initFaceMonitor(idenRoot,cameraImageFiles);
+        FaceModel[] dataset = new FaceModel[idenFaceImageList.size()];
+        for(int i = 0; i < idenFaceImageList.size(); i++){
+            IdenFaceImage idenFaceImage = idenFaceImageList.get(i);
+            dataset[i].setPersonId(idenFaceImage.getId().intValue());
+            dataset[i].setName(idenFaceImage.getUid());
+            dataset[i].setFeatValue(ByteUtil.hex2Byte(idenFaceImage.getFeatPtr()));
+        }
+
 
+        FaceMonitor faceMonitorFaceImag = FaceIdenTool.initFaceMonitorWithDataset(idenRoot,dataset);
         for(FaceModel faceModel : faceModels) {
-            FaceRetrieveResultVO faceRetrieveResultVO = FaceIdenTool.getHitResult(faceMonitorCamera,faceModel);
+            FaceRetrieveResultVO faceRetrieveResultVO = FaceIdenTool.getHitResult(faceMonitorFaceImag,faceModel);
            if (faceRetrieveResultVO != null) {
-               int hitIndex = faceRetrieveResultVO.getIndex();
-               IdenFaceImage idenFaceImage = faceImageService.getIdenFaceImageByImageFileName(cameraImageFiles[hitIndex].getName());
+               long hitIndex = faceRetrieveResultVO.getIndex();
+               IdenFaceImage idenFaceImage = idenFaceImageService.getById(hitIndex);
                if(idenFaceImage != null){
                    TraceVO vo = new TraceVO();
                    BeanUtil.copyProperties(idenFaceImage,vo);
@@ -166,32 +182,6 @@ public class TraceService {
         return result;
     }
 
-    private File[] getCameraImageFiles(File cameraImageDirFile,Date dateBegin, Date dateEnd) {
-        List<File> list = new ArrayList<>();
-
-        File[] cameraCodeDirFiles = cameraImageDirFile.listFiles();
-        if (cameraCodeDirFiles != null && cameraCodeDirFiles.length > 0){
-            for (File cameraCodeDirFile : cameraCodeDirFiles) {
-                File[] cameraImageFiles =  FileUtil.sortByName(cameraCodeDirFile.listFiles());
-                if (cameraImageFiles != null && cameraImageFiles.length > 0){
-                    for (File cameraImageFile : cameraImageFiles){
-                        String photographTime = cameraImageFile.getName().substring(0, cameraImageFile.getName().indexOf("_"));
-                        Date photographDate = DateUtils.strToDate(photographTime,"yyyyMMdd HH:mm:ss");
-                        if(dateBegin != null && photographDate.before(dateBegin)){
-                            continue;
-                        }
-                        if(dateEnd != null && photographDate.after(dateEnd)){
-                            continue;
-                        }
-                        list.add(cameraImageFile);
-                    }
-                }
-            }
-        }
-        File[] resuit = new File[list.size()];
-        return list.toArray(resuit);
-    }
-
 
     public  List<CameraVideoVO> getCameraVideoList(Long cameraId, String beginTime,String endTime) {
         List<CameraVideoVO> vos = new ArrayList<>();

+ 6 - 65
src/main/java/com/iden/bms/tool/FaceIdenTool.java

@@ -48,38 +48,6 @@ public class FaceIdenTool {
         return faceMonitor;
     }
 
-    /**
-     * 初始化引擎,加载图像人脸特征库
-     * @param idenRoot
-     * @param imgFiles
-     * @return
-     */
-    public static FaceMonitor initFaceMonitor(String idenRoot, File[] imgFiles) {
-        //初始化引擎
-        FaceMonitor faceMonitor = new FaceMonitor();
-        faceMonitor.init(idenRoot + "face/model", 0);
-
-        List<byte[]> faceTestImageList = new ArrayList<>();
-        if(imgFiles != null && imgFiles.length > 0){
-            for(File imgFile : imgFiles) {
-                if(imgFile!= null && imgFile.isFile())
-                faceTestImageList.add(readFileBytes(imgFile.getAbsolutePath()));
-            }
-        }
-
-        if(faceTestImageList.isEmpty()){
-            faceMonitor.releaseEngine();
-            faceMonitor = null;
-            return null;
-        }
-        FaceModel[] faceModels = faceMonitor.extractFeature(faceTestImageList);
-        //加载人脸特征库
-        if (faceModels != null && faceModels.length > 0) {
-            faceMonitor.loadFaceDataset(faceModels);
-        }
-
-        return faceMonitor;
-    }
 
     /**
      * 批量获取人脸特征码结构体
@@ -100,7 +68,7 @@ public class FaceIdenTool {
         }
         FaceModel[] faceModels = faceMonitor.extractFeature(faceTestImageList);
         //释放人脸引擎
-        faceMonitor.releaseEngine();
+        releaseEngine(faceMonitor);
         return faceModels;
     }
 
@@ -165,43 +133,15 @@ public class FaceIdenTool {
         }
         return null;
     }
-    public static FaceRetrieveResultVO isHit(String idenRoot, String featPtrVisitor, FaceMonitor faceMonitor){
-        FaceModel faceModelPtrVisitor = new FaceModel();
-        faceModelPtrVisitor.setName(String.valueOf(0));
-        faceModelPtrVisitor.setPersonId(0);
-        logger.info("FaceIdenTool isHit 3...");
-        faceModelPtrVisitor.setFeatValue(ByteUtil.hex2Byte(featPtrVisitor));
-        logger.info("FaceIdenTool isHit 4..");
-        FaceRetrieveResultVO vo = getHitResult(faceMonitor,faceModelPtrVisitor);
-        logger.info("FaceIdenTool isHit 5..");
-        return vo;
-    }
-
-    public static FaceRetrieveResultVO isHit(String idenRoot, String featPtrVisitor, List<String> featPtrList){
-        //初始化引擎
-        FaceMonitor faceMonitor = new FaceMonitor();
-        faceMonitor.init(idenRoot + "face/model", 0);
-        FaceModel[] dataset = new FaceModel[featPtrList.size()];
-        logger.info("FaceIdenTool isHit 1...");
-        for (int i = 0; i < featPtrList.size(); i++) {
-            String featPtr = featPtrList.get(i);
-            dataset[i].setName(String.valueOf(i));
-            dataset[i].setPersonId(i);
-            dataset[i].setFeatValue(ByteUtil.hex2Byte(featPtr));
-        }
-        logger.info("FaceIdenTool isHit 2...");
-        faceMonitor.loadFaceDataset(dataset);
+    public static FaceRetrieveResultVO getHitResult(FaceMonitor faceMonitor,String featPtrVisitor){
         FaceModel faceModelPtrVisitor = new FaceModel();
         faceModelPtrVisitor.setName(String.valueOf(0));
         faceModelPtrVisitor.setPersonId(0);
-        logger.info("FaceIdenTool isHit 3...");
+        logger.info("FaceIdenTool getHitResult2 3...");
         faceModelPtrVisitor.setFeatValue(ByteUtil.hex2Byte(featPtrVisitor));
-        logger.info("FaceIdenTool isHit 4..");
+        logger.info("FaceIdenTool getHitResult2 4..");
         FaceRetrieveResultVO vo = getHitResult(faceMonitor,faceModelPtrVisitor);
-        logger.info("FaceIdenTool isHit 5..");
-        //释放人脸引擎
-        faceMonitor.releaseEngine();
-        logger.info("FaceIdenTool isHit 6..");
+        logger.info("FaceIdenTool getHitResult2 5..");
         return vo;
     }
 
@@ -223,6 +163,7 @@ public class FaceIdenTool {
     public static void releaseEngine(FaceMonitor faceMonitor) {
         if(faceMonitor != null){
             faceMonitor.releaseEngine();
+            faceMonitor = null;
         }
     }
     /**

+ 2 - 0
src/main/java/com/iden/common/cache/RedisKeyConstant.java

@@ -28,4 +28,6 @@ public class RedisKeyConstant {
     public static final String HANDLE_CAMERA_IMAGE_FIRST = "HANDLE:CAMERA_IMAGE_FIRST";
     public static final int HANDLE_CAMERA_IMAGE_FIRST_TIME = 60 * 10;
 
+    public static final String PERSON_DELETE = "PERSON:DELETE";
+    public static final String PERSON_UPDATE = "PERSON:UPDATE";
 }

+ 2 - 1
src/main/java/com/iden/common/constant/Constants.java

@@ -18,5 +18,6 @@ public interface Constants {
 
    String FACE_CACHE_PERSON_KEY = "person";
    String FACE_CACHE_STRANGER_KEY = "stranger";
-   String FACE_CACHE_TMP_KEY = "tmp";
+   String FACE_CACHE_CONTINUE_TMP_KEY = "continue_tmp";
+
 }

+ 1 - 1
src/main/resources/application-dev.properties

@@ -35,4 +35,4 @@ iden.root=/data/iden/
 file.url=http://124.70.58.209:17778/
 
 ##是否初始化加载人脸识别库,是:1,不:0
-init.face.dataset=0
+init.face.dataset=1

+ 1 - 1
src/main/resources/application-prod.properties

@@ -38,4 +38,4 @@ iden.root=/data/iden/
 image.url=http://124.70.58.209:17778/
 
 ##是否初始化加载人脸识别库,是:1,不:0
-init.face.dataset=0
+init.face.dataset=1