suntianwu 3 سال پیش
والد
کامیت
12c2965dc7

+ 1 - 1
src/main/java/com/iden/bms/controller/CameraController.java

@@ -258,7 +258,7 @@ public class CameraController {
             if( this.cameraService.deleteById(id)){
                 return  Result.success("删除成功!");
             } else {
-                return Result.error("摄像头被引用,删除失败!");
+                return Result.error("摄像头被引用,不能删除!");
             }
 
         } catch (Exception e) {

+ 1 - 1
src/main/java/com/iden/bms/controller/CommunityController.java

@@ -259,7 +259,7 @@ public class CommunityController {
             if( this.communityService.deleteById(id)){
                 return  Result.success("删除成功!");
             } else {
-                return Result.error("小区被引用,删除失败!");
+                return Result.error("小区被引用,不能删除!");
             }
 
         } catch (Exception e) {

+ 54 - 3
src/main/java/com/iden/bms/controller/CrowdController.java

@@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -81,13 +82,37 @@ public class CrowdController {
         }
     }
 
+    /**
+     * 下载模板
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "下载模板")
+    @GetMapping({"/downloadFormwork"})
+    @LogAnnotation(
+            type = OperateType.EXPORT,
+            moduleName = "下载模板",
+            description = "下载模板"
+    )
+    public void downloadFormwork(HttpServletRequest request,@RequestHeader(name = "token", required = true) String token,
+                                 HttpServletResponse response) {
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.personService.downloadFormwork(loginUser,response);
+        } catch (BDException e) {
+            log.error("下载模板出现异常",e);
+        } catch (Exception e) {
+            log.error("小区管理: 下载模板出现异常",e);
+        }
+    }
+
 
     @ApiOperation(value = "导入Excel")
     @PostMapping(value = "/importWithExcel",  headers = "content-type=multipart/form-data")
     public Result<List<Long>> importWithExcel(HttpServletRequest request, @RequestHeader(value = "token") String token,
                                            @RequestParam(value = "file") MultipartFile multipartFile) {
         try {
-            List<Long>  personIdList = personService.importWithExcel(multipartFile);
+            List<Long>  personIdList = personService.importWithExcel(multipartFile,true);
             return  Result.success("导入成功!",personIdList);
         } catch (BDException e) {
             log.error("导入人员列表出现异常",e);
@@ -173,7 +198,7 @@ public class CrowdController {
             if( this.crowdService.deleteById(id)){
                 return  Result.success("删除成功!");
             } else {
-                return Result.error("人群被引用,删除失败!");
+                return Result.error("人群里有人员,请先删除人员,再删除人群!");
             }
         } catch (Exception e) {
             log.error("人群管理: 删除出现异常",e);
@@ -184,13 +209,14 @@ public class CrowdController {
     @GetMapping("/listPersonByCrowd")
     @ApiOperation(value = "根据人群查询人员列表分页 ")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(paramType = "query", name = "crowdId", value = "人群id")
+            @ApiImplicitParam(paramType = "query", name = "crowdId", value = "人群id", required = true)
     })
     public PageResult<List<PersonVO>> listPersonByCrowd(HttpServletRequest request, @RequestHeader(value = "token") String token,
 
                                                  @RequestParam(value = "crowdId", required = true) Long crowdId,
                                                  PageReqVO pageReqVo){
         try {
+
             UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
             IPage<PersonVO> pageResponse = this.crowdService.listPersonByCrowd(crowdId,loginUser ,pageReqVo);
             return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
@@ -202,4 +228,29 @@ public class CrowdController {
             return PageResult.error( "获取列表失败");
         }
     }
+
+    @PostMapping("/deletePersonFromCrowd")
+    @ApiOperation(value = "从人群中删除人员")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "Long", value = "crowdId",required = true)
+    })
+    @LogAnnotation(
+            type = OperateType.REMOVE,
+            moduleName = "删除人员",
+            description = "删除人员"
+    )
+    public Result<Object> deletePerson(HttpServletRequest request,@RequestHeader("token") String token,
+                                       @PathVariable("id") Long id,
+                                       @RequestParam(value = "crowdId", required = true) Long crowdId){
+        try {
+            this.crowdService.deletePersonFromCrowd(id,crowdId);
+            return  Result.success("删除成功!");
+        } catch (BDException e) {
+            log.error("人员删除-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("人员管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
 }

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

@@ -186,7 +186,7 @@ public class PersonController {
     public Result<Object> importWithExcel( HttpServletRequest request, @RequestHeader(value = "token") String token,
                              @RequestParam(value = "file") MultipartFile multipartFile) {
         try {
-            personService.importWithExcel(multipartFile);
+            personService.importWithExcel(multipartFile,false);
             return  Result.success("导入成功!");
         } catch (BDException e) {
             log.error("导入人员列表出现异常",e);
@@ -296,15 +296,19 @@ public class PersonController {
 
     @PostMapping("/deletePerson/{id}")
     @ApiOperation(value = "删除人员")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "type", value = "类型:2、重点人员,3、小区人员",required = true)
+    })
     @LogAnnotation(
             type = OperateType.REMOVE,
             moduleName = "删除人员",
             description = "删除人员"
     )
     public Result<Object> deletePerson(HttpServletRequest request,@RequestHeader("token") String token,
-                                 @PathVariable("id") Long id){
+                                       @PathVariable("id") Long id,
+                                       @RequestParam(value = "type", required = true) String type){
         try {
-            this.personService.deleteById(id);
+            this.personService.deleteById(id,type);
             return  Result.success("删除成功!");
         } catch (BDException e) {
             log.error("人员删除-出现异常",e);

+ 1 - 1
src/main/java/com/iden/bms/controller/SysRoleController.java

@@ -167,7 +167,7 @@ public class SysRoleController {
             if( this.sysRoleService.deleteById(id)){
                 return  Result.success("删除成功!");
             } else {
-                return Result.error("角色被引用,删除失败!");
+                return Result.error("角色被引用,不能删除!");
             }
 
         } catch (Exception e) {

+ 1 - 1
src/main/java/com/iden/bms/controller/SysUserController.java

@@ -159,7 +159,7 @@ public class SysUserController {
             if( this.sysUserService.deleteById(id)){
                 return  Result.success("删除成功!");
             } else {
-                return Result.error("系统用户被引用,删除失败!");
+                return Result.error("系统用户被引用,不能删除!");
             }
 
         } catch (Exception e) {

+ 12 - 0
src/main/java/com/iden/bms/service/CameraService.java

@@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.iden.common.entity.IdenCamera;
 import com.iden.common.entity.IdenCommunity;
+import com.iden.common.entity.IdenFaceImage;
+import com.iden.common.entity.IdenWarningPerson;
 import com.iden.common.enums.CameraTypeEnum;
 import com.iden.common.enums.ConnectStatusEnum;
 import com.iden.common.exceltool.CommonExcelParse;
@@ -21,6 +23,7 @@ import com.iden.common.exceltool.IExcelParser;
 import com.iden.common.exceltool.MultipartFileToFile;
 import com.iden.common.service.IdenCameraService;
 import com.iden.common.service.IdenCommunityService;
+import com.iden.common.service.IdenFaceImageService;
 import com.iden.common.util.MyBeanUtils;
 import com.iden.common.vo.CameraVO;
 import com.iden.common.vo.PageReqVO;
@@ -56,6 +59,9 @@ public class CameraService {
     @Resource
     private IdenCommunityService idenCommunityService;
 
+    @Resource
+    private IdenFaceImageService idenFaceImageService;
+
     public Integer countCamera(String type, String district, String subdistrict, Long communityId, String name, UserLoginedConvertVO loginUser) {
         QueryWrapper<IdenCamera> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().like(StrUtil.isNotEmpty(name),IdenCamera::getName,name)
@@ -110,6 +116,12 @@ public class CameraService {
      * @return
      */
     public boolean deleteById(Long id){
+        QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenFaceImage::getCameraId,id);
+        int cnt = this.idenFaceImageService.count(queryWrapper);
+        if(cnt > 0) {
+            return false;
+        }
         return this.idenCameraService.removeById(id);
     }
 

+ 10 - 0
src/main/java/com/iden/bms/service/CommunityService.java

@@ -15,11 +15,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.iden.common.entity.IdenCommunity;
 
 import com.iden.common.entity.IdenDistrict;
+import com.iden.common.entity.IdenPerson;
 import com.iden.common.exceltool.CommonExcelParse;
 import com.iden.common.exceltool.IExcelParser;
 import com.iden.common.exceltool.MultipartFileToFile;
 import com.iden.common.service.IdenCommunityService;
 import com.iden.common.exceltool.ExcelUtil;
+import com.iden.common.service.IdenPersonService;
 import com.iden.common.util.MyBeanUtils;
 import com.iden.common.vo.CommunityVO;
 import com.iden.common.vo.DistrictVO;
@@ -51,6 +53,8 @@ public class CommunityService {
 
     @Resource
     private IdenCommunityService idenCommunityService;
+    @Resource
+    private IdenPersonService idenPersonService;
 
     /**
      * 查询区域列表
@@ -245,6 +249,12 @@ public class CommunityService {
      */
     @Transactional(rollbackFor = Exception.class)
     public boolean deleteById(Long id){
+        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenPerson::getCommunityId,id);
+        int cnt = this.idenPersonService.count(queryWrapper);
+        if(cnt > 0){
+            return false;
+        }
         return this.idenCommunityService.removeById(id);
     }
 

+ 84 - 12
src/main/java/com/iden/bms/service/CrowdService.java

@@ -6,34 +6,36 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.iden.common.cache.DictCache;
-import com.iden.common.entity.IdenCommunity;
-import com.iden.common.entity.IdenCrowd;
-import com.iden.common.entity.IdenPerson;
-import com.iden.common.entity.IdenPersonCrowdRef;
+import com.iden.common.cache.RedisKeyConstant;
+import com.iden.common.cache.RedisUtil;
+import com.iden.common.entity.*;
 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.service.IdenCommunityService;
-import com.iden.common.service.IdenCrowdService;
-import com.iden.common.service.IdenPersonCrowdRefService;
+import com.iden.common.exception.BDException;
+import com.iden.common.service.*;
 
-import com.iden.common.service.IdenPersonService;
 import com.iden.common.vo.CrowdVO;
 import com.iden.common.vo.PageReqVO;
 import com.iden.common.vo.PersonVO;
 import com.iden.common.vo.UserLoginedConvertVO;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 /**
  *
@@ -51,6 +53,17 @@ public class CrowdService {
     private IdenCommunityService idenCommunityService;
     @Resource
     private IdenPersonService idenPersonService;
+    @Resource
+    private IdenWarningPersonService idenWarningPersonService;
+    @Resource
+    private  FaceIdenService faceIdenService;
+
+    @Resource
+    private RedisUtil redisUtil;
+
+    @Value("${iden.root:#{null}}")
+    private String idenRoot;
+
     /**
      * 查询区域列表
      * @return
@@ -103,6 +116,12 @@ public class CrowdService {
      * @return
      */
     public boolean deleteById(Long id){
+        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
+        queryWrapper.apply("  iden_person.id in ( select person_id from iden_person_crowd_ref ipcr where ipcr.crowd_id = " + id + ")");
+        int cnt = idenPersonService.count(queryWrapper);
+        if(cnt > 0){
+            return false;
+        }
         return this.idenCrowdService.removeById(id);
     }
 
@@ -193,21 +212,20 @@ public class CrowdService {
 
     }
 
+
     /**
      * 查询人员列表
      * @return
      */
     public IPage<PersonVO> listPersonByCrowd(Long crowdId,UserLoginedConvertVO loginUser, PageReqVO pageReqVo) {
+
         IPage<IdenPerson> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
 
         QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda()
                 .orderByDesc(IdenPerson::getModifyTime)
                 .orderByDesc(IdenPerson::getCreateTime);
-
-        if (crowdId != null) {
-            queryWrapper.apply("  iden_person.id in ( select person_id from iden_person_crowd_ref ipcr where ipcr.crowd_id = "+ crowdId + ")");
-        }
+        queryWrapper.apply("  iden_person.id in ( select person_id from iden_person_crowd_ref ipcr where ipcr.crowd_id = "+ crowdId + ")");
 
         IPage<IdenPerson> pageRes = this.idenPersonService.page(page, queryWrapper);
         IPage<PersonVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
@@ -252,4 +270,58 @@ public class CrowdService {
         }
         return results;
     }
+
+
+    /**
+     * 删除人员
+     * @param id
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void deletePersonFromCrowd(Long id, Long crowdId) 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("人员被引用,不能删除");
+                }
+
+                IdenPerson idenPerson = this.idenPersonService.getById(id);
+                QueryWrapper<IdenPersonCrowdRef> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(IdenPersonCrowdRef::getPersonId,idenPerson.getId());
+                idenPersonCrowdRefService.remove(queryWrapper);
+
+                if(StringUtils.isEmpty(idenPerson.getType())){ //不属于小区人员和重点人,才能删除person数据
+                    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("/") + 1));
+                        if(imageFile.exists()){
+                            imageFile.delete();
+                        }
+                    }
+                    this.idenPersonService.removeById(id);
+                    faceIdenService.reloadFaceDataset();
+                    ;
+                }
+
+
+            } else {
+                throw new BDException("不能多人同时删除,稍后再试");
+            }
+        } catch (Exception e) {
+            e.getMessage();
+
+        }  finally {
+            redisUtil.releaseLock(key,requestId);
+        }
+
+    }
+
 }

+ 21 - 0
src/main/java/com/iden/bms/service/FaceIdenService.java

@@ -358,4 +358,25 @@ public class FaceIdenService {
         }
 
     }
+
+    public void reloadFaceDataset(){
+        //重新加载人脸库缓存
+        FaceMonitor faceMonitorPerson = FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_PERSON_KEY);
+
+        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper();
+        queryWrapper.select("id","name","feat_ptr");
+        queryWrapper.lambda().isNotNull(IdenPerson::getFeatPtr);
+        List<IdenPerson> idenPersonList = idenPersonService.list(queryWrapper);
+        if (CollUtil.isNotEmpty(idenPersonList)) {
+            FaceModel[] dataset = new FaceModel[idenPersonList.size()];
+            for(int i = 0; i < idenPersonList.size(); i++){
+                IdenPerson idenPerson = idenPersonList.get(i);
+                dataset[i] = new FaceModel();
+                dataset[i].setPersonId(idenPerson.getId().intValue());
+                dataset[i].setName(String.valueOf(i));
+                dataset[i].setFeatValue(ByteUtil.hex2Byte(idenPerson.getFeatPtr()));
+            }
+            faceMonitorPerson.loadFaceDataset(dataset);
+        }
+    }
 }

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

@@ -69,6 +69,8 @@ public class PersonService {
     private IdenCommunityService idenCommunityService;
     @Resource
     private IdenWarningPersonService idenWarningPersonService;
+    @Resource
+    private  FaceIdenService faceIdenService;
 
     @Resource
     private RedisUtil redisUtil;
@@ -299,7 +301,7 @@ public class PersonService {
      * @throws Exception
      */
     @Transactional(rollbackFor = Exception.class)
-    public List<Long> importWithExcel(MultipartFile file) throws BDException {
+    public List<Long> importWithExcel(MultipartFile file,boolean isCrowd) throws BDException {
         List<Long> personIdList = new ArrayList<>();
             try {
                 String excelFileName = file.getOriginalFilename();
@@ -459,8 +461,11 @@ public class PersonService {
                                     personVO.setType(type);
                                 }
                             }  else {
-                                msg.append("请填写类型(重点人员或小区人员,多个用英文逗号分隔)!\n");
+                                if(!isCrowd){
+                                    msg.append("请填写类型(重点人员或小区人员,多个用英文逗号分隔)!\n");
+                                }
                             }
+
                         } else if (19 == j) {//人群类型
                             if (StringUtils.isNotBlank(value)){
                                 String[] crowdNames = value.split(",");
@@ -481,6 +486,10 @@ public class PersonService {
                                 if(CollUtil.isNotEmpty(idenCrowdIds)){
                                     personVO.setCrowdIds(idenCrowdIds);
                                 }
+                            } else {
+                                if(isCrowd){
+                                    msg.append("填写人群类型错误(多个用英文逗号分隔)!\n");
+                                }
                             }
                         } else if (20 == j) {//备注
                             if (StringUtils.isNotBlank(value)){
@@ -569,12 +578,13 @@ public class PersonService {
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public void deleteById(Long id) throws BDException {
+    public void deleteById(Long id,String type) 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);
@@ -582,22 +592,43 @@ public class PersonService {
                     throw new BDException("人员被引用,不能删除");
                 }
 
-                IdenPerson idenPerson = this.idenPersonService.getById(id);
-
-                QueryWrapper<IdenPersonCrowdRef> queryWrapper = new QueryWrapper<>();
-                queryWrapper.lambda().eq(IdenPersonCrowdRef::getPersonId,idenPerson.getId());
-                idenPersonCrowdRefService.remove(queryWrapper);
+               IdenPerson idenPerson = this.idenPersonService.getById(id);
+               String types = idenPerson.getType();
+                String[] typeTmps = types.split(",");
 
-                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("/") + 1));
-                    if(imageFile.exists()){
-                        imageFile.delete();
+               if (typeTmps.length > 1) { //属于多个人员类型,只清除本类型的
+                   StringBuilder sb = new StringBuilder();
+                    for(String typeTmp : typeTmps){
+                        if(!type.equals(typeTmp)) {
+                            sb.append(typeTmp).append(",");
+                        }
                     }
-                }
-                this.idenPersonService.removeById(id);
-                reloadFaceDataset();
+                   types = sb.toString();
+
+                   if(types.endsWith(",")) {
+                       types = types.substring(0, types.length() -1);
+                   }
+
+                   UpdateWrapper<IdenPerson> updateWrapper = new UpdateWrapper<>();
+                   updateWrapper.lambda().set(IdenPerson::getType,types).eq(IdenPerson::getId,id);
+                   idenPersonService.update(updateWrapper);
+
+               } else {
+                   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("/") + 1));
+                       if(imageFile.exists()){
+                           imageFile.delete();
+                       }
+                   }
+                   this.idenPersonService.removeById(id);
+                   faceIdenService.reloadFaceDataset();
+               }
 
             } else {
                 throw new BDException("不能多人同时删除,稍后再试");
@@ -743,26 +774,7 @@ public class PersonService {
         faceMonitorPerson.appendFaceDataset(dataset);
     }
 
-    private void reloadFaceDataset(){
-        //重新加载人脸库缓存
-        FaceMonitor faceMonitorPerson = FaceMoniterCache.getFaceMonitor(Constants.FACE_CACHE_PERSON_KEY);
 
-        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper();
-        queryWrapper.select("id","name","feat_ptr");
-        queryWrapper.lambda().isNotNull(IdenPerson::getFeatPtr);
-        List<IdenPerson> idenPersonList = idenPersonService.list(queryWrapper);
-        if (CollUtil.isNotEmpty(idenPersonList)) {
-            FaceModel[] dataset = new FaceModel[idenPersonList.size()];
-            for(int i = 0; i < idenPersonList.size(); i++){
-                IdenPerson idenPerson = idenPersonList.get(i);
-                dataset[i] = new FaceModel();
-                dataset[i].setPersonId(idenPerson.getId().intValue());
-                dataset[i].setName(String.valueOf(i));
-                dataset[i].setFeatValue(ByteUtil.hex2Byte(idenPerson.getFeatPtr()));
-            }
-            faceMonitorPerson.loadFaceDataset(dataset);
-        }
-    }
 
     /**
      * 修改人员
@@ -815,7 +827,7 @@ public class PersonService {
 
                 this.idenPersonService.updateById(idenPerson);
 
-                reloadFaceDataset();
+                faceIdenService.reloadFaceDataset();
             } else {
                 throw new BDException("不能多人同时修改,稍后再试");
             }

+ 12 - 1
src/main/java/com/iden/bms/service/SysRoleService.java

@@ -9,12 +9,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.iden.common.entity.IdenRoleMenuRel;
 import com.iden.common.entity.IdenSysMenu;
 import com.iden.common.entity.IdenSysRole;
+import com.iden.common.entity.IdenSysUser;
 import com.iden.common.enums.IsLeafEnum;
 import com.iden.common.enums.ValidStatusEnum;
 import com.iden.common.exception.BDException;
 import com.iden.common.service.IdenRoleMenuRelService;
 import com.iden.common.service.IdenSysMenuService;
 import com.iden.common.service.IdenSysRoleService;
+import com.iden.common.service.IdenSysUserService;
 import com.iden.common.util.MyBeanUtils;
 import com.iden.common.util.StringUtil;
 import com.iden.common.vo.SysMenuVO;
@@ -45,7 +47,8 @@ public class SysRoleService {
     private IdenRoleMenuRelService idenRoleMenuRelService;
     @Resource
     private IdenSysMenuService idenSysMenuService;
-
+    @Resource
+    private IdenSysUserService idenSysUserService;
     /**
      * 查询角色列表
      * @return
@@ -98,6 +101,14 @@ public class SysRoleService {
      * @return
      */
     public boolean deleteById(Long id){
+
+        IdenSysRole idenSysRole = this.idenSysRoleService.getById(id);
+        QueryWrapper<IdenSysUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenSysUser::getRole,idenSysRole.getCode());
+        int cnt = this.idenSysUserService.count(queryWrapper);
+        if(cnt > 0){
+            return false;
+        }
         return this.idenSysRoleService.removeById(id);
     }
 

+ 9 - 1
src/main/java/com/iden/bms/service/SysUserService.java

@@ -52,6 +52,8 @@ public class SysUserService {
     private IdenSysUserService idenSysUserService;
     @Resource
     private IdenSysLogService idenSysLogService;
+
+
     @Resource
     RedisUtil redisUtil;
 
@@ -137,7 +139,13 @@ public class SysUserService {
      * @return
      */
     public boolean deleteById(Long id){
-
+        IdenSysUser idenSysUser = this.idenSysUserService.getById(id);
+        QueryWrapper<IdenSysLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenSysLog::getUsername,idenSysUser.getUsername());
+        int cnt = this.idenSysLogService.count(queryWrapper);
+        if(cnt > 0){
+            return false;
+        }
         return this.idenSysUserService.removeById(id);
     }
 

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

@@ -35,7 +35,7 @@ iden.root=/data/iden/
 file.url=http://124.70.58.209:17778/
 
 ##是否初始化加载人脸识别库,是:1,不:0
-init.face.dataset=1
+init.face.dataset=0
 
 #视频编辑程序所在路径
 ffmpeg.path=/data/iden/ffmpeg/ffmpeg-git-20211217-amd64-static/ffmpeg