| 
					
				 | 
			
			
				@@ -4,6 +4,8 @@ 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.iden.common.cache.RedisKeyConstant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.iden.common.cache.RedisUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.iden.common.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.iden.common.enums.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.util.DateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.Resource; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -52,9 +55,16 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IdenWarningRuleResidentService idenWarningRuleResidentService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IdenWarningRuleEveningCommingService idenWarningRuleEveningCommingService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RedisUtil redisUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IdenPersonService idenPersonService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private IdenPersonStrangerService idenPersonStrangerService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Value("${sta.before.days:#{null}}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private String staBeforeDays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 实时处理轨迹、重点人员预警等 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long communityId = idenFaceImage.getCommunityId(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -253,7 +111,7 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         QueryWrapper<IdenWarningPerson> queryWrapper = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         queryWrapper.lambda() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(IdenWarningPerson::getCommunityId,communityId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .eq(IdenWarningPerson::getPersonId,idenFaceImage.getPersonId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(IdenWarningPerson::getUid,idenFaceImage.getUid()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(IdenWarningPerson::getType,WarningTypeEnum.KEYNOTE.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (idenWarningPerson != null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -285,7 +143,7 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //查询此人在该小区最早出现时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             queryWrapper1.last("limit 1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -301,12 +159,13 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     idenWarningPerson.setPersonName(idenPerson.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            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(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -323,13 +182,183 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         idenWarningEvent.setType(WarningTypeEnum.KEYNOTE.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         idenWarningEvent.setPersonId(idenFaceImage.getPersonId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idenWarningEvent.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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天内未被命中人员视为预警对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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.lambda().like(IdenPerson::getType, PersonTypeEnum.COMMUNITY.getValue()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -342,7 +371,7 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             queryWrapper1.lambda().eq(IdenFaceImage::getPersonId, idenPerson.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .orderByDesc(IdenFaceImage::getPhotographTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            queryWrapper1.last("limit 1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            queryWrapper1.last("limit 1"); //查询最后一次拍照 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             IdenFaceImage idenFaceImage = this.idenFaceImageService.getOne(queryWrapper1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -357,6 +386,7 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 idenFaceImage = new IdenFaceImage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 idenFaceImage.setPhotographTime(DateUtils.getBeforeDates(100)); //设定一个假时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //最后一次拍照时间和昨天的相差几天 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             int continueDisappearDays = DateUtils.getDaysGap(idenFaceImage.getPhotographTime(), new Date()) - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //超过7天没出现, 满足预警 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if ( continueDisappearDays > continueDisappearDaysRule ) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -396,11 +426,13 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     idenWarningPerson.setLatestAppearTime(idenFaceImage.getPhotographTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     idenWarningPerson.setType(WarningTypeEnum.RESIDENT.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    idenWarningPerson.setCreateTime(DateUtils.strToDate(DateUtils.getYestodayYyyyMMddDate(),"yyyyMMdd")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    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(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -417,7 +449,7 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 idenWarningEvent.setAppearTime(idenWarningPerson.getLatestAppearTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 idenWarningEvent.setType(WarningTypeEnum.RESIDENT.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                idenWarningEvent.setCreateTime(idenWarningPerson.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                idenWarningEvent.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -446,19 +485,55 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         idenWarningRuleEveningComming.setContinueDays(7); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         idenWarningRuleEveningCommings.add(idenWarningRuleEveningComming); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //查询数据库配置,若设置了值,则替换默认 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         QueryWrapper<IdenWarningRuleEveningComming> queryWrapper3 = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<IdenWarningRuleEveningComming> idenWarningRuleEveningCommingsDb = idenWarningRuleEveningCommingService.list(queryWrapper3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollUtil.isNotEmpty(idenWarningRuleEveningCommingsDb)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             idenWarningRuleEveningCommings = idenWarningRuleEveningCommingsDb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //持续多少天 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int continueDays = idenWarningRuleEveningCommings.get(0).getContinueDays(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //n天前 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String beforeDate = DateUtils.formatToDateStr(DateUtils.getBeforeDates(continueDays + 1),"yyyyMMdd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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.select("distinct data_date dataDate ") ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        queryWrapper.lambda().eq(IdenFaceImage::getUid,idenFaceImage.getUid()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        queryWrapper.lambda().eq(IdenFaceImage::getUid,uid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(IdenFaceImage::getCommunityId,communityId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .ge(IdenFaceImage::getDataDate,beforeDate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .le(IdenFaceImage::getDataDate,yestoday); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -479,7 +554,9 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int count = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<IdenFaceImage> idenFaceImageList = this.idenFaceImageService.list(queryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(idenFaceImageList != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(idenFaceImageList == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             count = idenFaceImageList.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (count >= continueDays) { //连续超过7天,满足预警 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -488,7 +565,7 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             QueryWrapper<IdenWarningPerson> queryWrapper0 = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             queryWrapper0.lambda() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .eq(IdenWarningPerson::getCommunityId,communityId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .eq(IdenWarningPerson::getUid,idenFaceImage.getUid()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(IdenWarningPerson::getUid,uid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .eq(IdenWarningPerson::getType,WarningTypeEnum.EVENING_COMMING.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             IdenWarningPerson idenWarningPerson = this.idenWarningPersonService.getOne(queryWrapper0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (idenWarningPerson != null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -498,36 +575,31 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 this.idenWarningPersonService.updateById(idenWarningPerson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 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){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     IdenPerson idenPerson = this.idenPersonService.getById(idenWarningPerson.getPersonId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if(idenPerson != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //查询此人在该小区最早出现时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 QueryWrapper<IdenFaceImage> queryWrapper1 = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                queryWrapper1.lambda().eq(IdenFaceImage::getCommunityId,communityId).eq(IdenFaceImage::getUid,uid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .orderByAsc(IdenFaceImage::getPhotographTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 queryWrapper1.last("limit 1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 IdenFaceImage idenFaceImage1 = this.idenFaceImageService.getOne(queryWrapper1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -536,18 +608,27 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 idenWarningPerson.setType(WarningTypeEnum.EVENING_COMMING.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                idenWarningPerson.setCreateTime(idenFaceImage.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                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> 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.setImage(idenFaceImage.getImage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             idenWarningEvent.setCommunityId(idenWarningPerson.getCommunityId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -557,15 +638,14 @@ public class WarningService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             idenWarningEvent.setSubdistrict(idenWarningPerson.getSubdistrict()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             idenWarningEvent.setAppearTime(idenFaceImage.getPhotographTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             idenWarningEvent.setType(WarningTypeEnum.EVENING_COMMING.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            idenWarningEvent.setCreateTime(idenFaceImage.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            idenWarningEvent.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.idenWarningEventService.save(idenWarningEvent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //按小区统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void staCommunity() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idenWarningStaService.insertWarningPersonRateSta(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void staCommunity(int staBeforeDayNums) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idenWarningStaService.insertWarningPersonRateSta(staBeforeDayNums); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //是否有连续7天情况 
			 |