123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- 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");
- }
- }
|