suntianwu vor 3 Jahren
Ursprung
Commit
3be77fb5a9

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

@@ -85,8 +85,8 @@ public class PersonController {
     public Result<String> uploadImage( @ApiParam(value="图像",required=true) MultipartFile file,
     public Result<String> uploadImage( @ApiParam(value="图像",required=true) MultipartFile file,
                                      @RequestHeader(name = "token") String token) {
                                      @RequestHeader(name = "token") String token) {
         try {
         try {
-            String url = personService.uploadImage(file);
-            return  Result.success("上传成功!",url);
+            String image = personService.uploadImage(file);
+            return  Result.success("上传成功!",image);
         } catch (BDException e) {
         } catch (BDException e) {
             log.error("图像上传出现异常",e);
             log.error("图像上传出现异常",e);
             return Result.error(e.getMessage());
             return Result.error(e.getMessage());

+ 21 - 3
src/main/java/com/iden/bms/face/FaceIdenSchedule.java

@@ -20,11 +20,29 @@ public class FaceIdenSchedule {
     @Resource
     @Resource
     private FaceIdenService faceIdenService;
     private FaceIdenService faceIdenService;
 
 
+
+    /**
+     * 处理摄像头上传的图像
+     */
+    @Async
+    @Scheduled(cron = "10 0/5 * * * ?")
+    public void handleCameraImage() {
+        try {
+            faceIdenService.handleCameraImage();
+        } catch (Exception e) {
+            e.getMessage();
+        }
+    }
+
+
+    /**
+     * 处理摄像头上传的视频
+     */
     @Async
     @Async
-    @Scheduled(cron = "0 0/1 * * * ?")
-    public void exe() {
+    @Scheduled(cron = "20 0/5 * * * ?")
+    public void handleCameraVideo() {
         try {
         try {
-            faceIdenService.exe();
+            faceIdenService.handleCameraVideo();
         } catch (Exception e) {
         } catch (Exception e) {
             e.getMessage();
             e.getMessage();
         }
         }

+ 49 - 21
src/main/java/com/iden/bms/face/FaceIdenService.java

@@ -7,6 +7,7 @@ import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.face.monitor.FaceMonitor;
 import com.face.monitor.FaceMonitor;
 import com.face.monitor.model.FaceModel;
 import com.face.monitor.model.FaceModel;
+import com.iden.bms.service.PersonService;
 import com.iden.common.entity.IdenCamera;
 import com.iden.common.entity.IdenCamera;
 import com.iden.common.entity.IdenCommunity;
 import com.iden.common.entity.IdenCommunity;
 import com.iden.common.entity.IdenFaceImage;
 import com.iden.common.entity.IdenFaceImage;
@@ -15,6 +16,7 @@ import com.iden.common.service.IdenCameraService;
 import com.iden.common.service.IdenCommunityService;
 import com.iden.common.service.IdenCommunityService;
 import com.iden.common.service.IdenFaceImageService;
 import com.iden.common.service.IdenFaceImageService;
 
 
+import com.iden.common.util.ByteUtil;
 import com.iden.common.util.DateUtils;
 import com.iden.common.util.DateUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.LogManager;
@@ -43,6 +45,9 @@ public class FaceIdenService {
     private IdenCameraService idenCameraService;
     private IdenCameraService idenCameraService;
     @Resource
     @Resource
     private IdenCommunityService idenCommunityService;
     private IdenCommunityService idenCommunityService;
+    @Resource
+    private PersonService personService;
+
 
 
     @Value("${iden.root:#{null}}")
     @Value("${iden.root:#{null}}")
     private String idenRoot;
     private String idenRoot;
@@ -56,25 +61,26 @@ public class FaceIdenService {
      * @throws Exception
      * @throws Exception
      */
      */
 
 
-    public void exe() throws Exception {
-        logger.info("FaceIdenService.exe start...");
+    public void handleCameraImage() throws Exception {
+        logger.info("FaceIdenService.handleCameraImage start...");
 
 
         File originImageDirFile = new File(idenRoot + "data/origin/image");
         File originImageDirFile = new File(idenRoot + "data/origin/image");
-        //初始化引擎
-        FaceMonitor faceMonitor = new FaceMonitor();
-        faceMonitor.init(idenRoot + "face/model", 0);
 
 
         //使用摄像头编码做目录名,里面图像或视频的名称上加上拍照时间,
         //使用摄像头编码做目录名,里面图像或视频的名称上加上拍照时间,
         // 比如  20211217123023.jpg     20211217123023~20211217123323.mp4
         // 比如  20211217123023.jpg     20211217123023~20211217123323.mp4
         if (originImageDirFile.isDirectory()) {
         if (originImageDirFile.isDirectory()) {
-            File[]  cameraCodeDirs = originImageDirFile.listFiles();
+            File[] cameraCodeDirs = originImageDirFile.listFiles();
             if(cameraCodeDirs != null && cameraCodeDirs.length > 0){
             if(cameraCodeDirs != null && cameraCodeDirs.length > 0){
-                logger.info("FaceIdenService.exe ...1");
+
+                //初始化引擎,加载人员图像人脸特征库
+                String personImageDir = idenRoot + "data/final/image/person";
+                File[] imgPersonFiles = new File(personImageDir).listFiles();
+                FaceMonitor faceMonitorPerson = FaceIdenTool.initFaceMonitor(idenRoot,imgPersonFiles);
+
                 for(File cameraCodedir : cameraCodeDirs) {
                 for(File cameraCodedir : cameraCodeDirs) {
                     if(cameraCodedir.isDirectory()){
                     if(cameraCodedir.isDirectory()){
                         File[] imgFiles = cameraCodedir.listFiles();
                         File[] imgFiles = cameraCodedir.listFiles();
                         if(imgFiles != null && imgFiles.length > 0){
                         if(imgFiles != null && imgFiles.length > 0){
-                            logger.info("FaceIdenService.exe ...2");
                             String cameraCode = cameraCodedir.getName();
                             String cameraCode = cameraCodedir.getName();
                             QueryWrapper<IdenCamera> queryWrapper = new QueryWrapper<>();
                             QueryWrapper<IdenCamera> queryWrapper = new QueryWrapper<>();
                             queryWrapper.lambda().eq(IdenCamera::getCode,cameraCode);
                             queryWrapper.lambda().eq(IdenCamera::getCode,cameraCode);
@@ -82,9 +88,8 @@ public class FaceIdenService {
                             if(idenCamera == null){
                             if(idenCamera == null){
                                 continue;
                                 continue;
                             }
                             }
-                            logger.info("FaceIdenService.exe ...3");
                            //获取特征码
                            //获取特征码
-                            FaceModel[] faceModels = FaceIdenTool.extractFeature(faceMonitor,imgFiles);
+                            FaceModel[] faceModels = FaceIdenTool.extractFeature(idenRoot,imgFiles);
 
 
                             List<IdenFaceImage> idenFaceImageList = new ArrayList<>();
                             List<IdenFaceImage> idenFaceImageList = new ArrayList<>();
                             for(int i = 0; i < imgFiles.length; i++) {
                             for(int i = 0; i < imgFiles.length; i++) {
@@ -93,14 +98,12 @@ public class FaceIdenService {
                                 idenFaceImage.setCameraId(idenCamera.getId());
                                 idenFaceImage.setCameraId(idenCamera.getId());
                                 idenFaceImage.setCommunityId(idenCamera.getCommunityId());
                                 idenFaceImage.setCommunityId(idenCamera.getCommunityId());
                                 String photographPlace = idenCamera.getPlace();
                                 String photographPlace = idenCamera.getPlace();
-                                logger.info("FaceIdenService.exe ...4");
                                 if (StringUtils.isEmpty(photographPlace)) {
                                 if (StringUtils.isEmpty(photographPlace)) {
                                     IdenCommunity idenCommunity = idenCommunityService.getById(idenCamera.getCommunityId());
                                     IdenCommunity idenCommunity = idenCommunityService.getById(idenCamera.getCommunityId());
                                     if(idenCommunity != null) {
                                     if(idenCommunity != null) {
                                         photographPlace = idenCommunity.getName() + "(" + idenCamera.getLongitude() + ":" + idenCamera.getLatitude() + ")";
                                         photographPlace = idenCommunity.getName() + "(" + idenCamera.getLongitude() + ":" + idenCamera.getLatitude() + ")";
                                     }
                                     }
                                 }
                                 }
-                                logger.info("FaceIdenService.exe ...5");
                                 idenFaceImage.setPhotographPlace(photographPlace);
                                 idenFaceImage.setPhotographPlace(photographPlace);
                                 idenFaceImage.setLongitude(idenCamera.getLongitude());
                                 idenFaceImage.setLongitude(idenCamera.getLongitude());
                                 idenFaceImage.setLatitude(idenCamera.getLatitude());
                                 idenFaceImage.setLatitude(idenCamera.getLatitude());
@@ -108,39 +111,64 @@ public class FaceIdenService {
                                 String photographTime = imgFileName.substring(0, imgFileName.indexOf("_"));
                                 String photographTime = imgFileName.substring(0, imgFileName.indexOf("_"));
                                 idenFaceImage.setPhotographTime(DateUtils.strToDate(photographTime,"yyyyMMddHHmmss"));
                                 idenFaceImage.setPhotographTime(DateUtils.strToDate(photographTime,"yyyyMMddHHmmss"));
 
 
-                                idenFaceImage.setFeatPtr(FaceIdenTool.getFeatPtr(faceModels,String.valueOf(i)));
+                                if(faceModels[i] != null){
+                                    idenFaceImage.setFeatPtr(ByteUtil.byte2Hex(faceModels[i].getFeatValue()));
+                                }
 
 
                                 File finalDir = new File(imgFile.getParentFile().getAbsolutePath().replace("origin","final"));
                                 File finalDir = new File(imgFile.getParentFile().getAbsolutePath().replace("origin","final"));
                                 if(!finalDir.exists()){
                                 if(!finalDir.exists()){
                                     finalDir.mkdirs();
                                     finalDir.mkdirs();
                                 }
                                 }
-                                logger.info("FaceIdenService.exe ...finalDir == " + finalDir.getAbsolutePath());
-                                logger.info("FaceIdenService.exe ...imgFile.getName() == " + imgFileName);
+                                logger.info("FaceIdenService.handleCameraImage ...finalDir == " + finalDir.getAbsolutePath());
+                                logger.info("FaceIdenService.handleCameraImage ...imgFile.getName() == " + imgFileName);
                                 File finalImgFile = new File(finalDir, imgFileName);
                                 File finalImgFile = new File(finalDir, imgFileName);
 
 
-                                logger.info("FaceIdenService.exe ...finalImgFile == " + finalImgFile.getAbsolutePath());
+                                logger.info("FaceIdenService.handleCameraImage ...finalImgFile == " + finalImgFile.getAbsolutePath());
 
 
                                 imgFile.renameTo(finalImgFile);//移动到最终目录
                                 imgFile.renameTo(finalImgFile);//移动到最终目录
 
 
                                 idenFaceImage.setImage( imageUrl + cameraCode + "/" + finalImgFile.getName());
                                 idenFaceImage.setImage( imageUrl + cameraCode + "/" + finalImgFile.getName());
 
 
-                                //TODO 关联personId
+                                //和人员图像库比对特征码,关联personId
+                                if(faceModels[i] != null){
+
+                                    int  hitIndex = FaceIdenTool.getHitIndex(faceMonitorPerson,faceModels[i]);
+                                    if (hitIndex != -1){
+                                        Long personId = personService.getPersonIdByImageFileName(imgPersonFiles[hitIndex].getName());
+                                        if(personId != null) {
+                                            idenFaceImage.setPersonId(personId);
+                                        }
+                                    }
+
+                                }
                                 idenFaceImage.setCreateTime(new Date());
                                 idenFaceImage.setCreateTime(new Date());
                                 idenFaceImageList.add(idenFaceImage);
                                 idenFaceImageList.add(idenFaceImage);
                             }
                             }
-                            logger.info("FaceIdenService.exe ...7");
+
                             //把图像存到图库中
                             //把图像存到图库中
                             if (CollUtil.isNotEmpty(idenFaceImageList)) {
                             if (CollUtil.isNotEmpty(idenFaceImageList)) {
-                                logger.info("FaceIdenService.exe ...8");
                                 idenFaceImageService.saveBatch(idenFaceImageList);
                                 idenFaceImageService.saveBatch(idenFaceImageList);
                             }
                             }
-                        }
 
 
+                        }
                     }
                     }
                 }
                 }
+                //释放人脸引擎
+                FaceIdenTool.releaseEngine(faceMonitorPerson);
             }
             }
         }
         }
-        logger.info("FaceIdenService.exe end");
+        logger.info("FaceIdenService.handleCameraImage end");
+    }
+
+
+
+    /**
+     *
+     * @throws Exception
+     */
+
+    public void handleCameraVideo() throws Exception {
+
     }
     }
 
 
 }
 }

+ 81 - 10
src/main/java/com/iden/bms/face/FaceIdenTool.java

@@ -2,6 +2,9 @@ package com.iden.bms.face;
 
 
 import com.face.monitor.FaceMonitor;
 import com.face.monitor.FaceMonitor;
 import com.face.monitor.model.FaceModel;
 import com.face.monitor.model.FaceModel;
+import com.face.monitor.model.FaceRecogRetrieveResult;
+import com.face.monitor.model.Image;
+import com.face.monitor.model.RecogResult;
 import com.iden.common.util.ByteUtil;
 import com.iden.common.util.ByteUtil;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.Logger;
@@ -13,29 +16,97 @@ import java.util.List;
 public class FaceIdenTool {
 public class FaceIdenTool {
     private static final Logger logger = LogManager.getLogger(FaceIdenTool.class);
     private static final Logger logger = LogManager.getLogger(FaceIdenTool.class);
 
 
-    public static FaceModel[] extractFeature(FaceMonitor faceMonitor, File[] imgFiles){
+    /**
+     * 初始化引擎,加载图像人脸特征库
+     * @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<>();
+        for(File imgFile : imgFiles) {
+            faceTestImageList.add(readFileBytes(imgFile.getAbsolutePath()));
+        }
+        FaceModel[] faceModels = faceMonitor.extractFeature(faceTestImageList);
+        //加载人脸特征库
+        faceMonitor.loadFaceDataset(faceModels);
+
+        return faceMonitor;
+    }
+
+    /**
+     * 批量获取人脸特征码
+     * @param idenRoot
+     * @param imgFiles
+     * @return
+     */
+    public static FaceModel[] extractFeature(String idenRoot, File[] imgFiles){
+        //初始化引擎
+        FaceMonitor faceMonitor = new FaceMonitor();
+        faceMonitor.init(idenRoot + "face/model", 0);
+
         List<byte[]> faceTestImageList = new ArrayList<>();
         List<byte[]> faceTestImageList = new ArrayList<>();
         for(File imgFile : imgFiles) {
         for(File imgFile : imgFiles) {
             faceTestImageList.add(readFileBytes(imgFile.getAbsolutePath()));
             faceTestImageList.add(readFileBytes(imgFile.getAbsolutePath()));
         }
         }
         FaceModel[] faceModels = faceMonitor.extractFeature(faceTestImageList);
         FaceModel[] faceModels = faceMonitor.extractFeature(faceTestImageList);
+        //释放人脸引擎
+        faceMonitor.releaseEngine();
         return faceModels;
         return faceModels;
     }
     }
 
 
-    public static String getFeatPtr(FaceModel[] faceModels,String name) {
+
+    //得到单个特征码
+    public static String getFeatPtr(String idenRoot, File imgFile) {
+        File[] imgFiles = new File[]{imgFile};
+        FaceModel[] faceModels = extractFeature(idenRoot,imgFiles);
+
         if(faceModels != null && faceModels.length > 0) {
         if(faceModels != null && faceModels.length > 0) {
-            for(FaceModel faceModel : faceModels){
-                logger.info("name; " + faceModel.getName());
-                logger.info("personId: " + faceModel.getPersonId());
-                //logger.info("featValue: " + faceModel.getFeatValue());
-                if (name.equals(faceModel.getName())) {
-                    return ByteUtil.byte2Hex(faceModel.getFeatValue());
-                }
-            }
+            FaceModel faceModel = faceModels[0];
+            logger.info("name; " + faceModel.getName());
+            logger.info("personId: " + faceModel.getPersonId());
+            return ByteUtil.byte2Hex(faceModel.getFeatValue());
         }
         }
         return null;
         return null;
     }
     }
 
 
+
+    /**
+     * faceModel在faceMonitor的人脸特征库中检索命中的index
+     * @param faceMonitor
+     * @param faceModel
+     * @return
+     */
+    public static int getHitIndex(FaceMonitor faceMonitor, FaceModel faceModel) {
+        FaceRecogRetrieveResult faceRecogRetrieveResult = faceMonitor.faceRecogRetrieveFaceDataset(faceModel);
+        if(faceRecogRetrieveResult != null) {
+            int index = faceRecogRetrieveResult.getOnePredictIds()[0];
+            float score = faceRecogRetrieveResult.getOnePredictScores()[0];
+            if (score >= 65) {
+                return index;
+            }
+        }
+        return -1;
+    }
+
+    public static RecogResult watchFrame(String idenRoot,  String dataPath) {
+        //初始化引擎
+        FaceMonitor faceMonitor = new FaceMonitor();
+        faceMonitor.init(idenRoot + "face/model", 0);
+        Image image = faceMonitor.readImage(dataPath);
+        return faceMonitor.faceRecogMonitor(image);
+    }
+
+    //释放人脸引擎
+    public static void releaseEngine(FaceMonitor faceMonitor) {
+        if(faceMonitor != null){
+            faceMonitor.releaseEngine();
+        }
+    }
     /**
     /**
      * read file
      * read file
      *
      *

+ 49 - 4
src/main/java/com/iden/bms/service/PersonService.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.bms.face.FaceIdenTool;
 import com.iden.common.entity.IdenCrowd;
 import com.iden.common.entity.IdenCrowd;
 import com.iden.common.entity.IdenPerson;
 import com.iden.common.entity.IdenPerson;
 
 
@@ -22,6 +23,7 @@ import com.iden.common.util.MyBeanUtils;
 import com.iden.common.vo.PersonVO;
 import com.iden.common.vo.PersonVO;
 import com.iden.common.vo.PageReqVO;
 import com.iden.common.vo.PageReqVO;
 import com.iden.common.vo.UserLogindConvertVO;
 import com.iden.common.vo.UserLogindConvertVO;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -29,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileOutputStream;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
@@ -164,7 +167,7 @@ public class PersonService {
      * @return  访问URL
      * @return  访问URL
      */
      */
     public String uploadImage(MultipartFile file) throws BDException {
     public String uploadImage(MultipartFile file) throws BDException {
-        String logo = null;
+        String image = null;
         try {
         try {
             if (file != null) {
             if (file != null) {
                 //获取文件名
                 //获取文件名
@@ -180,7 +183,7 @@ public class PersonService {
                 String picFullFileName = idenRoot + "data/final/image/person/" + saveFileName;
                 String picFullFileName = idenRoot + "data/final/image/person/" + saveFileName;
                 FileOutputStream fos = new FileOutputStream(picFullFileName);
                 FileOutputStream fos = new FileOutputStream(picFullFileName);
                 fos.write(file.getBytes());
                 fos.write(file.getBytes());
-                logo = fileUrl + "person/" + saveFileName;
+                image = fileUrl + "person/" + saveFileName;
             } else {
             } else {
                 throw new BDException("上传失败");
                 throw new BDException("上传失败");
             }
             }
@@ -188,7 +191,7 @@ public class PersonService {
             throw new BDException("上传失败",e);
             throw new BDException("上传失败",e);
         }
         }
 
 
-        return logo;
+        return image;
     }
     }
 
 
 
 
@@ -207,7 +210,14 @@ public class PersonService {
         IdenPerson idenPerson = new IdenPerson();
         IdenPerson idenPerson = new IdenPerson();
         BeanUtil.copyProperties(vo,idenPerson);
         BeanUtil.copyProperties(vo,idenPerson);
         idenPerson.setCreateTime(new Date());
         idenPerson.setCreateTime(new Date());
-        //TODO 识别
+        //识别
+        String image = idenPerson.getImage();
+        if(StringUtils.isNotEmpty(image)){
+            String fileName = image.substring(image.lastIndexOf("/"));
+            File imgFile = new File(idenRoot + "data/final/image/person/" + fileName);
+            String featPtr = FaceIdenTool.getFeatPtr(idenRoot,imgFile);
+            idenPerson.setFeatPtr(featPtr);
+        }
 
 
         this.idenPersonService.save(idenPerson);
         this.idenPersonService.save(idenPerson);
         return 0;
         return 0;
@@ -221,9 +231,44 @@ public class PersonService {
     public void updatePerson(PersonVO vo){
     public void updatePerson(PersonVO vo){
         //保存人员
         //保存人员
         IdenPerson idenPerson = this.idenPersonService.getById(vo.getId());
         IdenPerson idenPerson = this.idenPersonService.getById(vo.getId());
+        String oldImage = idenPerson.getImage();
         MyBeanUtils.copyProperties(vo,idenPerson);
         MyBeanUtils.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/image/person/" + fileNameNew);
+            String featPtr = FaceIdenTool.getFeatPtr(idenRoot,imgFileNew);
+            idenPerson.setFeatPtr(featPtr);
+            // 删除老的文件
+            if(StringUtils.isNotEmpty(oldImage)){
+                String fileNameOld = oldImage.substring(oldImage.lastIndexOf("/"));
+                File imgFileOld = new File(idenRoot + "data/final/image/person/" + fileNameOld);
+                if(imgFileOld.exists()){
+                    imgFileOld.delete();
+                }
+            }
+
+        }
         idenPerson.setModifyTime(new Date());
         idenPerson.setModifyTime(new Date());
+
         this.idenPersonService.updateById(idenPerson);
         this.idenPersonService.updateById(idenPerson);
     }
     }
 
 
+    /**
+     * 根据图像文件名称得到id
+     * @param imageFileName
+     * @return
+     */
+    public Long getPersonIdByImageFileName(String imageFileName){
+
+        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().like(IdenPerson::getImage,imageFileName);
+        IdenPerson idenPerson = idenPersonService.getOne(queryWrapper);
+        if(idenPerson != null) {
+            return idenPerson.getId();
+        } else {
+            return null;
+        }
+    }
 }
 }