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