| 
					
				 | 
			
			
				@@ -0,0 +1,163 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.zcxk.scheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.zcxk.dao.MeterReadRecordMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.zcxk.dao.WarningLogMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.zcxk.dao.WarningMessageMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.zcxk.dao.WarningRuleMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.zcxk.entity.WarningLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.zcxk.entity.WarningMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.zcxk.entity.WarningRule; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.context.annotation.Configuration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.scheduling.annotation.EnableScheduling; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.scheduling.annotation.Scheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.format.DateTimeFormatter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Configuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@EnableScheduling 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class WarningMessageJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private MeterReadRecordMapper meterReadRecordMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private WarningRuleMapper warningRuleMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private WarningLogMapper warningLogMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private WarningMessageMapper warningMessageMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 每天预警消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Scheduled(cron = "0 0 10 * * ?") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void warningMessage() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("begin warningMessage job"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<WarningRule> list = warningRuleMapper.getList(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (list != null && list.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (WarningRule warningRule : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(warningRule.getWarningType() == 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Integer date = Integer.valueOf(LocalDateTime.now().plusDays(-1).format(DateTimeFormatter.ofPattern("yyyyMMdd"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Boolean b =  meterReadRecordMapper.exceedConsumption(warningRule.getDeviceId(),date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (b !=null && b) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        WarningLog warningLogNew = new WarningLog(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //warningLogNew.setClientUserId(clientUserDevice.getClientUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setDeviceId(warningRule.getDeviceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setWarningType(warningRule.getWarningType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setFeedbackStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setFeedbackContent(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setLastDate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setCreateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setDateCreate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setUpdateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogNew.setDateUpdate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningLogMapper.insertSelective(warningLogNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        WarningMessage warningMessageNew = new WarningMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageNew.setWarningLogId(warningLogNew.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageNew.setContent("较上日用水量激增30%"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageNew.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageNew.setCreateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageNew.setDateCreate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageNew.setUpdateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageNew.setDateUpdate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        warningMessageMapper.insertSelective(warningMessageNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(warningRule.getWarningType() == 2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Integer days =  meterReadRecordMapper.queryNotWaterConsumptionDays(warningRule.getDeviceId(),warningRule.getDateCreate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(days != null && days > 7){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        WarningLog warningLog = warningLogMapper.findByDeviceId(warningRule.getDeviceId(),warningRule.getWarningType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (warningLog != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            long differDays = LocalDateTime.now().toLocalDate().toEpochDay() - warningLog.getLastDate().toLocalDate().toEpochDay(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if(differDays == 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //无反馈继续预警 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if(warningLog.getFeedbackStatus()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    WarningMessage warningMessageNew = new WarningMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageNew.setWarningLogId(warningLog.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageNew.setContent("连续无用水量超"+days+"天"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageNew.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageNew.setCreateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageNew.setDateCreate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageNew.setUpdateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageNew.setDateUpdate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningMessageMapper.insertSelective(warningMessageNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    WarningLog warningLogNew = new WarningLog(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningLogNew.setId(warningLog.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningLogNew.setLastDate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningLogNew.setDateUpdate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    warningLogMapper.updateByPrimaryKeySelective(warningLogNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                WarningLog warningLogNew = new WarningLog(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //warningLogNew.setClientUserId(clientUserDevice.getClientUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setDeviceId(warningRule.getDeviceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setWarningType(warningRule.getWarningType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setFeedbackStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setFeedbackContent(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setLastDate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setCreateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setDateCreate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setUpdateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogNew.setDateUpdate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningLogMapper.insertSelective(warningLogNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                WarningMessage warningMessageNew = new WarningMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageNew.setWarningLogId(warningLogNew.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageNew.setContent("连续无用水量超"+days+"天"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageNew.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageNew.setCreateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageNew.setDateCreate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageNew.setUpdateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageNew.setDateUpdate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                warningMessageMapper.insertSelective(warningMessageNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            WarningLog warningLogNew = new WarningLog(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            //warningLogNew.setClientUserId(clientUserDevice.getClientUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setDeviceId(warningRule.getDeviceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setWarningType(warningRule.getWarningType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setFeedbackStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setFeedbackContent(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setLastDate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setCreateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setDateCreate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setUpdateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogNew.setDateUpdate(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningLogMapper.insertSelective(warningLogNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            WarningMessage warningMessageNew = new WarningMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageNew.setWarningLogId(warningLogNew.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageNew.setContent("连续无用水量超"+days+"天"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageNew.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageNew.setCreateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageNew.setDateCreate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageNew.setUpdateBy("system"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageNew.setDateUpdate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            warningMessageMapper.insertSelective(warningMessageNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("end warningMessage job"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |