|
@@ -4,6 +4,8 @@ package com.iden.bms.service;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
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.cache.RedisKeyConstant;
|
|
|
|
+import com.iden.common.cache.RedisUtil;
|
|
import com.iden.common.entity.*;
|
|
import com.iden.common.entity.*;
|
|
import com.iden.common.enums.*;
|
|
import com.iden.common.enums.*;
|
|
import com.iden.common.exception.BDException;
|
|
import com.iden.common.exception.BDException;
|
|
@@ -12,6 +14,7 @@ import com.iden.common.exception.BDException;
|
|
import com.iden.common.service.*;
|
|
import com.iden.common.service.*;
|
|
import com.iden.common.util.DateUtils;
|
|
import com.iden.common.util.DateUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
@@ -52,9 +55,16 @@ public class WarningService {
|
|
private IdenWarningRuleResidentService idenWarningRuleResidentService;
|
|
private IdenWarningRuleResidentService idenWarningRuleResidentService;
|
|
@Resource
|
|
@Resource
|
|
private IdenWarningRuleEveningCommingService idenWarningRuleEveningCommingService;
|
|
private IdenWarningRuleEveningCommingService idenWarningRuleEveningCommingService;
|
|
-
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private RedisUtil redisUtil;
|
|
@Resource
|
|
@Resource
|
|
private IdenPersonService idenPersonService;
|
|
private IdenPersonService idenPersonService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IdenPersonStrangerService idenPersonStrangerService;
|
|
|
|
+
|
|
|
|
+ @Value("${sta.before.days:#{null}}")
|
|
|
|
+ private String staBeforeDays;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 实时处理轨迹、重点人员预警等
|
|
* 实时处理轨迹、重点人员预警等
|
|
* @return
|
|
* @return
|
|
@@ -91,158 +101,6 @@ public class WarningService {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 每天处理陌生人预警、常驻人员预警、昼伏夜出预警, 凌晨0点10分开始处理昨天数据
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public void handleDayWarning() throws BDException {
|
|
|
|
- //常住人员识别预警
|
|
|
|
- handleResident();
|
|
|
|
-
|
|
|
|
- //查询昨天的人脸图像数据
|
|
|
|
- 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);//陌生人员识别预警
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- handleEveningComming(idenFaceImage);//昼伏夜出人员识别预警
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //按小区统昨天的数据
|
|
|
|
- staCommunity();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //陌生人员识别预警
|
|
|
|
- private void handleStranger(IdenFaceImage idenFaceImage) {
|
|
|
|
- Long communityId = idenFaceImage.getCommunityId();
|
|
|
|
- if (communityId == null) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //查询此人1月内在该小区出现天次
|
|
|
|
- QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
|
|
|
|
- queryWrapper.select("distinct data_date dataDate ") ;
|
|
|
|
- queryWrapper.lambda().eq(IdenFaceImage::getUid,idenFaceImage.getUid()).eq(IdenFaceImage::getCommunityId,communityId)
|
|
|
|
- .orderByAsc(IdenFaceImage::getDataDate);
|
|
|
|
- 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 = 0;
|
|
|
|
- //1月内7天出现情况
|
|
|
|
- List<IdenFaceImage> listDataDate = this.idenFaceImageService.list(queryWrapper);
|
|
|
|
- if(listDataDate != null){
|
|
|
|
- strangerDayFrequency = listDataDate.size();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- QueryWrapper<IdenWarningRuleStranger> queryWrapper3 = new QueryWrapper<>();
|
|
|
|
- IdenWarningRuleStranger idenWarningRuleStranger = idenWarningRuleStrangerService.getOne(queryWrapper3);
|
|
|
|
- int strangerFrequencyRule = 15;
|
|
|
|
- int strangerDays = 7;
|
|
|
|
- if (idenWarningRuleStranger != null){
|
|
|
|
- strangerFrequencyRule = idenWarningRuleStranger.getStrangerFrequency();
|
|
|
|
- strangerDays = idenWarningRuleStranger.getStrangerDays();
|
|
|
|
- }
|
|
|
|
- String isContinue = getIsContinue(listDataDate,strangerDays);
|
|
|
|
-
|
|
|
|
- boolean isWarning = false;
|
|
|
|
- String strangerType = null;
|
|
|
|
-
|
|
|
|
- //此人1月出现频次少于15次及7内天每天未连续出现,视为陌生人
|
|
|
|
- if(strangerDayFrequency < strangerFrequencyRule && IsContinueEnum.NO.getValue().equals(isContinue)) {
|
|
|
|
- isWarning = true;
|
|
|
|
- strangerType = StrangerTypeEnum.STRANGER.getValue();
|
|
|
|
- //此人出现频次1月内大于15天次或连续7天每天都出现,标注为疑似未登记住户
|
|
|
|
- } 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.setHandleStatus(HandleWarningStatusEnum.NO_HANDLE.getValue());
|
|
|
|
- idenWarningPerson.setModifyTime(new Date());
|
|
|
|
- this.idenWarningPersonService.updateById(idenWarningPerson);
|
|
|
|
- } else {
|
|
|
|
- idenWarningPerson = new IdenWarningPerson();
|
|
|
|
- idenWarningPerson.setStrangerType(strangerType);
|
|
|
|
- idenWarningPerson.setUid(idenFaceImage.getUid());
|
|
|
|
- idenWarningPerson.setPersonId(idenFaceImage.getPersonId());
|
|
|
|
- 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());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- idenWarningPerson.setType(WarningTypeEnum.STRANGER.getValue());
|
|
|
|
- idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
|
|
|
|
- this.idenWarningPersonService.save(idenWarningPerson);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
|
|
- BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
|
|
- idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
|
|
-
|
|
|
|
- IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
|
|
- idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
|
|
|
|
- idenWarningEvent.setUid(idenWarningPerson.getUid());
|
|
|
|
- idenWarningEvent.setPersonId(idenWarningPerson.getPersonId());
|
|
|
|
- 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);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
//重点人员识别预警
|
|
//重点人员识别预警
|
|
private void handleKeynote(IdenFaceImage idenFaceImage){
|
|
private void handleKeynote(IdenFaceImage idenFaceImage){
|
|
Long communityId = idenFaceImage.getCommunityId();
|
|
Long communityId = idenFaceImage.getCommunityId();
|
|
@@ -253,7 +111,7 @@ public class WarningService {
|
|
QueryWrapper<IdenWarningPerson> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<IdenWarningPerson> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda()
|
|
queryWrapper.lambda()
|
|
.eq(IdenWarningPerson::getCommunityId,communityId)
|
|
.eq(IdenWarningPerson::getCommunityId,communityId)
|
|
- .eq(IdenWarningPerson::getPersonId,idenFaceImage.getPersonId())
|
|
|
|
|
|
+ .eq(IdenWarningPerson::getUid,idenFaceImage.getUid())
|
|
.eq(IdenWarningPerson::getType,WarningTypeEnum.KEYNOTE.getValue());
|
|
.eq(IdenWarningPerson::getType,WarningTypeEnum.KEYNOTE.getValue());
|
|
IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper);
|
|
IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper);
|
|
if (idenWarningPerson != null) {
|
|
if (idenWarningPerson != null) {
|
|
@@ -285,7 +143,7 @@ public class WarningService {
|
|
|
|
|
|
//查询此人在该小区最早出现时间
|
|
//查询此人在该小区最早出现时间
|
|
QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
- queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId)
|
|
|
|
|
|
+ queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId).eq(IdenFaceImage::getUid,idenFaceImage.getUid())
|
|
.orderByAsc(IdenFaceImage::getPhotographTime);
|
|
.orderByAsc(IdenFaceImage::getPhotographTime);
|
|
queryWrapper1.last("limit 1");
|
|
queryWrapper1.last("limit 1");
|
|
IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
|
|
IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
|
|
@@ -301,12 +159,13 @@ public class WarningService {
|
|
idenWarningPerson.setPersonName(idenPerson.getName());
|
|
idenWarningPerson.setPersonName(idenPerson.getName());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
|
|
|
|
|
|
+ idenWarningPerson.setCreateTime(new Date());
|
|
this.idenWarningPersonService.save(idenWarningPerson);
|
|
this.idenWarningPersonService.save(idenWarningPerson);
|
|
|
|
|
|
}
|
|
}
|
|
IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
|
|
+ idenWarningPersonHis.setCreateTime(new Date());
|
|
idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
|
|
|
|
IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
@@ -323,13 +182,183 @@ public class WarningService {
|
|
idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
|
|
idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
|
|
idenWarningEvent.setType(WarningTypeEnum.KEYNOTE.getValue());
|
|
idenWarningEvent.setType(WarningTypeEnum.KEYNOTE.getValue());
|
|
idenWarningEvent.setPersonId(idenFaceImage.getPersonId());
|
|
idenWarningEvent.setPersonId(idenFaceImage.getPersonId());
|
|
- idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
|
|
|
|
|
|
+ idenWarningEvent.setCreateTime(new Date());
|
|
this.idenWarningEventService.save(idenWarningEvent);
|
|
this.idenWarningEventService.save(idenWarningEvent);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 5分钟处理一次,处理前一个月的、按天的陌生人预警、常驻人员预警、昼伏夜出预警数据
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public void handleDayWarning() throws BDException {
|
|
|
|
+ int staBeforeDayNums = Integer.parseInt(staBeforeDays);
|
|
|
|
+
|
|
|
|
+ handleResident();//常住人员识别预警
|
|
|
|
+ handleStranger();//陌生人员识别预警
|
|
|
|
+ handleEveningComming();//昼伏夜出人员识别预警
|
|
|
|
+
|
|
|
|
+ staCommunity(staBeforeDayNums);//按小区统n天前的数据
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //陌生人员识别预警
|
|
|
|
+ private void handleStranger() {
|
|
|
|
+ //先看今天是否运行过程序,若运行过,则返回
|
|
|
|
+ String strangerDate = (String)redisUtil.hget(RedisKeyConstant.HANDLE_WARNING_DATE,"stranger");
|
|
|
|
+ if(StringUtils.isNotEmpty(strangerDate) && strangerDate.equals(DateUtils.getCurrYyyyMMddDate())) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ redisUtil.hset(RedisKeyConstant.HANDLE_WARNING_DATE,"stranger",DateUtils.getCurrYyyyMMddDate());
|
|
|
|
+
|
|
|
|
+ List<IdenCommunity> idenCommunityList = this.idenCommunityService.list();
|
|
|
|
+ if(CollUtil.isEmpty(idenCommunityList)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ for (IdenCommunity idenCommunity : idenCommunityList) {
|
|
|
|
+ Long communityId = idenCommunity.getId();
|
|
|
|
+ //遍历所有陌生人
|
|
|
|
+ List<IdenPersonStranger> idenPersonStrangerList = this.idenPersonStrangerService.list();
|
|
|
|
+ if(CollUtil.isEmpty(idenPersonStrangerList)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (IdenPersonStranger idenPersonStranger : idenPersonStrangerList) {
|
|
|
|
+
|
|
|
|
+ //查询此人1月内在该小区出现天次
|
|
|
|
+ QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ queryWrapper.select("distinct data_date dataDate ") ;
|
|
|
|
+ queryWrapper.lambda().eq(IdenFaceImage::getUid,idenPersonStranger.getUid()).eq(IdenFaceImage::getCommunityId,communityId)
|
|
|
|
+ .orderByAsc(IdenFaceImage::getDataDate);
|
|
|
|
+ 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 = 0;
|
|
|
|
+ //1月内7天出现情况
|
|
|
|
+ List<IdenFaceImage> listDataDate = this.idenFaceImageService.list(queryWrapper);
|
|
|
|
+ if(listDataDate == null){
|
|
|
|
+ continue;
|
|
|
|
+ } else {
|
|
|
|
+ strangerDayFrequency = listDataDate.size();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ QueryWrapper<IdenWarningRuleStranger> queryWrapper3 = new QueryWrapper<>();
|
|
|
|
+ IdenWarningRuleStranger idenWarningRuleStranger = idenWarningRuleStrangerService.getOne(queryWrapper3);
|
|
|
|
+ int strangerFrequencyRule = 15;
|
|
|
|
+ int strangerDays = 7;
|
|
|
|
+ if (idenWarningRuleStranger != null){
|
|
|
|
+ strangerFrequencyRule = idenWarningRuleStranger.getStrangerFrequency();
|
|
|
|
+ strangerDays = idenWarningRuleStranger.getStrangerDays();
|
|
|
|
+ }
|
|
|
|
+ String isContinue = getIsContinue(listDataDate,strangerDays);
|
|
|
|
+
|
|
|
|
+ boolean isWarning = false;
|
|
|
|
+ String strangerType = null;
|
|
|
|
+
|
|
|
|
+ //此人1月出现频次少于15次及7内天每天未连续出现,视为陌生人
|
|
|
|
+ if(strangerDayFrequency < strangerFrequencyRule && IsContinueEnum.NO.getValue().equals(isContinue)) {
|
|
|
|
+ isWarning = true;
|
|
|
|
+ strangerType = StrangerTypeEnum.STRANGER.getValue();
|
|
|
|
+ //此人出现频次1月内大于15天次或连续7天每天都出现,标注为疑似未登记住户
|
|
|
|
+ } 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,idenPersonStranger.getUid())
|
|
|
|
+ .eq(IdenWarningPerson::getType,WarningTypeEnum.STRANGER.getValue());
|
|
|
|
+ IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper0);
|
|
|
|
+
|
|
|
|
+ if (idenWarningPerson != null) {
|
|
|
|
+ idenWarningPerson.setAppearFrequency(strangerDayFrequency);
|
|
|
|
+ idenWarningPerson.setStrangerType(strangerType);
|
|
|
|
+ idenWarningPerson.setHandleStatus(HandleWarningStatusEnum.NO_HANDLE.getValue());
|
|
|
|
+ idenWarningPerson.setModifyTime(new Date());
|
|
|
|
+ this.idenWarningPersonService.updateById(idenWarningPerson);
|
|
|
|
+ } else {
|
|
|
|
+ idenWarningPerson = new IdenWarningPerson();
|
|
|
|
+ idenWarningPerson.setType(WarningTypeEnum.STRANGER.getValue());
|
|
|
|
+ idenWarningPerson.setStrangerType(strangerType);
|
|
|
|
+ idenWarningPerson.setUid(idenPersonStranger.getUid());
|
|
|
|
+ idenWarningPerson.setDataDate(DateUtils.getYestodayYyyyMMddDate());
|
|
|
|
+ idenWarningPerson.setImage(idenPersonStranger.getImage());
|
|
|
|
+ idenWarningPerson.setFeatPtr(idenPersonStranger.getFeatPtr());
|
|
|
|
+
|
|
|
|
+ idenWarningPerson.setCommunityId(communityId);
|
|
|
|
+ idenWarningPerson.setCommunityCode(idenCommunity.getCode());
|
|
|
|
+ idenWarningPerson.setCommunityName(idenCommunity.getName());
|
|
|
|
+ idenWarningPerson.setSubdistrict(idenCommunity.getSubdistrict());
|
|
|
|
+ idenWarningPerson.setDistrict(idenCommunity.getDistrict());
|
|
|
|
+
|
|
|
|
+ idenWarningPerson.setAppearFrequency(strangerDayFrequency);
|
|
|
|
+ idenWarningPerson.setIsContinue(isContinue);
|
|
|
|
+
|
|
|
|
+ //查询此人在该小区最早出现时间
|
|
|
|
+ QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
|
|
+ queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId).eq(IdenFaceImage::getUid,idenPersonStranger.getUid())
|
|
|
|
+ .orderByAsc(IdenFaceImage::getPhotographTime);
|
|
|
|
+ queryWrapper1.last("limit 1");
|
|
|
|
+
|
|
|
|
+ IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
|
|
|
|
+ if(idenFaceImage1 != null){
|
|
|
|
+ idenWarningPerson.setEarliestAppearTime(idenFaceImage1.getPhotographTime());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ idenWarningPerson.setCreateTime(new Date());
|
|
|
|
+ this.idenWarningPersonService.save(idenWarningPerson);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
|
|
+ BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
|
|
+ idenWarningPersonHis.setCreateTime(new Date());
|
|
|
|
+ idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
|
|
+
|
|
|
|
+ IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
|
|
+ idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
|
|
|
|
+ idenWarningEvent.setUid(idenWarningPerson.getUid());
|
|
|
|
+ idenWarningEvent.setPersonId(idenWarningPerson.getPersonId());
|
|
|
|
+
|
|
|
|
+ //查询此人在该小区最晚出现时间
|
|
|
|
+ QueryWrapper<IdenFaceImage> queryWrapper2 = new QueryWrapper<>();
|
|
|
|
+ queryWrapper2.lambda().eq(IdenFaceImage::getCommunityId,communityId).eq(IdenFaceImage::getUid,idenPersonStranger.getUid())
|
|
|
|
+ .orderByDesc(IdenFaceImage::getPhotographTime);
|
|
|
|
+ queryWrapper2.last("limit 1");
|
|
|
|
+ IdenFaceImage idenFaceImage2 = this.idenFaceImageService.getOne(queryWrapper2);
|
|
|
|
+ if(idenFaceImage2 != null){
|
|
|
|
+ idenWarningEvent.setDataTime(idenFaceImage2.getPhotographTime());
|
|
|
|
+ idenWarningEvent.setImage(idenFaceImage2.getImage());
|
|
|
|
+ idenWarningEvent.setAppearTime(idenFaceImage2.getPhotographTime());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
|
|
|
|
+ idenWarningEvent.setCommunityCode(idenWarningPerson.getCommunityCode());
|
|
|
|
+ idenWarningEvent.setCommunityName(idenWarningPerson.getCommunityName());
|
|
|
|
+ idenWarningEvent.setDistrict(idenWarningPerson.getDistrict());
|
|
|
|
+ idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
|
|
|
|
+ idenWarningEvent.setType(WarningTypeEnum.STRANGER.getValue());
|
|
|
|
+ idenWarningEvent.setCreateTime(new Date());
|
|
|
|
+ this.idenWarningEventService.save(idenWarningEvent);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
//常住人员识别预警,小区人脸库内7天内未被命中人员或标记为独居老人或老人带小孩的7天内未被命中人员视为预警对象
|
|
//常住人员识别预警,小区人脸库内7天内未被命中人员或标记为独居老人或老人带小孩的7天内未被命中人员视为预警对象
|
|
private void handleResident() {
|
|
private void handleResident() {
|
|
|
|
+ //先看今天是否运行过程序,若运行过,则返回
|
|
|
|
+ String residentDate = (String)redisUtil.hget(RedisKeyConstant.HANDLE_WARNING_DATE,"resident");
|
|
|
|
+ if(StringUtils.isNotEmpty(residentDate) && residentDate.equals(DateUtils.getCurrYyyyMMddDate())) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ redisUtil.hset(RedisKeyConstant.HANDLE_WARNING_DATE,"resident",DateUtils.getCurrYyyyMMddDate());
|
|
|
|
+
|
|
//查询全部小区人员
|
|
//查询全部小区人员
|
|
QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.lambda().like(IdenPerson::getType, PersonTypeEnum.COMMUNITY.getValue());
|
|
queryWrapper.lambda().like(IdenPerson::getType, PersonTypeEnum.COMMUNITY.getValue());
|
|
@@ -342,7 +371,7 @@ public class WarningService {
|
|
QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
queryWrapper1.lambda().eq(IdenFaceImage::getPersonId, idenPerson.getId())
|
|
queryWrapper1.lambda().eq(IdenFaceImage::getPersonId, idenPerson.getId())
|
|
.orderByDesc(IdenFaceImage::getPhotographTime);
|
|
.orderByDesc(IdenFaceImage::getPhotographTime);
|
|
- queryWrapper1.last("limit 1");
|
|
|
|
|
|
+ queryWrapper1.last("limit 1"); //查询最后一次拍照
|
|
|
|
|
|
IdenFaceImage idenFaceImage = this.idenFaceImageService.getOne(queryWrapper1);
|
|
IdenFaceImage idenFaceImage = this.idenFaceImageService.getOne(queryWrapper1);
|
|
|
|
|
|
@@ -357,6 +386,7 @@ public class WarningService {
|
|
idenFaceImage = new IdenFaceImage();
|
|
idenFaceImage = new IdenFaceImage();
|
|
idenFaceImage.setPhotographTime(DateUtils.getBeforeDates(100)); //设定一个假时间
|
|
idenFaceImage.setPhotographTime(DateUtils.getBeforeDates(100)); //设定一个假时间
|
|
}
|
|
}
|
|
|
|
+ //最后一次拍照时间和昨天的相差几天
|
|
int continueDisappearDays = DateUtils.getDaysGap(idenFaceImage.getPhotographTime(), new Date()) - 1;
|
|
int continueDisappearDays = DateUtils.getDaysGap(idenFaceImage.getPhotographTime(), new Date()) - 1;
|
|
//超过7天没出现, 满足预警
|
|
//超过7天没出现, 满足预警
|
|
if ( continueDisappearDays > continueDisappearDaysRule ) {
|
|
if ( continueDisappearDays > continueDisappearDaysRule ) {
|
|
@@ -396,11 +426,13 @@ public class WarningService {
|
|
idenWarningPerson.setLatestAppearTime(idenFaceImage.getPhotographTime());
|
|
idenWarningPerson.setLatestAppearTime(idenFaceImage.getPhotographTime());
|
|
|
|
|
|
idenWarningPerson.setType(WarningTypeEnum.RESIDENT.getValue());
|
|
idenWarningPerson.setType(WarningTypeEnum.RESIDENT.getValue());
|
|
- idenWarningPerson.setCreateTime(DateUtils.strToDate(DateUtils.getYestodayYyyyMMddDate(),"yyyyMMdd"));
|
|
|
|
|
|
+ idenWarningPerson.setCreateTime(new Date());
|
|
this.idenWarningPersonService.save(idenWarningPerson);
|
|
this.idenWarningPersonService.save(idenWarningPerson);
|
|
}
|
|
}
|
|
|
|
+
|
|
IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
|
|
+ idenWarningPersonHis.setCreateTime(new Date());
|
|
idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
|
|
|
|
IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
@@ -417,7 +449,7 @@ public class WarningService {
|
|
idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
|
|
idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
|
|
idenWarningEvent.setAppearTime(idenWarningPerson.getLatestAppearTime());
|
|
idenWarningEvent.setAppearTime(idenWarningPerson.getLatestAppearTime());
|
|
idenWarningEvent.setType(WarningTypeEnum.RESIDENT.getValue());
|
|
idenWarningEvent.setType(WarningTypeEnum.RESIDENT.getValue());
|
|
- idenWarningEvent.setCreateTime(idenWarningPerson.getCreateTime());
|
|
|
|
|
|
+ idenWarningEvent.setCreateTime(new Date());
|
|
this.idenWarningEventService.save(idenWarningEvent);
|
|
this.idenWarningEventService.save(idenWarningEvent);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -425,9 +457,16 @@ public class WarningService {
|
|
}
|
|
}
|
|
|
|
|
|
//昼伏夜出人员识别预警
|
|
//昼伏夜出人员识别预警
|
|
- private void handleEveningComming(IdenFaceImage idenFaceImage) {
|
|
|
|
- Long communityId = idenFaceImage.getCommunityId();
|
|
|
|
- if (communityId == null) {
|
|
|
|
|
|
+ private void handleEveningComming() {
|
|
|
|
+ //先看今天是否运行过程序,若运行过,则返回
|
|
|
|
+ String eveningCommingDate = (String)redisUtil.hget(RedisKeyConstant.HANDLE_WARNING_DATE,"eveningComming");
|
|
|
|
+ if(StringUtils.isNotEmpty(eveningCommingDate) && eveningCommingDate.equals(DateUtils.getCurrYyyyMMddDate())) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ redisUtil.hset(RedisKeyConstant.HANDLE_WARNING_DATE,"eveningComming",DateUtils.getCurrYyyyMMddDate());
|
|
|
|
+
|
|
|
|
+ List<IdenCommunity> idenCommunityList = this.idenCommunityService.list();
|
|
|
|
+ if(CollUtil.isEmpty(idenCommunityList)){
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -446,19 +485,55 @@ public class WarningService {
|
|
idenWarningRuleEveningComming.setContinueDays(7);
|
|
idenWarningRuleEveningComming.setContinueDays(7);
|
|
idenWarningRuleEveningCommings.add(idenWarningRuleEveningComming);
|
|
idenWarningRuleEveningCommings.add(idenWarningRuleEveningComming);
|
|
|
|
|
|
|
|
+ //查询数据库配置,若设置了值,则替换默认
|
|
QueryWrapper<IdenWarningRuleEveningComming> queryWrapper3 = new QueryWrapper<>();
|
|
QueryWrapper<IdenWarningRuleEveningComming> queryWrapper3 = new QueryWrapper<>();
|
|
List<IdenWarningRuleEveningComming> idenWarningRuleEveningCommingsDb = idenWarningRuleEveningCommingService.list(queryWrapper3);
|
|
List<IdenWarningRuleEveningComming> idenWarningRuleEveningCommingsDb = idenWarningRuleEveningCommingService.list(queryWrapper3);
|
|
if (CollUtil.isNotEmpty(idenWarningRuleEveningCommingsDb)) {
|
|
if (CollUtil.isNotEmpty(idenWarningRuleEveningCommingsDb)) {
|
|
idenWarningRuleEveningCommings = idenWarningRuleEveningCommingsDb;
|
|
idenWarningRuleEveningCommings = idenWarningRuleEveningCommingsDb;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //持续多少天
|
|
int continueDays = idenWarningRuleEveningCommings.get(0).getContinueDays();
|
|
int continueDays = idenWarningRuleEveningCommings.get(0).getContinueDays();
|
|
|
|
+ //n天前
|
|
String beforeDate = DateUtils.formatToDateStr(DateUtils.getBeforeDates(continueDays + 1),"yyyyMMdd");
|
|
String beforeDate = DateUtils.formatToDateStr(DateUtils.getBeforeDates(continueDays + 1),"yyyyMMdd");
|
|
|
|
+
|
|
String yestoday = DateUtils.getYestodayYyyyMMddDate();
|
|
String yestoday = DateUtils.getYestodayYyyyMMddDate();
|
|
|
|
+
|
|
|
|
+ for (IdenCommunity idenCommunity : idenCommunityList) {
|
|
|
|
+
|
|
|
|
+ //查询全部小区人员
|
|
|
|
+ QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ queryWrapper.lambda().like(IdenPerson::getType, PersonTypeEnum.COMMUNITY.getValue());
|
|
|
|
+ List<IdenPerson> listPerson = this.idenPersonService.list(queryWrapper);
|
|
|
|
+ if(CollUtil.isNotEmpty(listPerson)){
|
|
|
|
+ //遍历小区人员
|
|
|
|
+ for (IdenPerson idenPerson :listPerson ) {
|
|
|
|
+ handleEveningCommingSub(continueDays,beforeDate,yestoday,idenPerson.getUid(),
|
|
|
|
+ idenCommunity,idenWarningRuleEveningCommings,idenPerson.getId(),idenPerson.getImage(),idenPerson.getFeatPtr());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //遍历所有陌生人
|
|
|
|
+ List<IdenPersonStranger> idenPersonStrangerList = this.idenPersonStrangerService.list();
|
|
|
|
+ if(CollUtil.isNotEmpty(idenPersonStrangerList)){
|
|
|
|
+ for (IdenPersonStranger idenPersonStranger : idenPersonStrangerList ) {
|
|
|
|
+ handleEveningCommingSub(continueDays,beforeDate,yestoday,idenPersonStranger.getUid(),
|
|
|
|
+ idenCommunity,idenWarningRuleEveningCommings,null,idenPersonStranger.getImage(),idenPersonStranger.getFeatPtr());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void handleEveningCommingSub(int continueDays,String beforeDate,String yestoday,Long uid,
|
|
|
|
+ IdenCommunity idenCommunity, List<IdenWarningRuleEveningComming> idenWarningRuleEveningCommings,
|
|
|
|
+ Long personId,String image,String featPtr){
|
|
|
|
+ Long communityId = idenCommunity.getId();
|
|
//查询此人长期晚上某时段出现(时间期间可设)且白天未出现,视为昼伏夜出人员,进行预警
|
|
//查询此人长期晚上某时段出现(时间期间可设)且白天未出现,视为昼伏夜出人员,进行预警
|
|
QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<IdenFaceImage> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.select("distinct data_date dataDate ") ;
|
|
queryWrapper.select("distinct data_date dataDate ") ;
|
|
- queryWrapper.lambda().eq(IdenFaceImage::getUid,idenFaceImage.getUid())
|
|
|
|
|
|
+ queryWrapper.lambda().eq(IdenFaceImage::getUid,uid)
|
|
.eq(IdenFaceImage::getCommunityId,communityId)
|
|
.eq(IdenFaceImage::getCommunityId,communityId)
|
|
.ge(IdenFaceImage::getDataDate,beforeDate)
|
|
.ge(IdenFaceImage::getDataDate,beforeDate)
|
|
.le(IdenFaceImage::getDataDate,yestoday);
|
|
.le(IdenFaceImage::getDataDate,yestoday);
|
|
@@ -479,7 +554,9 @@ public class WarningService {
|
|
|
|
|
|
int count = 0;
|
|
int count = 0;
|
|
List<IdenFaceImage> idenFaceImageList = this.idenFaceImageService.list(queryWrapper);
|
|
List<IdenFaceImage> idenFaceImageList = this.idenFaceImageService.list(queryWrapper);
|
|
- if(idenFaceImageList != null){
|
|
|
|
|
|
+ if(idenFaceImageList == null){
|
|
|
|
+ return;
|
|
|
|
+ } else {
|
|
count = idenFaceImageList.size();
|
|
count = idenFaceImageList.size();
|
|
}
|
|
}
|
|
if (count >= continueDays) { //连续超过7天,满足预警
|
|
if (count >= continueDays) { //连续超过7天,满足预警
|
|
@@ -488,7 +565,7 @@ public class WarningService {
|
|
QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
|
|
QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>();
|
|
queryWrapper0.lambda()
|
|
queryWrapper0.lambda()
|
|
.eq(IdenWarningPerson::getCommunityId,communityId)
|
|
.eq(IdenWarningPerson::getCommunityId,communityId)
|
|
- .eq(IdenWarningPerson::getUid,idenFaceImage.getUid())
|
|
|
|
|
|
+ .eq(IdenWarningPerson::getUid,uid)
|
|
.eq(IdenWarningPerson::getType,WarningTypeEnum.EVENING_COMMING.getValue());
|
|
.eq(IdenWarningPerson::getType,WarningTypeEnum.EVENING_COMMING.getValue());
|
|
IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper0);
|
|
IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper0);
|
|
if (idenWarningPerson != null) {
|
|
if (idenWarningPerson != null) {
|
|
@@ -498,36 +575,31 @@ public class WarningService {
|
|
this.idenWarningPersonService.updateById(idenWarningPerson);
|
|
this.idenWarningPersonService.updateById(idenWarningPerson);
|
|
|
|
|
|
} else {
|
|
} else {
|
|
- idenWarningPerson = new IdenWarningPerson();
|
|
|
|
- idenWarningPerson.setUid(idenFaceImage.getUid());
|
|
|
|
- idenWarningPerson.setPersonId(idenFaceImage.getPersonId());
|
|
|
|
|
|
+ idenWarningPerson = new IdenWarningPerson();
|
|
|
|
+ idenWarningPerson.setUid(uid);
|
|
|
|
+ idenWarningPerson.setPersonId(personId);
|
|
if(idenWarningPerson.getPersonId() != null){
|
|
if(idenWarningPerson.getPersonId() != null){
|
|
IdenPerson idenPerson = this.idenPersonService.getById(idenWarningPerson.getPersonId());
|
|
IdenPerson idenPerson = this.idenPersonService.getById(idenWarningPerson.getPersonId());
|
|
if(idenPerson != null){
|
|
if(idenPerson != null){
|
|
idenWarningPerson.setPersonName(idenPerson.getName());
|
|
idenWarningPerson.setPersonName(idenPerson.getName());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- 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());
|
|
|
|
- }
|
|
|
|
|
|
+ idenWarningPerson.setDataDate(DateUtils.getYestodayYyyyMMddDate());
|
|
|
|
+ idenWarningPerson.setImage(image);
|
|
|
|
+ idenWarningPerson.setFeatPtr(featPtr);
|
|
|
|
+
|
|
|
|
+ idenWarningPerson.setDistrict(idenCommunity.getDistrict());
|
|
|
|
+ idenWarningPerson.setSubdistrict(idenCommunity.getSubdistrict());
|
|
|
|
+
|
|
|
|
+ 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(count);
|
|
idenWarningPerson.setAppearFrequency(count);
|
|
|
|
|
|
//查询此人在该小区最早出现时间
|
|
//查询此人在该小区最早出现时间
|
|
QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
- queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId)
|
|
|
|
|
|
+ queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId).eq(IdenFaceImage::getUid,uid)
|
|
.orderByAsc(IdenFaceImage::getPhotographTime);
|
|
.orderByAsc(IdenFaceImage::getPhotographTime);
|
|
queryWrapper1.last("limit 1");
|
|
queryWrapper1.last("limit 1");
|
|
IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
|
|
IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1);
|
|
@@ -536,18 +608,27 @@ public class WarningService {
|
|
}
|
|
}
|
|
|
|
|
|
idenWarningPerson.setType(WarningTypeEnum.EVENING_COMMING.getValue());
|
|
idenWarningPerson.setType(WarningTypeEnum.EVENING_COMMING.getValue());
|
|
- idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime());
|
|
|
|
|
|
+ idenWarningPerson.setCreateTime(new Date());
|
|
this.idenWarningPersonService.save(idenWarningPerson);
|
|
this.idenWarningPersonService.save(idenWarningPerson);
|
|
|
|
|
|
}
|
|
}
|
|
IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
IdenWarningPersonHis idenWarningPersonHis = new IdenWarningPersonHis();
|
|
BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
BeanUtil.copyProperties(idenWarningPerson,idenWarningPersonHis,"id");
|
|
|
|
+ idenWarningPersonHis.setCreateTime(new Date());
|
|
idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
idenWarningPersonHisService.save(idenWarningPersonHis);
|
|
|
|
|
|
IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
IdenWarningEvent idenWarningEvent = new IdenWarningEvent();
|
|
idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
|
|
idenWarningEvent.setWarningPersonId(idenWarningPerson.getId());
|
|
idenWarningEvent.setUid(idenWarningPerson.getUid());
|
|
idenWarningEvent.setUid(idenWarningPerson.getUid());
|
|
idenWarningEvent.setPersonId(idenWarningPerson.getPersonId());
|
|
idenWarningEvent.setPersonId(idenWarningPerson.getPersonId());
|
|
|
|
+
|
|
|
|
+ QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>();
|
|
|
|
+ queryWrapper1.lambda().eq(IdenFaceImage::getUid, uid).eq(IdenFaceImage::getCommunityId,communityId)
|
|
|
|
+ .orderByDesc(IdenFaceImage::getPhotographTime);
|
|
|
|
+ queryWrapper1.last("limit 1"); //查询最后一次拍照
|
|
|
|
+
|
|
|
|
+ IdenFaceImage idenFaceImage = this.idenFaceImageService.getOne(queryWrapper1);
|
|
|
|
+
|
|
idenWarningEvent.setDataTime(idenFaceImage.getPhotographTime());
|
|
idenWarningEvent.setDataTime(idenFaceImage.getPhotographTime());
|
|
idenWarningEvent.setImage(idenFaceImage.getImage());
|
|
idenWarningEvent.setImage(idenFaceImage.getImage());
|
|
idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
|
|
idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId());
|
|
@@ -557,15 +638,14 @@ public class WarningService {
|
|
idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
|
|
idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict());
|
|
idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
|
|
idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime());
|
|
idenWarningEvent.setType(WarningTypeEnum.EVENING_COMMING.getValue());
|
|
idenWarningEvent.setType(WarningTypeEnum.EVENING_COMMING.getValue());
|
|
- idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime());
|
|
|
|
|
|
+ idenWarningEvent.setCreateTime(new Date());
|
|
this.idenWarningEventService.save(idenWarningEvent);
|
|
this.idenWarningEventService.save(idenWarningEvent);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
//按小区统计
|
|
//按小区统计
|
|
- private void staCommunity() {
|
|
|
|
- idenWarningStaService.insertWarningPersonRateSta();
|
|
|
|
|
|
+ private void staCommunity(int staBeforeDayNums) {
|
|
|
|
+ idenWarningStaService.insertWarningPersonRateSta(staBeforeDayNums);
|
|
}
|
|
}
|
|
|
|
|
|
//是否有连续7天情况
|
|
//是否有连续7天情况
|