suntianwu 3 년 전
부모
커밋
1260d1a155
24개의 변경된 파일1783개의 추가작업 그리고 191개의 파일을 삭제
  1. 2 2
      src/main/java/com/iden/bms/controller/FaceImageController.java
  2. 6 5
      src/main/java/com/iden/bms/controller/TraceController.java
  3. 79 7
      src/main/java/com/iden/bms/controller/WarningPersonController.java
  4. 17 5
      src/main/java/com/iden/bms/controller/WarningRuleController.java
  5. 2 2
      src/main/java/com/iden/bms/service/CameraService.java
  6. 2 2
      src/main/java/com/iden/bms/service/CommunityService.java
  7. 2 2
      src/main/java/com/iden/bms/service/CrowdService.java
  8. 2 2
      src/main/java/com/iden/bms/service/FaceImageService.java
  9. 3 3
      src/main/java/com/iden/bms/service/PersonService.java
  10. 2 2
      src/main/java/com/iden/bms/service/SysRoleService.java
  11. 37 6
      src/main/java/com/iden/bms/service/TraceService.java
  12. 45 16
      src/main/java/com/iden/bms/service/WarningPersonService.java
  13. 57 1
      src/main/java/com/iden/bms/service/WarningRuleService.java
  14. 170 136
      src/main/java/com/iden/bms/service/WarningService.java
  15. 1126 0
      src/main/java/com/iden/common/IdenWarningPersonHisDefault.java
  16. 11 0
      src/main/java/com/iden/common/entity/IdenWarningPerson.java
  17. 140 0
      src/main/java/com/iden/common/entity/IdenWarningPersonHis.java
  18. 4 0
      src/main/java/com/iden/common/entity/IdenWarningPersonTrace.java
  19. 15 0
      src/main/java/com/iden/common/mapper/IdenWarningPersonHisMapper.java
  20. 14 0
      src/main/java/com/iden/common/service/IdenWarningPersonHisService.java
  21. 18 0
      src/main/java/com/iden/common/service/impl/IdenWarningPersonHisServiceImpl.java
  22. 9 0
      src/main/java/com/iden/common/vo/TraceVO.java
  23. 14 0
      src/main/java/com/iden/common/vo/WarningPersonVO.java
  24. 6 0
      src/main/resources/mybatis/IdenWarningPersonHisMapper.xml

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

@@ -44,8 +44,8 @@ public class FaceImageController {
             @ApiImplicitParam(paramType = "query", name = "type", value = "类型,1:陌生人员 ,2重点人员,3小区人员"),
             @ApiImplicitParam(paramType = "query", name = "communityId", value = "小区ID"),
             @ApiImplicitParam(paramType = "query", name = "photographPlace", value = "抓拍地点"),
-            @ApiImplicitParam(paramType = "query", name = "beginDate", value = "开始时间"),
-            @ApiImplicitParam(paramType = "query", name = "endDate", value = "结束时间")
+            @ApiImplicitParam(paramType = "query", name = "beginDate", value = "开始时间(yyyyMMdd)"),
+            @ApiImplicitParam(paramType = "query", name = "endDate", value = "结束时间(yyyyMMdd)")
 
     })
     public PageResult<List<FaceImageVO>> listFaceImage(HttpServletRequest request, @RequestHeader(value = "token") String token,

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

@@ -68,17 +68,17 @@ public class TraceController {
     @ApiOperation(value = "使用上传图像获取目标轨迹列表(地图打点划线) ")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(paramType = "query", name = "imageNames", value = "图像名称,多个用逗号分割"),
-            @ApiImplicitParam(paramType = "query", name = "beginTime", value = "开始时间(yyyy-MM-dd)"),
-            @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间(yyyy-MM-dd)")
+            @ApiImplicitParam(paramType = "query", name = "beginDate", value = "开始时间(yyyyMMdd)"),
+            @ApiImplicitParam(paramType = "query", name = "endDate", value = "结束时间(yyyyMMdd)")
 
     })
     public Result<List<TraceVO>> listUploadImagesTrace(HttpServletRequest request, @RequestHeader(value = "token") String token,
                                                        @RequestParam(value = "imageNames", required = true) String imageNames,
-                                                       @RequestParam(value = "beginTime", required = false) String beginTime,
-                                                       @RequestParam(value = "endTime", required = false) String endTime){
+                                                       @RequestParam(value = "beginDate", required = false) String beginDate,
+                                                       @RequestParam(value = "endDate", required = false) String endDate){
         try {
             UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
-            List<TraceVO> datas = this.traceService.listUploadImagesTrace(imageNames,beginTime,endTime,loginUser);
+            List<TraceVO> datas = this.traceService.listUploadImagesTrace(imageNames,beginDate,endDate,loginUser);
             return Result.success(datas);
         }catch (Exception e) {
             log.error("轨迹管理: 使用上传图像获取目标轨迹列表出现异常",e);
@@ -91,6 +91,7 @@ public class TraceController {
 
 
 
+
 //    @GetMapping("/cameraPlay/{id}")
 //    @ApiOperation(value = "摄像机播放")
 //    public Result<TraceVO> cameraPlay(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("id") Long id){

+ 79 - 7
src/main/java/com/iden/bms/controller/WarningPersonController.java

@@ -1,14 +1,16 @@
 package com.iden.bms.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iden.bms.service.TraceService;
 import com.iden.bms.service.WarningPersonService;
 import com.iden.common.annotation.Permission;
 import com.iden.common.exception.BDException;
+import com.iden.common.logaspect.LogAnnotation;
+import com.iden.common.logaspect.OperateType;
 import com.iden.common.util.PageResult;
+import com.iden.common.util.Result;
 import com.iden.common.util.WebPageUtils;
-import com.iden.common.vo.PageReqVO;
-import com.iden.common.vo.UserLoginedConvertVO;
-import com.iden.common.vo.WarningPersonVO;
+import com.iden.common.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -33,7 +35,8 @@ import java.util.List;
 public class WarningPersonController {
     @Autowired
     private WarningPersonService warningPersonService;
-
+    @Autowired
+    private TraceService traceService;
 
     @GetMapping("/listWarningPersonbyCommunity")
     @ApiOperation(value = "根据小区查询预警人员列表分页 ")
@@ -43,8 +46,9 @@ public class WarningPersonController {
             @ApiImplicitParam(paramType = "query", name = "nameOrCred", value = "名称/身份证"),
             @ApiImplicitParam(paramType = "query", name = "populationType", value = "人口类型"),
             @ApiImplicitParam(paramType = "query", name = "crowdId", value = "人群类型ID"),
-            @ApiImplicitParam(paramType = "query", name = "beginDate", value = "开始时间"),
-            @ApiImplicitParam(paramType = "query", name = "endDate", value = "结束时间")
+            @ApiImplicitParam(paramType = "query", name = "beginDate", value = "开始时间(yyyyMMdd)"),
+            @ApiImplicitParam(paramType = "query", name = "endDate", value = "结束时间(yyyyMMdd)"),
+            @ApiImplicitParam(paramType = "query", name = "handleStatus", value = "处理状态,0未处理,1已处理")
 
     })
     public PageResult<List<WarningPersonVO>> listWarningPersonbyCommunity(HttpServletRequest request, @RequestHeader(value = "token") String token,
@@ -55,10 +59,11 @@ public class WarningPersonController {
                                                                           @RequestParam(value = "crowdId", required = false) Long crowdId,
                                                                           @RequestParam(value = "beginDate", required = false) String beginDate,
                                                                           @RequestParam(value = "endDate", required = false) String endDate,
+                                                                          @RequestParam(value = "handleStatus", required = false) String handleStatus,
                                                                           PageReqVO pageReqVo){
         try {
             UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
-            IPage<WarningPersonVO> pageResponse = this.warningPersonService.listWarningPersonbyCommunity(type,communityId,nameOrCred,populationType,crowdId,beginDate,endDate,loginUser ,pageReqVo);
+            IPage<WarningPersonVO> pageResponse = this.warningPersonService.listWarningPersonbyCommunity(type,communityId,nameOrCred,populationType,crowdId,beginDate,endDate,handleStatus,loginUser ,pageReqVo);
             return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
         }catch (BDException e) {
             log.error("根据小区查询预警人员列表查询-分页列表出现异常",e);
@@ -68,4 +73,71 @@ public class WarningPersonController {
             return PageResult.error( "获取列表失败");
         }
     }
+
+
+    @GetMapping("/listTrace")
+    @ApiOperation(value = "点击预警人员获取目标轨迹列表(地图打点划线) ")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "uid", value = "唯一生物学标识"),
+            @ApiImplicitParam(paramType = "query", name = "beginDate", value = "开始时间(yyyyMMdd)"),
+            @ApiImplicitParam(paramType = "query", name = "endDate", value = "结束时间(yyyyMMdd)")
+
+    })
+    public Result<List<TraceVO>> listTrace(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                       @RequestParam(value = "uid", required = true) String uid,
+                                                       @RequestParam(value = "beginDate", required = false) String beginDate,
+                                                       @RequestParam(value = "endDate", required = false) String endDate){
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            List<TraceVO> datas = this.traceService.listTrace(uid,beginDate,endDate,loginUser);
+            return Result.success(datas);
+        }catch (Exception e) {
+            log.error("轨迹管理: 使用上传图像获取目标轨迹列表出现异常",e);
+            return Result.error( "获取列表失败");
+        }
+    }
+
+    @PostMapping("/handleWarning")
+    @ApiOperation(value = "处理预警(WarningPersonVO必须设置id和type)")
+    @LogAnnotation(
+            type = OperateType.MODIFY,
+            moduleName = "处理预警",
+            description = "处理预警"
+    )
+    public Result<Object> handleWarning(@RequestHeader("token") String token,
+                                         @RequestBody WarningPersonVO vo){
+        try {
+            warningPersonService.handleWarning(vo);
+            return Result.success("操作成功!");
+        }catch (BDException e) {
+            log.error("更新备注出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("预警管理: 更新备注出现异常",e);
+            return Result.error("更新备注失败!");
+        }
+    }
+
+    @GetMapping("/listEventTimes")
+    @ApiOperation(value = "预警事件时间列表")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "uid", value = "唯一生物学标识"),
+            @ApiImplicitParam(paramType = "query", name = "beginDate", value = "开始时间(yyyyMMdd)"),
+            @ApiImplicitParam(paramType = "query", name = "endDate", value = "结束时间(yyyyMMdd)")
+
+    })
+    public Result<List<TraceVO>> listEventTimes(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                           @RequestParam(value = "uid", required = true) String uid,
+                                           @RequestParam(value = "beginDate", required = false) String beginDate,
+                                           @RequestParam(value = "endDate", required = false) String endDate){
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            List<TraceVO> datas = this.traceService.listTrace(uid,beginDate,endDate,loginUser);
+            return Result.success(datas);
+        }catch (Exception e) {
+            log.error("轨迹管理: 使用上传图像获取目标轨迹列表出现异常",e);
+            return Result.error( "获取列表失败");
+        }
+    }
+
 }

+ 17 - 5
src/main/java/com/iden/bms/controller/WarningRuleController.java

@@ -9,6 +9,8 @@ import com.iden.common.logaspect.OperateType;
 import com.iden.common.util.Result;
 import com.iden.common.vo.WarningRuleVO;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,12 +55,22 @@ public class WarningRuleController {
         }
     }
 
-    @GetMapping("/getWarningRuleInfo")
-    @ApiOperation(value = "预警规则详情")
-    public Result<WarningRuleVO> getWarningRuleInfo(HttpServletRequest request, @RequestHeader("token") String token){
-        WarningRuleVO orderInfo = this.warningRuleService.getWarningRuleInfo();
+    @GetMapping("/getAllWarningRuleInfo")
+    @ApiOperation(value = "全部预警规则详情")
+    public Result<WarningRuleVO> getAllWarningRuleInfo(HttpServletRequest request, @RequestHeader("token") String token){
+        WarningRuleVO orderInfo = this.warningRuleService.getAllWarningRuleInfo();
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @GetMapping("/getWarningRuleInfoByType")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "type", value = "预警类型,1 陌生人员预警 2重点人员预警 3常住人员预警 4昼伏夜出人员预警")
+    })
+    @ApiOperation(value = "全部预警规则详情")
+    public Result<WarningRuleVO> getWarningRuleInfoByType(HttpServletRequest request, @RequestHeader("token") String token,
+                                                          @RequestParam(value = "type", required = false) String type){
+        WarningRuleVO orderInfo = this.warningRuleService.getWarningRuleInfoByType(type);
         return  Result.success("查询成功!",orderInfo);
     }
 
-   
 }

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

@@ -163,8 +163,8 @@ public class CameraService {
     @Transactional(rollbackFor = Exception.class)
     public void updateCamera(CameraVO vo){
         //保存摄像头
-        IdenCamera idenCamera = this.idenCameraService.getById(vo.getId());
-        MyBeanUtils.copyProperties(vo,idenCamera);
+        IdenCamera idenCamera = new IdenCamera();
+        BeanUtil.copyProperties(vo,idenCamera);
         idenCamera.setModifyTime(new Date());
         this.idenCameraService.updateById(idenCamera);
 

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

@@ -232,8 +232,8 @@ public class CommunityService {
     @Transactional(rollbackFor = Exception.class)
     public void updateCommunity(CommunityVO vo){
         //保存小区
-        IdenCommunity idenCommunity = this.idenCommunityService.getById(vo.getId());
-        MyBeanUtils.copyProperties(vo,idenCommunity);
+        IdenCommunity idenCommunity = new IdenCommunity();
+        BeanUtil.copyProperties(vo,idenCommunity);
         idenCommunity.setModifyTime(new Date());
         this.idenCommunityService.updateById(idenCommunity);
 

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

@@ -117,8 +117,8 @@ public class CrowdService {
     @Transactional(rollbackFor = Exception.class)
     public void updateCrowd(CrowdVO vo){
         //保存人群
-        IdenCrowd idenCrowd = this.idenCrowdService.getById(vo.getId());
-        MyBeanUtils.copyProperties(vo,idenCrowd);
+        IdenCrowd idenCrowd = new IdenCrowd();
+        BeanUtil.copyProperties(vo,idenCrowd);
         idenCrowd.setModifyTime(new Date());
         this.idenCrowdService.updateById(idenCrowd);
 

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

@@ -57,11 +57,11 @@ public class FaceImageService {
                     .eq(communityId != null,IdenFaceImage::getCommunityId,communityId)
                     .orderByAsc(IdenFaceImage::getId);
             if(StrUtil.isNotEmpty(beginDate)){
-                queryWrapper.apply(" date_format(photograph_time,'%Y-%m-%d') >= {0}", beginDate);
+                queryWrapper.apply(" data_date >= {0}", beginDate);
             }
 
             if(StrUtil.isNotEmpty(endDate)){
-                queryWrapper.apply(" date_format(photograph_time,'%Y-%m-%d') <= {0}", endDate);
+                queryWrapper.apply(" data_date <= {0}", endDate);
             }
 
             IPage<IdenFaceImage> pageRes = this.idenFaceImageService.page(page, queryWrapper);

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

@@ -243,7 +243,7 @@ public class PersonService {
 
     /**
      * 保存人员
-     * 一个人只属于一个小区。同一个自然人若是属于二个小区,则视为不同人,二条数据
+     * 一个人只属于一个小区,避免同一个自然人属于二个小区
      * @param vo
      */
     @Transactional(rollbackFor = Exception.class)
@@ -274,9 +274,9 @@ public class PersonService {
     @Transactional(rollbackFor = Exception.class)
     public void updatePerson(PersonVO vo){
         //保存人员
-        IdenPerson idenPerson = this.idenPersonService.getById(vo.getId());
+        IdenPerson idenPerson = new IdenPerson();
         String oldImage = idenPerson.getImage();
-        MyBeanUtils.copyProperties(vo,idenPerson);
+        BeanUtil.copyProperties(vo,idenPerson);
         String newImage = vo.getImage();
         if (StringUtils.isNotEmpty(newImage) && !newImage.equals(oldImage)){
             //识别

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

@@ -123,8 +123,8 @@ public class SysRoleService {
     @Transactional(rollbackFor = Exception.class)
     public void updateSysRole(SysRoleVO vo){
         //保存角色
-        IdenSysRole idenSysRole = this.idenSysRoleService.getById(vo.getId());
-        MyBeanUtils.copyProperties(vo,idenSysRole);
+        IdenSysRole idenSysRole = new IdenSysRole();
+        BeanUtil.copyProperties(vo,idenSysRole);
         idenSysRole.setModifyTime(new Date());
         this.idenSysRoleService.updateById(idenSysRole);
 

+ 37 - 6
src/main/java/com/iden/bms/service/TraceService.java

@@ -2,12 +2,16 @@ package com.iden.bms.service;
 
 import cn.hutool.core.bean.BeanUtil;
 
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.face.monitor.FaceMonitor;
 import com.face.monitor.model.FaceModel;
 import com.iden.bms.face.FaceIdenTool;
 import com.iden.common.entity.IdenFaceImage;
+import com.iden.common.entity.IdenWarningPersonTrace;
 import com.iden.common.exception.BDException;
 
+import com.iden.common.service.IdenWarningPersonTraceService;
 import com.iden.common.util.DateUtils;
 import com.iden.common.util.ImgUtil;
 import com.iden.common.vo.FaceRetrieveResultVO;
@@ -37,6 +41,10 @@ public class TraceService {
     @Resource
     private FaceImageService faceImageService;
 
+    @Resource
+    private IdenWarningPersonTraceService idenWarningPersonTraceService;
+
+
     @Value("${iden.root:#{null}}")
     private String idenRoot;
     @Value("${file.url:#{null}}")
@@ -79,15 +87,15 @@ public class TraceService {
      *  上传图像查询轨迹列表
      * 图像识别,使用特征码查询图像库,得到图库表中对应的数据列表
      * @return
-             */
-    public List<TraceVO> listUploadImagesTrace(String imageNames, String beginTime, String endTime, UserLoginedConvertVO loginUser) {
+     */
+    public List<TraceVO> listUploadImagesTrace(String imageNames, String beginDate, String endDate, UserLoginedConvertVO loginUser) {
         Date dateBegin = null;
-        if(StringUtils.isNotEmpty(beginTime)){
-            dateBegin  = DateUtils.strToDate(beginTime,"yyyy-MM-dd");
+        if(StringUtils.isNotEmpty(beginDate)){
+            dateBegin  = DateUtils.strToDate(beginDate,"yyyyMMdd");
         }
         Date dateEnd = null;
-        if(StringUtils.isNotEmpty(endTime)){
-            dateEnd  = DateUtils.strToDate(endTime,"yyyy-MM-dd");
+        if(StringUtils.isNotEmpty(endDate)){
+            dateEnd  = DateUtils.strToDate(endDate,"yyyyMMdd");
         }
 
         if(imageNames.endsWith(",")) {
@@ -152,4 +160,27 @@ public class TraceService {
         return list.toArray(resuit);
     }
 
+    /**
+     *  上传图像查询轨迹列表
+     * 图像识别,使用特征码查询图像库,得到图库表中对应的数据列表
+     * @return
+     */
+    public List<TraceVO> listTrace(String uid, String beginDate, String endDate, UserLoginedConvertVO loginUser) {
+        List<TraceVO> vos = new ArrayList<>();
+        QueryWrapper<IdenWarningPersonTrace> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenWarningPersonTrace::getUid,uid)
+                .ge(StringUtils.isNotEmpty(beginDate),IdenWarningPersonTrace::getDataDate,beginDate)
+                .le(StringUtils.isNotEmpty(endDate),IdenWarningPersonTrace::getDataDate,endDate)
+                .orderByAsc(IdenWarningPersonTrace::getPhotographTime);
+        List<IdenWarningPersonTrace> idenWarningPersonTraceList = this.idenWarningPersonTraceService.list(queryWrapper);
+        if(CollUtil.isNotEmpty(idenWarningPersonTraceList)) {
+            idenWarningPersonTraceList.forEach(item->{
+                TraceVO vo = new TraceVO();
+                IdenWarningPersonTrace idenWarningPersonTrace = new IdenWarningPersonTrace();
+                BeanUtil.copyProperties(idenWarningPersonTrace,vo);
+                vos.add(vo);
+            });
+        }
+        return vos;
+    }
 }

+ 45 - 16
src/main/java/com/iden/bms/service/WarningPersonService.java

@@ -1,5 +1,6 @@
 package com.iden.bms.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -7,13 +8,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.iden.common.entity.*;
 import com.iden.common.enums.*;
+import com.iden.common.exception.BDException;
 import com.iden.common.service.*;
 import com.iden.common.vo.*;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -39,7 +44,7 @@ public class WarningPersonService {
      * 根据小区查询预警人员列表分页
      * @return
      */
-    public IPage<WarningPersonVO> listWarningPersonbyCommunity(String type, Long communityId, String nameOrCred, String populationType, Long crowdId, String beginDate, String endDate, UserLoginedConvertVO loginUser, PageReqVO pageReqVo) {
+    public IPage<WarningPersonVO> listWarningPersonbyCommunity(String type, Long communityId, String nameOrCred, String populationType, Long crowdId, String beginDate, String endDate,String handleStatus, UserLoginedConvertVO loginUser, PageReqVO pageReqVo) {
         QueryWrapper<IdenPerson> queryWrapper0 = new QueryWrapper<>();
         queryWrapper0.lambda().eq(StrUtil.isNotEmpty(populationType),IdenPerson::getPopulationType,populationType)
                 .and(StrUtil.isNotEmpty(nameOrCred),wrapper -> wrapper.like(IdenPerson::getName,nameOrCred)
@@ -61,24 +66,10 @@ public class WarningPersonService {
         queryWrapper.lambda().eq(IdenWarningPerson::getType,type).eq(IdenWarningPerson::getCommunityId,communityId)
                 .ge(StrUtil.isNotEmpty(beginDate),IdenWarningPerson::getDataDate,beginDate)
                 .le(StrUtil.isNotEmpty(endDate),IdenWarningPerson::getDataDate,endDate)
+                .eq(StrUtil.isNotEmpty(handleStatus),IdenWarningPerson::getHandleStatus,handleStatus)
                 .in(CollUtil.isNotEmpty(listIdenPersonId),IdenWarningPerson::getPersonId,listIdenPersonId)
                 .orderByAsc(IdenWarningPerson::getId);
 
-        queryWrapper.groupBy("uid");
-        queryWrapper.select(
-                "max(community_id) communityId",
-                "max(image) image",
-                "(case when type = '1' then max(appear_frequency) when type = '2' then sum(appear_frequency) else null end) appearFrequency",
-                "max(is_continue) isContinue",
-                "max(subdistrict) subdistrict",
-                "max(stranger_type) strangerType",
-                "max(handle_status) handleStatus",
-                "max(remark) remark",
-                "max(earliest_appear_time) earliestAppearTime",
-                "max(continue_disappear_days) continueDisappearDays",
-                "max(person_id) personId"
-        );
-
         IPage<IdenWarningPerson> pageRes = this.idenWarningPersonService.page(page, queryWrapper);
         IPage<WarningPersonVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
         if(CollUtil.isNotEmpty(pageRes.getRecords())){
@@ -90,6 +81,14 @@ public class WarningPersonService {
                 resVO.setStrangerTypeName(StrangerTypeEnum.getValueToName(resVO.getStrangerType()));
                 resVO.setIsContinueName(IsContinueEnum.getValueToName(resVO.getIsContinue()));
                 resVO.setHandleStatusName(HandleWarningStatusEnum.getValueToName(resVO.getHandleStatus()));
+
+                if(resVO.getCrowdId() != null){
+                    IdenCrowd idenCrowd = idenCrowdService.getById(resVO.getCrowdId());
+                    if(idenCrowd != null){
+                        resVO.setCrowdName(idenCrowd.getName());
+                    }
+                }
+
                 Long personId = resVO.getPersonId();
                 if (personId != null) {
                     IdenPerson idenPerson = this.idenPersonService.getById(personId);
@@ -124,5 +123,35 @@ public class WarningPersonService {
         return results;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public boolean handleWarning(WarningPersonVO vo) throws BDException {
 
+        if(vo.getId() == null || StringUtils.isEmpty(vo.getType())){
+            return false;
+        }
+
+        IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getById(vo.getId());
+
+        if(WarningTypeEnum.STRANGER.getValue().equals(vo.getType())) {
+            if (1 == vo.getObtainPersonInfo()){ //已经获得本人信息
+                //生成人员数据
+                IdenPerson idenPerson = new IdenPerson();
+                idenPerson.setName(vo.getPersonName());
+                idenPerson.setUid(idenWarningPerson.getUid());
+                idenPerson.setImage(idenWarningPerson.getImage());
+                idenPerson.setFeatPtr(idenWarningPerson.getFeatPtr());
+                idenPerson.setCommunityId(idenWarningPerson.getCommunityId());
+                idenPerson.setDistrict(idenWarningPerson.getDistrict());
+                idenPerson.setSubdistrict(idenWarningPerson.getSubdistrict());
+                idenPerson.setCreateTime(new Date());
+                idenPerson.setType(PersonTypeEnum.COMMUNITY.getValue());
+                this.idenPersonService.save(idenPerson);
+            }
+        }
+        BeanUtil.copyProperties(vo,idenWarningPerson);
+        idenWarningPerson.setModifyTime(new Date());
+        idenWarningPerson.setHandleStatus(HandleWarningStatusEnum.HANDLED.getValue());
+        return idenWarningPersonService.updateById(idenWarningPerson);
+
+    }
 }

+ 57 - 1
src/main/java/com/iden/bms/service/WarningRuleService.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.iden.common.entity.IdenWarningRuleEventComming;
 import com.iden.common.entity.IdenWarningRuleResident;
 import com.iden.common.entity.IdenWarningRuleStranger;
+import com.iden.common.enums.WarningTypeEnum;
 import com.iden.common.service.IdenWarningRuleEventCommingService;
 import com.iden.common.service.IdenWarningRuleResidentService;
 import com.iden.common.service.IdenWarningRuleStrangerService;
@@ -39,7 +40,7 @@ public class WarningRuleService {
      * 详情
      * @return
      */
-    public WarningRuleVO getWarningRuleInfo(){
+    public WarningRuleVO getAllWarningRuleInfo(){
         WarningRuleVO resVO = new WarningRuleVO();
         QueryWrapper<IdenWarningRuleStranger> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().orderByDesc(IdenWarningRuleStranger::getModifyTime);
@@ -79,6 +80,61 @@ public class WarningRuleService {
         return resVO;
     }
 
+    /**
+     * 详情
+     * @return
+     */
+    public WarningRuleVO getWarningRuleInfoByType(String type){
+        if(WarningTypeEnum.STRANGER.getValue().equals(type)){
+            WarningRuleVO resVO = new WarningRuleVO();
+            QueryWrapper<IdenWarningRuleStranger> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().orderByDesc(IdenWarningRuleStranger::getModifyTime);
+            queryWrapper.last("limit 1");
+            IdenWarningRuleStranger idenWarningRuleStranger = this.idenWarningRuleStrangerService.getOne(queryWrapper);
+            if (idenWarningRuleStranger != null){
+                WarningRuleStrangerVO warningRuleStrangerVO = new WarningRuleStrangerVO();
+                BeanUtil.copyProperties(idenWarningRuleStranger,warningRuleStrangerVO);
+                resVO.setWarningRuleStrangerVO(warningRuleStrangerVO);
+            }
+            return resVO;
+        }
+
+        if(WarningTypeEnum.RESIDENT.getValue().equals(type)) {
+            WarningRuleVO resVO = new WarningRuleVO();
+            QueryWrapper<IdenWarningRuleResident> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.lambda().orderByDesc(IdenWarningRuleResident::getModifyTime);
+            queryWrapper1.last("limit 1");
+            IdenWarningRuleResident idenWarningRuleResident = this.idenWarningRuleResidentService.getOne(queryWrapper1);
+            if (idenWarningRuleResident != null) {
+                WarningRuleResidentVO warningRuleResidentVO = new WarningRuleResidentVO();
+                BeanUtil.copyProperties(idenWarningRuleResident, warningRuleResidentVO);
+                resVO.setWarningRuleResidentVO(warningRuleResidentVO);
+            }
+            return resVO;
+        }
+
+        if(WarningTypeEnum.EVENT_COMMING.getValue().equals(type)) {
+            WarningRuleVO resVO = new WarningRuleVO();
+            QueryWrapper<IdenWarningRuleEventComming> queryWrapper2 = new QueryWrapper<>();
+            queryWrapper2.lambda().orderByAsc(IdenWarningRuleEventComming::getCreateTime);
+            List<IdenWarningRuleEventComming> idenWarningRuleEventCommings = this.idenWarningRuleEventCommingService.list(queryWrapper2);
+            if (CollUtil.isNotEmpty(idenWarningRuleEventCommings)) {
+                List<WarningRuleEventCommingVO> vos = new ArrayList<>();
+                idenWarningRuleEventCommings.forEach(item -> {
+                    WarningRuleEventCommingVO warningRuleEventCommingVO = new WarningRuleEventCommingVO();
+                    BeanUtil.copyProperties(item, warningRuleEventCommingVO);
+                    vos.add(warningRuleEventCommingVO);
+
+                });
+                resVO.setWarningRuleEventCommingVO(vos);
+            }
+            return resVO;
+        }
+
+       return null;
+    }
+
+
 
     /**
      * 修改

+ 170 - 136
src/main/java/com/iden/bms/service/WarningService.java

@@ -41,6 +41,8 @@ public class WarningService {
     @Resource
     private IdenWarningPersonService idenWarningPersonService;
     @Resource
+    private IdenWarningPersonHisService idenWarningPersonHisService;
+    @Resource
     private IdenWarningPersonTraceService idenWarningPersonTraceService;
     @Resource
     private IdenWarningStaService idenWarningStaService;
@@ -126,16 +128,6 @@ public class WarningService {
             return;
         }
 
-        //查询是不是已经有预警人员数据了
-        QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
-        queryWrapper0.lambda().eq(IdenWarningPerson::getDataDate,idenFaceImage.getDataDate())
-                .eq(IdenWarningPerson::getUid,idenFaceImage.getUid())
-                .eq(IdenWarningPerson::getType,WarningTypeEnum.STRANGER.getValue());
-        int cnt = this.idenWarningPersonService.count(queryWrapper0);
-        if (cnt > 0) {
-            return;
-        }
-
         //查询此人1月内在该小区出现天次
         QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
         queryWrapper.select("select distinct data_date dataDate ") ;
@@ -149,72 +141,97 @@ public class WarningService {
 
         QueryWrapper<IdenWarningRuleStranger> queryWrapper3 = new QueryWrapper<>();
         IdenWarningRuleStranger idenWarningRuleStranger = idenWarningRuleStrangerService.getOne(queryWrapper3);
-        int strangerFrequency = 15;
+        int strangerFrequencyRule = 15;
         int strangerDays = 7;
         if (idenWarningRuleStranger != null){
-            strangerFrequency = idenWarningRuleStranger.getStrangerFrequency();
+            strangerFrequencyRule = idenWarningRuleStranger.getStrangerFrequency();
             strangerDays = idenWarningRuleStranger.getStrangerDays();
         }
         String isContinue = getIsContinue(listDataDate,strangerDays);
 
-        IdenWarningPerson idenWarningPerson = new IdenWarningPerson();
+        boolean isWarning = false;
+        String strangerType = null;
 
         //此人1月出现频次少于15次及7内天每天未连续出现,视为陌生人
-        if(strangerDayFrequency < strangerFrequency &&  IsContinueEnum.NO.getValue().equals(isContinue)) {
-            idenWarningPerson.setStrangerType(StrangerTypeEnum.STRANGER.getValue());
+        if(strangerDayFrequency < strangerFrequencyRule &&  IsContinueEnum.NO.getValue().equals(isContinue)) {
+            isWarning = true;
+            strangerType = StrangerTypeEnum.STRANGER.getValue();
             //此人出现频次1月内大于15天次或连续7天每天都出现,标注为疑似未登记住户
-        } else if(strangerDayFrequency >= strangerFrequency ||  IsContinueEnum.YES.getValue().equals(isContinue)) {
-            idenWarningPerson.setStrangerType(StrangerTypeEnum.NO_REGISTER.getValue());
-        } else {
-            return;
-        }
-        idenWarningPerson.setUid(idenFaceImage.getUid());
-        idenWarningPerson.setDataDate(idenFaceImage.getDataDate());
-        idenWarningPerson.setImage(idenFaceImage.getImage());
-
-        Long cameraId = idenFaceImage.getCameraId();
-        if(cameraId != null) {
-            IdenCamera idenCamera = this.idenCameraService.getById(cameraId);
-            idenWarningPerson.setDistrict(idenCamera.getDistrict());
-            idenWarningPerson.setSubdistrict(idenCamera.getSubdistrict());
+        } else if(strangerDayFrequency >= strangerFrequencyRule ||  IsContinueEnum.YES.getValue().equals(isContinue)) {
+            isWarning = true;
+            strangerType = StrangerTypeEnum.NO_REGISTER.getValue();
         }
+        if(isWarning) {
+            //查询是不是已经有预警人员数据了
+            QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
+            queryWrapper0.lambda()
+                    .eq(IdenWarningPerson::getCommunityId,communityId)
+                    .eq(IdenWarningPerson::getUid,idenFaceImage.getUid())
+                    .eq(IdenWarningPerson::getType,WarningTypeEnum.STRANGER.getValue());
+            IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper0);
+
+            if (idenWarningPerson != null) {
+                idenWarningPerson.setAppearFrequency(strangerDayFrequency);
+                idenWarningPerson.setStrangerType(strangerType);
+                idenWarningPerson.setModifyTime(new Date());
+                this.idenWarningPersonService.updateById(idenWarningPerson);
+            } else {
+                idenWarningPerson = new IdenWarningPerson();
+                idenWarningPerson.setStrangerType(strangerType);
+                idenWarningPerson.setUid(idenFaceImage.getUid());
+                idenWarningPerson.setDataDate(idenFaceImage.getDataDate());
+                idenWarningPerson.setImage(idenFaceImage.getImage());
+                idenWarningPerson.setFeatPtr(idenFaceImage.getFeatPtr());
+
+                Long cameraId = idenFaceImage.getCameraId();
+                if(cameraId != null) {
+                    IdenCamera idenCamera = this.idenCameraService.getById(cameraId);
+                    idenWarningPerson.setDistrict(idenCamera.getDistrict());
+                    idenWarningPerson.setSubdistrict(idenCamera.getSubdistrict());
+                }
 
-        IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
-        if (idenCommunity != null) {
-            idenWarningPerson.setCommunityId(communityId);
-            idenWarningPerson.setCommunityCode(idenCommunity.getCode());
-            idenWarningPerson.setCommunityName(idenCommunity.getName());
-        }
-        idenWarningPerson.setAppearFrequency(strangerDayFrequency);
-        idenWarningPerson.setIsContinue(isContinue);
-
-        //查询此人在该小区最早出现时间
-        QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
-        queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId)
-        .orderByAsc(IdenFaceImage::getPhotographTime);
-        queryWrapper1.last("limit 1");
-        IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
-        if(idenFaceImage1 != null){
-            idenWarningPerson.setEarliestAppearTime(idenFaceImage1.getPhotographTime());
-        }
+                IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
+                if (idenCommunity != null) {
+                    idenWarningPerson.setCommunityId(communityId);
+                    idenWarningPerson.setCommunityCode(idenCommunity.getCode());
+                    idenWarningPerson.setCommunityName(idenCommunity.getName());
+                }
+                idenWarningPerson.setAppearFrequency(strangerDayFrequency);
+                idenWarningPerson.setIsContinue(isContinue);
+
+                //查询此人在该小区最早出现时间
+                QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId)
+                        .orderByAsc(IdenFaceImage::getPhotographTime);
+                queryWrapper1.last("limit 1");
+                IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
+                if(idenFaceImage1 != null){
+                    idenWarningPerson.setEarliestAppearTime(idenFaceImage1.getPhotographTime());
+                }
 
-        idenWarningPerson.setType(WarningTypeEnum.STRANGER.getValue());
-        idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
-        this.idenWarningPersonService.save(idenWarningPerson);
+                idenWarningPerson.setType(WarningTypeEnum.STRANGER.getValue());
+                idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
+                this.idenWarningPersonService.save(idenWarningPerson);
 
-        IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
-        idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
-        idenWarningEvent.setDataTime(idenFaceImage.getPhotographTime());
-        idenWarningEvent.setImage(idenFaceImage.getImage());
-        idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
-        idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
-        idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
-        idenWarningEvent.setDistrict(idenWarningPerson.getDistrict());
-        idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
-        idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
-        idenWarningEvent.setType(WarningTypeEnum.STRANGER.getValue());
-        idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
-        this.idenWarningEventService.save(idenWarningEvent);
+                IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
+                BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
+                idenWarningPersonHisService.save(idenWarningPersonHis);
+            }
+
+            IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
+            idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
+            idenWarningEvent.setDataTime(idenFaceImage.getPhotographTime());
+            idenWarningEvent.setImage(idenFaceImage.getImage());
+            idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
+            idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
+            idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
+            idenWarningEvent.setDistrict(idenWarningPerson.getDistrict());
+            idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
+            idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
+            idenWarningEvent.setType(WarningTypeEnum.STRANGER.getValue());
+            idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
+            this.idenWarningEventService.save(idenWarningEvent);
+        }
 
     }
 
@@ -224,19 +241,22 @@ public class WarningService {
         if(communityId == null) {
             return;
         }
-        //查询该天是不是已经有预警人员数据了
+        //查询是不是已经有预警人员数据了
         QueryWrapper<IdenWarningPerson> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(IdenWarningPerson::getDataDate,idenFaceImage.getDataDate())
+        queryWrapper.lambda()
                 .eq(IdenWarningPerson::getCommunityId,communityId)
                 .eq(IdenWarningPerson::getPersonId,idenFaceImage.getPersonId())
                 .eq(IdenWarningPerson::getType,WarningTypeEnum.KEYNOTE.getValue());
         IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper);
         if (idenWarningPerson != null) {
             idenWarningPerson.setAppearFrequency(idenWarningPerson.getAppearFrequency() + 1);
+            idenWarningPerson.setModifyTime(new Date());
+            this.idenWarningPersonService.updateById(idenWarningPerson);
         } else {
             idenWarningPerson = new IdenWarningPerson();
             idenWarningPerson.setUid(idenFaceImage.getUid());
             idenWarningPerson.setImage(idenFaceImage.getImage());
+            idenWarningPerson.setFeatPtr(idenFaceImage.getFeatPtr());
             idenWarningPerson.setDataDate(idenFaceImage.getDataDate());
             Long cameraId = idenFaceImage.getCameraId();
             if(cameraId != null) {
@@ -267,6 +287,10 @@ public class WarningService {
             idenWarningPerson.setPersonId(idenFaceImage.getPersonId());
             idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
             this.idenWarningPersonService.save(idenWarningPerson);
+
+            IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
+            BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
+            idenWarningPersonHisService.save(idenWarningPersonHis);
         }
 
         IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
@@ -311,47 +335,54 @@ public class WarningService {
                 continueDisappearDaysRule = idenWarningRuleResident.getContinueDisappearDays();
             }
 
-
             if (idenFaceImage == null){
                 idenFaceImage = new IdenFaceImage();
                 idenFaceImage.setPhotographTime(DateUtils.getBeforeDates(100)); //设定一个假时间
             }
             int continueDisappearDays = DateUtils.getDaysGap(idenFaceImage.getPhotographTime(), new Date()) - 1;
-            //超过7天没出现
+            //超过7天没出现, 满足预警
             if ( continueDisappearDays > continueDisappearDaysRule ) {
                 //查询是不是已经有预警人员数据了
                 QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
-                queryWrapper0.lambda().eq(IdenWarningPerson::getDataDate,DateUtils.getYestodayYyyyMMddDate())
+                queryWrapper0.lambda()
                         .eq(IdenWarningPerson::getCommunityId,idenPerson.getCommunityId())
                         .eq(IdenWarningPerson::getPersonId,idenPerson.getId())
                         .eq(IdenWarningPerson::getType,WarningTypeEnum.RESIDENT.getValue());
-                int cnt = this.idenWarningPersonService.count(queryWrapper0);
-                if (cnt > 0) {
-                    return;
-                }
-                //生成预警数据
-                IdenWarningPerson idenWarningPerson = new IdenWarningPerson();
-                idenWarningPerson.setUid(idenPerson.getUid());
-                idenWarningPerson.setImage(idenPerson.getImage());
-                idenWarningPerson.setDataDate(DateUtils.getYestodayYyyyMMddDate());
-                Long communityId = idenPerson.getCommunityId();
-                IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
-                if (idenCommunity != null) {
-                    idenWarningPerson.setCommunityId(communityId);
-                    idenWarningPerson.setCommunityCode(idenCommunity.getCode());
-                    idenWarningPerson.setCommunityName(idenCommunity.getName());
-                    idenWarningPerson.setSubdistrict(idenCommunity.getSubdistrict());
-                    idenWarningPerson.setDistrict(idenCommunity.getDistrict());
+                IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper0);
+                if (idenWarningPerson != null) {
+                    idenWarningPerson.setContinueDisappearDays(continueDisappearDays);
+                    idenWarningPerson.setModifyTime(new Date());
+                    this.idenWarningPersonService.updateById(idenWarningPerson);
+                } else {
+                    //生成预警数据
+                    idenWarningPerson = new IdenWarningPerson();
+                    idenWarningPerson.setUid(idenPerson.getUid());
+                    idenWarningPerson.setImage(idenPerson.getImage());
+                    idenWarningPerson.setFeatPtr(idenFaceImage.getFeatPtr());
+                    idenWarningPerson.setDataDate(DateUtils.getYestodayYyyyMMddDate());
+                    Long communityId = idenPerson.getCommunityId();
+                    IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
+                    if (idenCommunity != null) {
+                        idenWarningPerson.setCommunityId(communityId);
+                        idenWarningPerson.setCommunityCode(idenCommunity.getCode());
+                        idenWarningPerson.setCommunityName(idenCommunity.getName());
+                        idenWarningPerson.setSubdistrict(idenCommunity.getSubdistrict());
+                        idenWarningPerson.setDistrict(idenCommunity.getDistrict());
+                    }
+
+                    idenWarningPerson.setContinueDisappearDays(continueDisappearDays);
+                    //此人在该小区最晚出现时间
+                    idenWarningPerson.setLatestAppearTime(idenFaceImage.getPhotographTime());
+
+                    idenWarningPerson.setType(WarningTypeEnum.RESIDENT.getValue());
+                    idenWarningPerson.setCreateTime(DateUtils.strToDate(DateUtils.getYestodayYyyyMMddDate(),"yyyyMMdd"));
+                    this.idenWarningPersonService.save(idenWarningPerson);
+
+                    IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
+                    BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
+                    idenWarningPersonHisService.save(idenWarningPersonHis);
                 }
 
-                idenWarningPerson.setContinueDisappearDays(continueDisappearDays);
-                //此人在该小区最晚出现时间
-                idenWarningPerson.setLatestAppearTime(idenFaceImage.getPhotographTime());
-
-                idenWarningPerson.setType(WarningTypeEnum.RESIDENT.getValue());
-                idenWarningPerson.setCreateTime(DateUtils.strToDate(DateUtils.getYestodayYyyyMMddDate(),"yyyyMMdd"));
-                this.idenWarningPersonService.save(idenWarningPerson);
-
                 IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
                 idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
                 idenWarningEvent.setDataTime(idenWarningPerson.getLatestAppearTime());
@@ -377,18 +408,6 @@ public class WarningService {
             return;
         }
 
-        //查询是不是已经有预警人员数据了
-        QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
-        queryWrapper0.lambda().eq(IdenWarningPerson::getDataDate,idenFaceImage.getDataDate())
-                .eq(IdenWarningPerson::getUid,idenFaceImage.getUid())
-                .eq(IdenWarningPerson::getType,WarningTypeEnum.EVENT_COMMING.getValue());
-        int cnt = this.idenWarningPersonService.count(queryWrapper0);
-        if (cnt > 0) {
-            return;
-        }
-
-       //查询配置
-
         //设置默认
         List<IdenWarningRuleEventComming> idenWarningRuleEventCommings = new ArrayList<>();
         IdenWarningRuleEventComming idenWarningRuleEventComming = new IdenWarningRuleEventComming();
@@ -436,42 +455,56 @@ public class WarningService {
         }
 
         int count = this.idenFaceImageService.count(queryWrapper);
-        if (count >= continueDays) { //连续超过7天
-            IdenWarningPerson idenWarningPerson = new IdenWarningPerson();
+        if (count >= continueDays) { //连续超过7天,满足预警
+
+            //查询是不是已经有预警人员数据了
+            QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
+            queryWrapper0.lambda()
+                    .eq(IdenWarningPerson::getCommunityId,communityId)
+                    .eq(IdenWarningPerson::getUid,idenFaceImage.getUid())
+                    .eq(IdenWarningPerson::getType,WarningTypeEnum.EVENT_COMMING.getValue());
+            IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper0);
+            if (idenWarningPerson != null) {
+                idenWarningPerson.setAppearFrequency(count);
+                idenWarningPerson.setModifyTime(new Date());
+                this.idenWarningPersonService.updateById(idenWarningPerson);
 
-            idenWarningPerson.setUid(idenFaceImage.getUid());
-            idenWarningPerson.setDataDate(idenFaceImage.getDataDate());
-            idenWarningPerson.setImage(idenFaceImage.getImage());
+            } else {
+                 idenWarningPerson = new IdenWarningPerson();
+                idenWarningPerson.setUid(idenFaceImage.getUid());
+                idenWarningPerson.setDataDate(idenFaceImage.getDataDate());
+                idenWarningPerson.setImage(idenFaceImage.getImage());
+                idenWarningPerson.setFeatPtr(idenFaceImage.getFeatPtr());
+                Long cameraId = idenFaceImage.getCameraId();
+                if(cameraId != null) {
+                    IdenCamera idenCamera = this.idenCameraService.getById(cameraId);
+                    idenWarningPerson.setDistrict(idenCamera.getDistrict());
+                    idenWarningPerson.setSubdistrict(idenCamera.getSubdistrict());
+                }
 
-            Long cameraId = idenFaceImage.getCameraId();
-            if(cameraId != null) {
-                IdenCamera idenCamera = this.idenCameraService.getById(cameraId);
-                idenWarningPerson.setDistrict(idenCamera.getDistrict());
-                idenWarningPerson.setSubdistrict(idenCamera.getSubdistrict());
-            }
+                IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
+                if (idenCommunity != null) {
+                    idenWarningPerson.setCommunityId(communityId);
+                    idenWarningPerson.setCommunityCode(idenCommunity.getCode());
+                    idenWarningPerson.setCommunityName(idenCommunity.getName());
+                }
+                idenWarningPerson.setAppearFrequency(count);
+
+                //查询此人在该小区最早出现时间
+                QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId)
+                        .orderByAsc(IdenFaceImage::getPhotographTime);
+                queryWrapper1.last("limit 1");
+                IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
+                if(idenFaceImage1 != null){
+                    idenWarningPerson.setEarliestAppearTime(idenFaceImage1.getPhotographTime());
+                }
 
-            IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
-            if (idenCommunity != null) {
-                idenWarningPerson.setCommunityId(communityId);
-                idenWarningPerson.setCommunityCode(idenCommunity.getCode());
-                idenWarningPerson.setCommunityName(idenCommunity.getName());
-            }
-            idenWarningPerson.setAppearFrequency(count);
+                idenWarningPerson.setType(WarningTypeEnum.EVENT_COMMING.getValue());
+                idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
+                this.idenWarningPersonService.save(idenWarningPerson);
 
-            //查询此人在该小区最早出现时间
-            QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId)
-                    .orderByAsc(IdenFaceImage::getPhotographTime);
-            queryWrapper1.last("limit 1");
-            IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
-            if(idenFaceImage1 != null){
-                idenWarningPerson.setEarliestAppearTime(idenFaceImage1.getPhotographTime());
             }
-
-            idenWarningPerson.setType(WarningTypeEnum.EVENT_COMMING.getValue());
-            idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
-            this.idenWarningPersonService.save(idenWarningPerson);
-
             IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
             idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
             idenWarningEvent.setDataTime(idenFaceImage.getPhotographTime());
@@ -486,6 +519,7 @@ public class WarningService {
             idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
             this.idenWarningEventService.save(idenWarningEvent);
         }
+
     }
 
     //按小区统计

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1126 - 0
src/main/java/com/iden/common/IdenWarningPersonHisDefault.java


+ 11 - 0
src/main/java/com/iden/common/entity/IdenWarningPerson.java

@@ -47,6 +47,9 @@ public class IdenWarningPerson implements Serializable {
     @TableField("IMAGE")
     private String image;
 
+    @ApiModelProperty("人脸特征码")
+    @TableField("FEAT_PTR")
+    private String featPtr;
 
     @ApiModelProperty("出现小区id")
     @TableField("COMMUNITY_ID")
@@ -99,6 +102,14 @@ public class IdenWarningPerson implements Serializable {
     private String strangerType;
 
 
+    @ApiModelProperty("人群ID")
+    @TableField("CROWD_ID")
+    private Long crowdId;
+
+    @ApiModelProperty("人员姓名")
+    @TableField("PERSON_NAME")
+    private String personName;
+
     @ApiModelProperty("人员ID")
     @TableField("PERSON_ID")
     private Long personId;

+ 140 - 0
src/main/java/com/iden/common/entity/IdenWarningPersonHis.java

@@ -0,0 +1,140 @@
+package com.iden.common.entity;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 预警人员历史表(IdenWarningPersonHis)实体类
+ *
+ * @author makejava
+ * @since 2022-01-03 12:22:52
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("iden_warning_person_his")
+@ApiModel(value = "预警人员历史表", description = "")
+public class IdenWarningPersonHis implements Serializable {
+    private static final long serialVersionUID = 734694382577310514L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("唯一生物学标识")
+    @TableField("UID")
+    private String uid;
+
+
+    @ApiModelProperty("数据日期(yyyyMMdd)")
+    @TableField("DATA_DATE")
+    private String dataDate;
+
+
+    @ApiModelProperty("图像")
+    @TableField("IMAGE")
+    private String image;
+
+
+    @ApiModelProperty("出现小区id")
+    @TableField("COMMUNITY_ID")
+    private Long communityId;
+
+
+    @ApiModelProperty("出现小区编号")
+    @TableField("COMMUNITY_CODE")
+    private String communityCode;
+
+
+    @ApiModelProperty("出现小区名称")
+    @TableField("COMMUNITY_NAME")
+    private String communityName;
+
+
+    @ApiModelProperty("出现区域")
+    @TableField("DISTRICT")
+    private String district;
+
+
+    @ApiModelProperty("出现街道")
+    @TableField("SUBDISTRICT")
+    private String subdistrict;
+
+
+    @ApiModelProperty("出现频次")
+    @TableField("APPEAR_FREQUENCY")
+    private Integer appearFrequency;
+
+
+    @ApiModelProperty("1月内-7天出现情况,1连续出现,0未连续出现")
+    @TableField("IS_CONTINUE")
+    private String isContinue;
+
+
+    @ApiModelProperty("最早出现时间")
+    @TableField("EARLIEST_APPEAR_TIME")
+    private Date earliestAppearTime;
+
+
+    @ApiModelProperty("最晚出现时间")
+    @TableField("LATEST_APPEAR_TIME")
+    private Date latestAppearTime;
+
+
+    @ApiModelProperty("预警类型,1 陌生人员预警 2重点人员预警 3常住人员预警 4昼伏夜出人员预警")
+    @TableField("TYPE")
+    private String type;
+
+
+    @ApiModelProperty("陌生人员标记,1陌生人 2未登记")
+    @TableField("STRANGER_TYPE")
+    private String strangerType;
+
+
+    @ApiModelProperty("人员ID")
+    @TableField("PERSON_ID")
+    private Long personId;
+
+
+    @ApiModelProperty("连续未出现天数")
+    @TableField("CONTINUE_DISAPPEAR_DAYS")
+    private Integer continueDisappearDays;
+
+
+    @ApiModelProperty("处理状态,0未处理,1已处理")
+    @TableField("HANDLE_STATUS")
+    private Integer handleStatus;
+
+
+    @ApiModelProperty("备注")
+    @TableField("REMARK")
+    private String remark;
+
+
+    @ApiModelProperty("createTime")
+    @TableField("CREATE_TIME")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    @TableField("MODIFY_TIME")
+    private Date modifyTime;
+
+
+}

+ 4 - 0
src/main/java/com/iden/common/entity/IdenWarningPersonTrace.java

@@ -39,6 +39,10 @@ public class IdenWarningPersonTrace implements Serializable {
     @TableField("UID")
     private String uid;
 
+    @ApiModelProperty("数据日期(yyyyMMdd)")
+    @TableField("DATA_DATE")
+    private String dataDate;
+
 
     @ApiModelProperty("图像")
     @TableField("IMAGE")

+ 15 - 0
src/main/java/com/iden/common/mapper/IdenWarningPersonHisMapper.java

@@ -0,0 +1,15 @@
+package com.iden.common.mapper;
+
+import com.iden.common.entity.IdenWarningPersonHis;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 预警人员历史表(IdenWarningPersonHis)表数据库访问层
+ *
+ * @author makejava
+ * @since 2022-01-03 12:23:09
+ */
+public interface IdenWarningPersonHisMapper extends BaseMapper<IdenWarningPersonHis> {
+
+}

+ 14 - 0
src/main/java/com/iden/common/service/IdenWarningPersonHisService.java

@@ -0,0 +1,14 @@
+package com.iden.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iden.common.entity.IdenWarningPersonHis;
+
+/**
+ * 预警人员历史表(IdenWarningPersonHis)表服务接口
+ *
+ * @author makejava
+ * @since 2022-01-03 12:23:09
+ */
+public interface IdenWarningPersonHisService extends IService<IdenWarningPersonHis> {
+
+}

+ 18 - 0
src/main/java/com/iden/common/service/impl/IdenWarningPersonHisServiceImpl.java

@@ -0,0 +1,18 @@
+package com.iden.common.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iden.common.mapper.IdenWarningPersonHisMapper;
+import com.iden.common.entity.IdenWarningPersonHis;
+import com.iden.common.service.IdenWarningPersonHisService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 预警人员历史表(IdenWarningPersonHis)表服务实现类
+ *
+ * @author makejava
+ * @since 2022-01-03 12:23:14
+ */
+@Service
+public class IdenWarningPersonHisServiceImpl extends ServiceImpl<IdenWarningPersonHisMapper, IdenWarningPersonHis> implements IdenWarningPersonHisService {
+
+}

+ 9 - 0
src/main/java/com/iden/common/vo/TraceVO.java

@@ -23,6 +23,9 @@ public class TraceVO implements Serializable {
     @ApiModelProperty("唯一生物学标识")
     private String uid;
 
+    @ApiModelProperty("数据日期(yyyyMMdd)")
+    private String dataDate;
+
     @ApiModelProperty("图像")
     private String image;
 
@@ -49,5 +52,11 @@ public class TraceVO implements Serializable {
     @ApiModelProperty("纬度")
     private Double latitude;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("createTime")
+    private Date createTime;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("modifyTime")
+    private Date modifyTime;
 }

+ 14 - 0
src/main/java/com/iden/common/vo/WarningPersonVO.java

@@ -32,6 +32,8 @@ public class WarningPersonVO implements Serializable {
     @ApiModelProperty("图像")
     private String image;
 
+    @ApiModelProperty("人脸特征码")
+    private String featPtr;
 
     @ApiModelProperty("出现小区id")
     private Long communityId;
@@ -82,9 +84,17 @@ public class WarningPersonVO implements Serializable {
     @ApiModelProperty("陌生人员标记,1陌生人 2未登记")
     private String strangerTypeName;
 
+    @ApiModelProperty("人群ID")
+    private Long crowdId;
+
+    @ApiModelProperty("人群名称")
+    private String crowdName;
+
     @ApiModelProperty("人员ID")
     private Long personId;
 
+    @ApiModelProperty("人员姓名")
+    private String personName;
 
     @ApiModelProperty("连续未出现天数")
     private Integer continueDisappearDays;
@@ -111,4 +121,8 @@ public class WarningPersonVO implements Serializable {
     @ApiModelProperty("人员VO")
     private PersonVO personVO;
 
+    @ApiModelProperty("获取本人信息:0未获取,1已经获取")
+    private int obtainPersonInfo;
+
+
 }

+ 6 - 0
src/main/resources/mybatis/IdenWarningPersonHisMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iden.common.mapper.IdenWarningPersonHisMapper">
+
+
+</mapper>