Browse Source

识别预警

suntianwu 3 years ago
parent
commit
0bf37886b2

+ 23 - 4
src/main/java/com/iden/bms/schedule/WarningSchedule.java

@@ -28,17 +28,17 @@ public class WarningSchedule {
     private RedisUtil redisUtil;
     private RedisUtil redisUtil;
 
 
     /**
     /**
-     * 处理预警
+     * 实时处理轨迹、重点人员预警
      */
      */
     @Async
     @Async
     @Scheduled(cron = "20 0/5 * * * ?")
     @Scheduled(cron = "20 0/5 * * * ?")
-    public void handleWarning() {
-        String key = RedisKeyConstant.HANDLE_WARNING;
+    public void handleActualTimeWarning() {
+        String key = RedisKeyConstant.HANDLE_KEYNOTE_WARNING;
         String requestId = UUID.randomUUID().toString();
         String requestId = UUID.randomUUID().toString();
         boolean result = redisUtil.tryLock(key,requestId,5 * 60);
         boolean result = redisUtil.tryLock(key,requestId,5 * 60);
         try {
         try {
             if (result) {
             if (result) {
-                warningService.handleWarning();
+                warningService.handleActualTimeWarning();
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {
             e.getMessage();
             e.getMessage();
@@ -47,5 +47,24 @@ public class WarningSchedule {
         }
         }
     }
     }
 
 
+    /**
+     * 每天处理陌生人预警、常驻人员预警、昼伏夜出预警, 凌晨0点10分开始处理昨天数据
+     */
+    @Async
+    @Scheduled(cron = "0 10 0 * * ?")
+    public void handleDayWarning() {
+        String key = RedisKeyConstant.HANDLE_DAY_WARNING;
+        String requestId = UUID.randomUUID().toString();
+        boolean result = redisUtil.tryLock(key,requestId,5 * 60);
+        try {
+            if (result) {
+                warningService.handleDayWarning();
+            }
+        } catch (Exception e) {
+            e.getMessage();
+        }  finally {
+            redisUtil.releaseLock(key,requestId);
+        }
+    }
 
 
 }
 }

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

@@ -68,7 +68,7 @@ public class WarningPersonService {
         queryWrapper.select(
         queryWrapper.select(
                 "max(community_id) communityId",
                 "max(community_id) communityId",
                 "max(image) image",
                 "max(image) image",
-                "sum(appear_frequency) appearFrequency",
+                "(case when type = '1' then max(appear_frequency) when type = '2' then sum(appear_frequency) else null end) appearFrequency",
                 "max(is_continue) isContinue",
                 "max(is_continue) isContinue",
                 "max(subdistrict) subdistrict",
                 "max(subdistrict) subdistrict",
                 "max(stranger_type) strangerType",
                 "max(stranger_type) strangerType",

+ 344 - 75
src/main/java/com/iden/bms/service/WarningService.java

@@ -5,9 +5,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.iden.common.entity.*;
 import com.iden.common.entity.*;
-import com.iden.common.enums.HandleWarningStatusEnum;
-import com.iden.common.enums.StrangerTypeEnum;
-import com.iden.common.enums.WarningTypeEnum;
+import com.iden.common.enums.*;
 import com.iden.common.exception.BDException;
 import com.iden.common.exception.BDException;
 
 
 
 
@@ -22,6 +20,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  *
  *
@@ -47,13 +46,19 @@ public class WarningService {
     private IdenWarningStaService idenWarningStaService;
     private IdenWarningStaService idenWarningStaService;
     @Resource
     @Resource
     private IdenWarningRuleStrangerService idenWarningRuleStrangerService;
     private IdenWarningRuleStrangerService idenWarningRuleStrangerService;
+    @Resource
+    private IdenWarningRuleResidentService idenWarningRuleResidentService;
+    @Resource
+    private IdenWarningRuleEventCommingService idenWarningRuleEventCommingService;
 
 
+    @Resource
+    private IdenPersonService idenPersonService;
     /**
     /**
-     * 处理预警
+     * 实时处理轨迹、重点人员预警
      * @return
      * @return
      */
      */
 
 
-    public void handleWarning() throws BDException {
+    public void handleActualTimeWarning() throws BDException {
       //查询没有处理过的人脸图像数据
       //查询没有处理过的人脸图像数据
         QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
         QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(IdenFaceImage::getHandleWarningStatus, HandleWarningStatusEnum.NO_HANDLE.getValue())
         queryWrapper.lambda().eq(IdenFaceImage::getHandleWarningStatus, HandleWarningStatusEnum.NO_HANDLE.getValue())
@@ -65,19 +70,16 @@ public class WarningService {
 
 
         for (IdenFaceImage idenFaceImage : idenFaceImageList) {
         for (IdenFaceImage idenFaceImage : idenFaceImageList) {
 
 
+            //生成轨迹
+            IdenWarningPersonTrace idenWarningPersonTrace = new IdenWarningPersonTrace();
+            BeanUtil.copyProperties(idenFaceImage,idenWarningPersonTrace,"id");
+            this.idenWarningPersonTraceService.save(idenWarningPersonTrace);
+
             String type = idenFaceImage.getType();
             String type = idenFaceImage.getType();
-            if (StringUtils.isNotEmpty(type) && type.contains("0")) {
-                handleStranger(idenFaceImage);
-            }
-            else if (StringUtils.isNotEmpty(type) && type.contains("1")) {
+            //重点人员
+            if (StringUtils.isNotEmpty(type) && type.contains(PersonTypeEnum.KEYNOTE.getValue())) {
                 handleKeynote(idenFaceImage);
                 handleKeynote(idenFaceImage);
             }
             }
-            else if (StringUtils.isNotEmpty(type) && type.contains("2")) { //小区人员
-
-            }
-            else if (StringUtils.isNotEmpty(type) && type.contains("3")) { //昼伏夜出人员
-
-            }
 
 
             IdenFaceImage idenFaceImageUpdate = new IdenFaceImage();
             IdenFaceImage idenFaceImageUpdate = new IdenFaceImage();
             idenFaceImageUpdate.setId(idenFaceImage.getId());
             idenFaceImageUpdate.setId(idenFaceImage.getId());
@@ -87,19 +89,60 @@ public class WarningService {
 
 
     }
     }
 
 
-    //陌生人员
-    private void handleStranger(IdenFaceImage idenFaceImage){
+    /**
+     * 每天处理陌生人预警、常驻人员预警、昼伏夜出预警, 凌晨0点10分开始处理昨天数据
+     * @return
+     */
+    public void handleDayWarning() throws BDException {
+        //昼伏夜出识别预警
+        handleResident();
 
 
-        //查询此人1月出现天次
-        QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
-        queryWrapper1.select("select distinct data_date dataDate ") ;
-        queryWrapper1.lambda().eq(IdenFaceImage::getUid,idenFaceImage.getUid())
+        //查询昨天的人脸图像数据
+        QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenFaceImage::getDataDate, DateUtils.getYestodayYyyyMMddDate()).orderByDesc(IdenFaceImage::getPhotographTime);
+        List<IdenFaceImage> idenFaceImageList = idenFaceImageService.list(queryWrapper);
+        if (CollUtil.isEmpty(idenFaceImageList)) {
+            return;
+        }
+
+        for (IdenFaceImage idenFaceImage : idenFaceImageList) {
+            String type = idenFaceImage.getType();
+
+            if (StringUtils.isNotEmpty(type) && type.contains(PersonTypeEnum.STRANGER.getValue())) { //陌生人员
+                handleStranger(idenFaceImage);//陌生人员识别预警
+            }  else if (StringUtils.isNotEmpty(type) && type.contains(PersonTypeEnum.EVENT_COMMING.getValue())) { //昼伏夜出人员
+                handleEventComming(idenFaceImage);//昼伏夜出人员识别预警
+            }
+        }
+    }
+
+    //陌生人员识别预警
+    private void handleStranger(IdenFaceImage idenFaceImage) {
+        Long communityId = idenFaceImage.getCommunityId();
+        if (communityId == null) {
+            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 ") ;
+        queryWrapper.lambda().eq(IdenFaceImage::getUid,idenFaceImage.getUid()).eq(IdenFaceImage::getCommunityId,communityId)
                 .orderByAsc(IdenFaceImage::getDataDate);
                 .orderByAsc(IdenFaceImage::getDataDate);
-        queryWrapper1.apply(" data_date > date_format(DATE_SUB(CURDATE(), INTERVAL 30 DAY),'%Y%m%d')");
-        int strangerDayFrequency = this.idenFaceImageService.count(queryWrapper1);
+        queryWrapper.apply(" data_date >= date_format(DATE_SUB(CURDATE(), INTERVAL 30 DAY),'%Y%m%d')  and  data_date <= date_format(DATE_SUB(CURDATE(), INTERVAL 1 DAY),'%Y%m%d')");
+        int strangerDayFrequency = this.idenFaceImageService.count(queryWrapper);
 
 
-        //1月内-7天出现情况
-        List<IdenFaceImage> listDataDate =  this.idenFaceImageService.list(queryWrapper1);
+        //1月内7天出现情况
+        List<IdenFaceImage> listDataDate =  this.idenFaceImageService.list(queryWrapper);
 
 
         QueryWrapper<IdenWarningRuleStranger> queryWrapper3 = new QueryWrapper<>();
         QueryWrapper<IdenWarningRuleStranger> queryWrapper3 = new QueryWrapper<>();
         IdenWarningRuleStranger idenWarningRuleStranger = idenWarningRuleStrangerService.getOne(queryWrapper3);
         IdenWarningRuleStranger idenWarningRuleStranger = idenWarningRuleStrangerService.getOne(queryWrapper3);
@@ -109,20 +152,21 @@ public class WarningService {
             strangerFrequency = idenWarningRuleStranger.getStrangerFrequency();
             strangerFrequency = idenWarningRuleStranger.getStrangerFrequency();
             strangerDays = idenWarningRuleStranger.getStrangerDays();
             strangerDays = idenWarningRuleStranger.getStrangerDays();
         }
         }
-        boolean isContinue = getIsContinue(listDataDate,strangerDays);
+        String isContinue = getIsContinue(listDataDate,strangerDays);
 
 
         IdenWarningPerson idenWarningPerson = new IdenWarningPerson();
         IdenWarningPerson idenWarningPerson = new IdenWarningPerson();
 
 
         //此人1月出现频次少于15次及7内天每天未连续出现,视为陌生人
         //此人1月出现频次少于15次及7内天每天未连续出现,视为陌生人
-        if(strangerDayFrequency < strangerFrequency &&  !isContinue) {
+        if(strangerDayFrequency < strangerFrequency &&  IsContinueEnum.NO.getValue().equals(isContinue)) {
             idenWarningPerson.setStrangerType(StrangerTypeEnum.STRANGER.getValue());
             idenWarningPerson.setStrangerType(StrangerTypeEnum.STRANGER.getValue());
-        } else if(strangerDayFrequency >= strangerFrequency ||  isContinue) {
+            //此人出现频次1月内大于15天次或连续7天每天都出现,标注为疑似未登记住户
+        } else if(strangerDayFrequency >= strangerFrequency ||  IsContinueEnum.YES.getValue().equals(isContinue)) {
             idenWarningPerson.setStrangerType(StrangerTypeEnum.NO_REGISTER.getValue());
             idenWarningPerson.setStrangerType(StrangerTypeEnum.NO_REGISTER.getValue());
         } else {
         } else {
             return;
             return;
         }
         }
-
-        idenWarningPerson.setDataDate(DateUtils.strToDate(DateUtils.formatToDateStr(idenFaceImage.getPhotographTime(),"yyyy-MM-dd"),"yyyy-MM-dd"));
+        idenWarningPerson.setUid(idenFaceImage.getUid());
+        idenWarningPerson.setDataDate(idenFaceImage.getDataDate());
         idenWarningPerson.setImage(idenFaceImage.getImage());
         idenWarningPerson.setImage(idenFaceImage.getImage());
 
 
         Long cameraId = idenFaceImage.getCameraId();
         Long cameraId = idenFaceImage.getCameraId();
@@ -131,19 +175,27 @@ public class WarningService {
             idenWarningPerson.setDistrict(idenCamera.getDistrict());
             idenWarningPerson.setDistrict(idenCamera.getDistrict());
             idenWarningPerson.setSubdistrict(idenCamera.getSubdistrict());
             idenWarningPerson.setSubdistrict(idenCamera.getSubdistrict());
         }
         }
-        Long communityId = idenFaceImage.getCommunityId();
-        if(communityId != null) {
-            IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
-            if (idenCommunity != null) {
-                idenWarningPerson.setCommunityId(communityId);
-                idenWarningPerson.setCommunityCode(idenCommunity.getCode());
-                idenWarningPerson.setCommunityName(idenCommunity.getName());
-            }
+
+        IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
+        if (idenCommunity != null) {
+            idenWarningPerson.setCommunityId(communityId);
+            idenWarningPerson.setCommunityCode(idenCommunity.getCode());
+            idenWarningPerson.setCommunityName(idenCommunity.getName());
         }
         }
         idenWarningPerson.setAppearFrequency(strangerDayFrequency);
         idenWarningPerson.setAppearFrequency(strangerDayFrequency);
-        idenWarningPerson.setEarliestAppearTime(idenFaceImage.getPhotographTime());
-        idenWarningPerson.setType(WarningTypeEnum.KEYNOTE.getValue());
-        idenWarningPerson.setPersonId(idenFaceImage.getPersonId());
+        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());
         idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
         this.idenWarningPersonService.save(idenWarningPerson);
         this.idenWarningPersonService.save(idenWarningPerson);
 
 
@@ -154,47 +206,65 @@ public class WarningService {
         idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
         idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
         idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
         idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
         idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
         idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
-        idenWarningEvent.setCommunityName(idenWarningPerson.getDistrict());
+        idenWarningEvent.setDistrict(idenWarningPerson.getDistrict());
         idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
         idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
         idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
         idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
-        idenWarningEvent.setType(WarningTypeEnum.KEYNOTE.getValue());
-        idenWarningEvent.setPersonId(idenFaceImage.getPersonId());
+        idenWarningEvent.setType(WarningTypeEnum.STRANGER.getValue());
         idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
         idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
         this.idenWarningEventService.save(idenWarningEvent);
         this.idenWarningEventService.save(idenWarningEvent);
 
 
-        IdenWarningPersonTrace idenWarningPersonTrace = new IdenWarningPersonTrace();
-        BeanUtil.copyProperties(idenFaceImage,idenWarningPersonTrace,"id");
-        idenWarningPersonTrace.setWarningPersonId(idenWarningPerson.getId());
-        this.idenWarningPersonTraceService.save(idenWarningPersonTrace);
     }
     }
 
 
-    //重点人员
+    //重点人员识别预警
     private void handleKeynote(IdenFaceImage idenFaceImage){
     private void handleKeynote(IdenFaceImage idenFaceImage){
-
-        IdenWarningPerson idenWarningPerson = new IdenWarningPerson();
-        idenWarningPerson.setImage(idenFaceImage.getImage());
-        idenWarningPerson.setDataDate(DateUtils.strToDate(DateUtils.formatToDateStr(idenFaceImage.getPhotographTime(),"yyyy-MM-dd"),"yyyy-MM-dd"));
-        Long cameraId = idenFaceImage.getCameraId();
-        if(cameraId != null) {
-            IdenCamera idenCamera = this.idenCameraService.getById(cameraId);
-            idenWarningPerson.setDistrict(idenCamera.getDistrict());
-            idenWarningPerson.setSubdistrict(idenCamera.getSubdistrict());
-        }
         Long communityId = idenFaceImage.getCommunityId();
         Long communityId = idenFaceImage.getCommunityId();
-        if(communityId != null) {
+        if(communityId == null) {
+            return;
+        }
+        //查询该天是不是已经有预警人员数据了
+        QueryWrapper<IdenWarningPerson> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenWarningPerson::getDataDate,idenFaceImage.getDataDate())
+                .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);
+        } else {
+            idenWarningPerson = new IdenWarningPerson();
+            idenWarningPerson.setUid(idenFaceImage.getUid());
+            idenWarningPerson.setImage(idenFaceImage.getImage());
+            idenWarningPerson.setDataDate(idenFaceImage.getDataDate());
+            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);
             IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId);
             if (idenCommunity != null) {
             if (idenCommunity != null) {
                 idenWarningPerson.setCommunityId(communityId);
                 idenWarningPerson.setCommunityId(communityId);
                 idenWarningPerson.setCommunityCode(idenCommunity.getCode());
                 idenWarningPerson.setCommunityCode(idenCommunity.getCode());
                 idenWarningPerson.setCommunityName(idenCommunity.getName());
                 idenWarningPerson.setCommunityName(idenCommunity.getName());
             }
             }
+
+            idenWarningPerson.setAppearFrequency(1);
+
+            //查询此人在该小区最早出现时间
+            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.KEYNOTE.getValue());
+            idenWarningPerson.setPersonId(idenFaceImage.getPersonId());
+            idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
+            this.idenWarningPersonService.save(idenWarningPerson);
         }
         }
-        idenWarningPerson.setAppearFrequency(1);
-        idenWarningPerson.setEarliestAppearTime(idenFaceImage.getPhotographTime());
-        idenWarningPerson.setType(WarningTypeEnum.KEYNOTE.getValue());
-        idenWarningPerson.setPersonId(idenFaceImage.getPersonId());
-        idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
-        this.idenWarningPersonService.save(idenWarningPerson);
 
 
         IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
         IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
         idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
         idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
@@ -203,7 +273,7 @@ public class WarningService {
         idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
         idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
         idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
         idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
         idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
         idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
-        idenWarningEvent.setCommunityName(idenWarningPerson.getDistrict());
+        idenWarningEvent.setDistrict(idenWarningPerson.getDistrict());
         idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
         idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
         idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
         idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
         idenWarningEvent.setType(WarningTypeEnum.KEYNOTE.getValue());
         idenWarningEvent.setType(WarningTypeEnum.KEYNOTE.getValue());
@@ -211,15 +281,214 @@ public class WarningService {
         idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
         idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
         this.idenWarningEventService.save(idenWarningEvent);
         this.idenWarningEventService.save(idenWarningEvent);
 
 
-        IdenWarningPersonTrace idenWarningPersonTrace = new IdenWarningPersonTrace();
-        BeanUtil.copyProperties(idenFaceImage,idenWarningPersonTrace,"id");
-        idenWarningPersonTrace.setWarningPersonId(idenWarningPerson.getId());
-        this.idenWarningPersonTraceService.save(idenWarningPersonTrace);
     }
     }
 
 
-    private boolean getIsContinue(List<IdenFaceImage> listDataDate,int strangerDays) {
+    //常住人员识别预警,小区人脸库内7天内未被命中人员或标记为独居老人或老人带小孩的7天内未被命中人员视为预警对象
+    private void handleResident() {
+        //查询全部小区人员
+        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenPerson::getType, PersonTypeEnum.COMMUNITY.getValue());
+        List<IdenPerson> listPerson = this.idenPersonService.list(queryWrapper);
+        if(CollUtil.isEmpty(listPerson)){
+            return;
+        }
+        //遍历小区人员
+        for (IdenPerson idenPerson :listPerson ) {
+            QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.lambda().eq(IdenFaceImage::getPersonId, idenPerson.getId())
+                    .orderByDesc(IdenFaceImage::getPhotographTime);
+            queryWrapper1.last("limit 1");
+
+            IdenFaceImage idenFaceImage = this.idenFaceImageService.getOne(queryWrapper1);
+
+            int continueDisappearDaysRule = 7;
+            QueryWrapper<IdenWarningRuleResident> queryWrapper2 = new QueryWrapper<>();
+            IdenWarningRuleResident idenWarningRuleResident = this.idenWarningRuleResidentService.getOne(queryWrapper2);
+            if(idenWarningRuleResident != null) {
+                continueDisappearDaysRule = idenWarningRuleResident.getContinueDisappearDays();
+            }
+
+
+            if (idenFaceImage == null){
+                idenFaceImage = new IdenFaceImage();
+                idenFaceImage.setPhotographTime(DateUtils.getBeforeDates(100)); //设定一个假时间
+            }
+            int continueDisappearDays = DateUtils.getDaysGap(idenFaceImage.getPhotographTime(), new Date()) - 1;
+            //超过7天没出现
+            if ( continueDisappearDays > continueDisappearDaysRule ) {
+                //查询是不是已经有预警人员数据了
+                QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
+                queryWrapper0.lambda().eq(IdenWarningPerson::getDataDate,DateUtils.getYestodayYyyyMMddDate())
+                        .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.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());
+                idenWarningEvent.setImage(idenWarningPerson.getImage());
+                idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
+                idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
+                idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
+                idenWarningEvent.setDistrict(idenWarningPerson.getDistrict());
+                idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
+                idenWarningEvent.setAppearTime(idenWarningPerson.getLatestAppearTime());
+                idenWarningEvent.setType(WarningTypeEnum.RESIDENT.getValue());
+                idenWarningEvent.setCreateTime(idenWarningPerson.getCreateTime());
+                this.idenWarningEventService.save(idenWarningEvent);
+            }
+        }
+
+    }
+
+    //昼伏夜出人员识别预警
+    private void handleEventComming(IdenFaceImage idenFaceImage) {
+        Long communityId = idenFaceImage.getCommunityId();
+        if (communityId == null) {
+            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();
+        idenWarningRuleEventComming.setStartTime("23:00:00");
+        idenWarningRuleEventComming.setEndTime("04:00:00");
+        idenWarningRuleEventComming.setStatus(AppearStatusEnum.APPEAR.getValue());
+        idenWarningRuleEventComming.setContinueDays(7);
+        idenWarningRuleEventCommings.add(idenWarningRuleEventComming);
+
+        idenWarningRuleEventComming.setStartTime("08:00:00");
+        idenWarningRuleEventComming.setEndTime("23:00:00");
+        idenWarningRuleEventComming.setStatus(AppearStatusEnum.DISAPPEAR.getValue());
+        idenWarningRuleEventComming.setContinueDays(7);
+        idenWarningRuleEventCommings.add(idenWarningRuleEventComming);
+
+        QueryWrapper<IdenWarningRuleEventComming> queryWrapper3 = new QueryWrapper<>();
+        List<IdenWarningRuleEventComming> idenWarningRuleEventCommingsDb = idenWarningRuleEventCommingService.list(queryWrapper3);
+        if (CollUtil.isNotEmpty(idenWarningRuleEventCommingsDb)) {
+            idenWarningRuleEventCommings = idenWarningRuleEventCommingsDb;
+        }
+
+        int continueDays = idenWarningRuleEventCommings.get(0).getContinueDays();
+        String beforeDate = DateUtils.formatToDateStr(DateUtils.getBeforeDates(continueDays + 1),"yyyyMMdd");
+        String yestoday = DateUtils.getYestodayYyyyMMddDate();
+        //查询此人长期晚上某时段出现(时间期间可设)且白天未出现,视为昼伏夜出人员,进行预警
+        QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("select distinct data_date dataDate ") ;
+        queryWrapper.lambda().eq(IdenFaceImage::getUid,idenFaceImage.getUid())
+                .eq(IdenFaceImage::getCommunityId,communityId)
+                .ge(IdenFaceImage::getDataDate,beforeDate)
+                .le(IdenFaceImage::getDataDate,yestoday);
+
+        for(IdenWarningRuleEventComming idenWarningRuleEventComming1 : idenWarningRuleEventCommings) {
+            String startTime = idenWarningRuleEventComming1.getStartTime();
+            String endTime = idenWarningRuleEventComming1.getEndTime();
+            Map<String, Date> map = DateUtils.convertDate(startTime,endTime);
+            Date startDate = map.get("startDate");
+            Date endDate = map.get("endDate");
+            if (AppearStatusEnum.APPEAR.getValue().equals(idenWarningRuleEventComming1.getStatus())) {
+                queryWrapper.apply(" photograph_time > " + startDate + " and  photograph_time < " + endDate + "");
+            } else if (AppearStatusEnum.DISAPPEAR.getValue().equals(idenWarningRuleEventComming1.getStatus())) {
+                queryWrapper.apply(" not exists (select 1 from iden_face_image a where a.data_date = iden_face_image.data_date" +
+                        " and a.photograph_time > " + startDate + " and a.photograph_time <  " + endDate +  ") ");
+            }
+        }
+
+        int count = this.idenFaceImageService.count(queryWrapper);
+        if (count >= continueDays) { //连续超过7天
+            IdenWarningPerson idenWarningPerson = new IdenWarningPerson();
+
+            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());
+            }
+
+            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());
+            }
+
+            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());
+            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.EVENT_COMMING.getValue());
+            idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
+            this.idenWarningEventService.save(idenWarningEvent);
+        }
+    }
+
+    //是否有连续7天情况
+    private String getIsContinue(List<IdenFaceImage> listDataDate,int strangerDays) {
         if(CollUtil.isEmpty(listDataDate)){
         if(CollUtil.isEmpty(listDataDate)){
-            return false;
+            return IsContinueEnum.NO.getValue();
         }
         }
         List<String> dataDateList = new ArrayList<>();
         List<String> dataDateList = new ArrayList<>();
 
 
@@ -239,10 +508,10 @@ public class WarningService {
                 cnt = 0;
                 cnt = 0;
             }
             }
             if(cnt >= strangerDays) {
             if(cnt >= strangerDays) {
-                return true;
+                return IsContinueEnum.YES.getValue();
             }
             }
         }
         }
 
 
-        return false;
+        return IsContinueEnum.NO.getValue();
     }
     }
 }
 }

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

@@ -18,7 +18,8 @@ public class RedisKeyConstant {
 
 
     public static final String HANDLE_CAMERA_IMAGE = "HANDLE:CAMERA_IMAGE";
     public static final String HANDLE_CAMERA_IMAGE = "HANDLE:CAMERA_IMAGE";
     public static final String HANDLE_CAMERA_VIDEO = "HANDLE:CAMERA_VIDEO";
     public static final String HANDLE_CAMERA_VIDEO = "HANDLE:CAMERA_VIDEO";
-    public static final String HANDLE_WARNING = "HANDLE:WARNING";
+    public static final String HANDLE_KEYNOTE_WARNING = "HANDLE:KEYNOTE_WARNING";
+    public static final String HANDLE_DAY_WARNING = "HANDLE:DAY_WARNING";
 
 
     public static final String LOGIN_VALIDATE_CODE = "LOGIN:VALIDATE_CODE";
     public static final String LOGIN_VALIDATE_CODE = "LOGIN:VALIDATE_CODE";
     public static final int LOGIN_VALIDATE_CODE_TIME = 1800;
     public static final int LOGIN_VALIDATE_CODE_TIME = 1800;

+ 3 - 0
src/main/java/com/iden/common/entity/IdenWarningEvent.java

@@ -34,6 +34,9 @@ public class IdenWarningEvent implements Serializable {
     @TableId(value = "ID", type = IdType.AUTO)
     @TableId(value = "ID", type = IdType.AUTO)
     private Long id;
     private Long id;
 
 
+    @ApiModelProperty("唯一生物学标识")
+    @TableField("UID")
+    private String uid;
 
 
     @ApiModelProperty("预警人员表ID")
     @ApiModelProperty("预警人员表ID")
     @TableField("WARNING_PERSON_ID")
     @TableField("WARNING_PERSON_ID")

+ 8 - 2
src/main/java/com/iden/common/entity/IdenWarningPerson.java

@@ -34,10 +34,13 @@ public class IdenWarningPerson implements Serializable {
     @TableId(value = "ID", type = IdType.AUTO)
     @TableId(value = "ID", type = IdType.AUTO)
     private Long id;
     private Long id;
 
 
+    @ApiModelProperty("唯一生物学标识")
+    @TableField("UID")
+    private String uid;
 
 
-    @ApiModelProperty("数据日期")
+    @ApiModelProperty("数据日期(yyyyMMdd)")
     @TableField("DATA_DATE")
     @TableField("DATA_DATE")
-    private Date dataDate;
+    private String dataDate;
 
 
 
 
     @ApiModelProperty("图像")
     @ApiModelProperty("图像")
@@ -82,6 +85,9 @@ public class IdenWarningPerson implements Serializable {
     @TableField("EARLIEST_APPEAR_TIME")
     @TableField("EARLIEST_APPEAR_TIME")
     private Date earliestAppearTime;
     private Date earliestAppearTime;
 
 
+    @ApiModelProperty("最晚出现时间")
+    @TableField("LATEST_APPEAR_TIME")
+    private Date latestAppearTime;
 
 
     @ApiModelProperty("预警类型,1 陌生人员预警 2重点人员预警 3常住人员预警 4昼伏夜出人员预警")
     @ApiModelProperty("预警类型,1 陌生人员预警 2重点人员预警 3常住人员预警 4昼伏夜出人员预警")
     @TableField("TYPE")
     @TableField("TYPE")

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

@@ -35,9 +35,9 @@ public class IdenWarningPersonTrace implements Serializable {
     private Long id;
     private Long id;
 
 
 
 
-    @ApiModelProperty("预警人员表ID")
-    @TableField("WARNING_PERSON_ID")
-    private Long warningPersonId;
+    @ApiModelProperty("唯一生物学标识")
+    @TableField("UID")
+    private String uid;
 
 
 
 
     @ApiModelProperty("图像")
     @ApiModelProperty("图像")

+ 3 - 0
src/main/java/com/iden/common/entity/IdenWarningRuleEventComming.java

@@ -35,6 +35,9 @@ public class IdenWarningRuleEventComming implements Serializable {
     @TableId(value = "ID", type = IdType.AUTO)
     @TableId(value = "ID", type = IdType.AUTO)
     private Long id;
     private Long id;
 
 
+    @ApiModelProperty("持续多少天")
+    @TableField("CONTINUE_DAYS")
+    private int continueDays;
 
 
     @ApiModelProperty("开始时间(HH:mm:00),精确到分钟")
     @ApiModelProperty("开始时间(HH:mm:00),精确到分钟")
     @TableField("START_TIME")
     @TableField("START_TIME")

+ 2 - 2
src/main/java/com/iden/common/entity/IdenWarningRuleResident.java

@@ -36,8 +36,8 @@ public class IdenWarningRuleResident implements Serializable {
 
 
 
 
     @ApiModelProperty("连续X天内未被抓拍到人脸的常住人口")
     @ApiModelProperty("连续X天内未被抓拍到人脸的常住人口")
-    @TableField("CONTINUE_DAYS")
-    private Integer continueDays;
+    @TableField("CONTINUE_DISAPPEAR_DAYS")
+    private Integer continueDisappearDays;
 
 
     @ApiModelProperty("createTime")
     @ApiModelProperty("createTime")
     @TableField("CREATE_TIME")
     @TableField("CREATE_TIME")

+ 38 - 0
src/main/java/com/iden/common/enums/AppearStatusEnum.java

@@ -0,0 +1,38 @@
+package com.iden.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum AppearStatusEnum {
+    /**
+     * 出现状态
+     */
+    APPEAR("0","出现"),
+    DISAPPEAR("1","不出现");
+    private String value;
+    private String name;
+    AppearStatusEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getValueToName(String value){
+        if (StrUtil.isEmpty(value)){
+            return null;
+        }
+        if (APPEAR.getValue().equals(value)){
+            return  APPEAR.name;
+        }else if (DISAPPEAR.getValue().equals(value)){
+            return  DISAPPEAR.name;
+        }
+
+        return null;
+    }
+}

+ 99 - 10
src/main/java/com/iden/common/util/DateUtils.java

@@ -2,10 +2,7 @@ package com.iden.common.util;
 
 
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 
 /**
 /**
  *  @description 时间控件
  *  @description 时间控件
@@ -39,11 +36,31 @@ public class DateUtils {
     }
     }
 
 
     /**
     /**
-     * date日期过num天的日期
-     * @param date
-     * @param num
-     * @return
-     */
+    * 俩个时间间隔天数字符串的日期格式的计算
+    */
+    public static int daysBetween(String smdate, String bdate) {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(sdf.parse(smdate));
+            long time1 = cal.getTimeInMillis();
+            cal.setTime(sdf.parse(bdate));
+            long time2 = cal.getTimeInMillis();
+            long between_days = (time2 - time1) / (1000 * 3600 * 24);
+
+            return Integer.parseInt(String.valueOf(between_days));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+
+        /**
+         * date日期过num天的日期
+         * @param date
+         * @param num
+         * @return
+         */
     public static Date dateGapDays(Date date, int num) {
     public static Date dateGapDays(Date date, int num) {
         Calendar cal = Calendar.getInstance();
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         cal.setTime(date);
@@ -151,12 +168,79 @@ public class DateUtils {
     /**
     /**
      * 获取当时间并格式化为:yyyyMMdd格式
      * 获取当时间并格式化为:yyyyMMdd格式
      *
      *
-     * @return 返回yyyyMMddHHmmss格式的时间字符串
+     * @return 返回yyyyMMdd格式的时间字符串
+     * @throws Exception
+     */
+    public static String getCurrYyyyMMddDate() {
+        return yyyyMMdd.format(new Date());
+    }
+
+    /**
+     * 获取昨天并格式化为:yyyyMMdd格式
+     *
+     * @return 返回yyyyMMdd格式的时间字符串
+     * @throws Exception
+     */
+    public static String getYestodayYyyyMMddDate() {
+        Calendar cal =  Calendar.getInstance();
+        cal.add(Calendar.DATE,-1);
+        String yesterday = yyyyMMdd.format(cal.getTime());
+        return yesterday;
+    }
+
+    /**
+     * 把字符串时间段转成日期时间
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public static Map<String,Date> convertDate(String startTime, String endTime) {
+        Map<String,Date> map = new HashMap<>();
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+
+            Calendar start = Calendar.getInstance();
+            start.setTime(sdf.parse(startTime));
+
+            Calendar end = Calendar.getInstance();
+            end.setTime(sdf.parse(endTime));
+
+            if (start.after(end)) { //跨天了
+                end.add(Calendar.DATE,1);
+            }
+
+            map.put("startDate", start.getTime());
+            map.put("endDate", end.getTime());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return map;
+    }
+
+
+    /**
+     * 获取num天前date
+     *
+     * @return 返回yyyyMMdd格式的时间字符串
+     * @throws Exception
+     */
+    public static Date getBeforeDates(int num) {
+        Calendar cal =  Calendar.getInstance();
+        cal.add(Calendar.DATE,-num);
+       cal.getTime();
+        return cal.getTime();
+    }
+
+    /**
+     * 获取当时间并格式化为:yyyy-MM-dd格式
+     *
+     * @return 返回yyyy-MM-dd格式的时间字符串
      * @throws Exception
      * @throws Exception
      */
      */
     public static String getCurrYyyy_MM_ddDate() {
     public static String getCurrYyyy_MM_ddDate() {
         return yyyy_MM_dd.format(new Date());
         return yyyy_MM_dd.format(new Date());
     }
     }
+
     /**
     /**
             * 计算时间格式为:yyyy-MM-dd HH:mm:ss的时间差值
             * 计算时间格式为:yyyy-MM-dd HH:mm:ss的时间差值
      *
      *
@@ -198,4 +282,9 @@ public class DateUtils {
         }
         }
         return result;
         return result;
     }
     }
+
+    public static void main(String[] args) {
+        Map map = convertDate("20:12:00","23:00:00");
+        System.out.println(map);
+    }
 }
 }

+ 2 - 2
src/main/java/com/iden/common/vo/PersonVO.java

@@ -102,10 +102,10 @@ public class PersonVO implements Serializable {
     private String workAddress;
     private String workAddress;
 
 
 
 
-    @ApiModelProperty("类型:1、重点人员,2、小区人员,多个用逗号分割")
+    @ApiModelProperty("类型:2、重点人员,3、小区人员,多个用逗号分割")
     private String type;
     private String type;
 
 
-    @ApiModelProperty("类型名:1、重点人员,2、小区人员,多个用逗号分割")
+    @ApiModelProperty("类型名:2、重点人员,3、小区人员,多个用逗号分割")
     private String typeName;
     private String typeName;
 
 
     @ApiModelProperty("人群类型,多个用逗号分割")
     @ApiModelProperty("人群类型,多个用逗号分割")

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

@@ -20,8 +20,8 @@ import java.util.Date;
 public class TraceVO implements Serializable {
 public class TraceVO implements Serializable {
     private static final long serialVersionUID = -44732106174401548L;
     private static final long serialVersionUID = -44732106174401548L;
 
 
-    @ApiModelProperty("预警人员表ID")
-    private Long warningPersonId;
+    @ApiModelProperty("唯一生物学标识")
+    private String uid;
 
 
     @ApiModelProperty("图像")
     @ApiModelProperty("图像")
     private String image;
     private String image;

+ 11 - 3
src/main/java/com/iden/common/vo/WarningPersonVO.java

@@ -1,6 +1,7 @@
 package com.iden.common.vo;
 package com.iden.common.vo;
 
 
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
@@ -22,10 +23,11 @@ public class WarningPersonVO implements Serializable {
 
 
     private Long id;
     private Long id;
 
 
+    @ApiModelProperty("唯一生物学标识")
+    private String uid;
 
 
-    @ApiModelProperty("数据日期")
-    private Date dataDate;
-
+    @ApiModelProperty("数据日期(yyyyMMdd)")
+    private String dataDate;
 
 
     @ApiModelProperty("图像")
     @ApiModelProperty("图像")
     private String image;
     private String image;
@@ -61,8 +63,12 @@ public class WarningPersonVO implements Serializable {
     private String isContinueName;
     private String isContinueName;
 
 
     @ApiModelProperty("最早出现时间")
     @ApiModelProperty("最早出现时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date earliestAppearTime;
     private Date earliestAppearTime;
 
 
+    @ApiModelProperty("最晚出现时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date latestAppearTime;
 
 
     @ApiModelProperty("预警类型,1 陌生人员预警 2重点人员预警 3常住人员预警 4昼伏夜出人员预警")
     @ApiModelProperty("预警类型,1 陌生人员预警 2重点人员预警 3常住人员预警 4昼伏夜出人员预警")
     private String type;
     private String type;
@@ -94,10 +100,12 @@ public class WarningPersonVO implements Serializable {
 
 
 
 
     @ApiModelProperty("createTime")
     @ApiModelProperty("createTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date createTime;
     private Date createTime;
 
 
 
 
     @ApiModelProperty("modifyTime")
     @ApiModelProperty("modifyTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date modifyTime;
     private Date modifyTime;
 
 
     @ApiModelProperty("人员VO")
     @ApiModelProperty("人员VO")