WarningMessageJob.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package com.zcxk.scheduled;
  2. import com.zcxk.dao.MeterReadRecordMapper;
  3. import com.zcxk.dao.WarningLogMapper;
  4. import com.zcxk.dao.WarningMessageMapper;
  5. import com.zcxk.dao.WarningRuleMapper;
  6. import com.zcxk.entity.WarningLog;
  7. import com.zcxk.entity.WarningMessage;
  8. import com.zcxk.entity.WarningRule;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.scheduling.annotation.EnableScheduling;
  13. import org.springframework.scheduling.annotation.Scheduled;
  14. import org.springframework.stereotype.Component;
  15. import javax.annotation.Resource;
  16. import java.time.LocalDateTime;
  17. import java.time.format.DateTimeFormatter;
  18. import java.util.Date;
  19. import java.util.List;
  20. @Slf4j
  21. @Component
  22. @Configuration
  23. @EnableScheduling
  24. public class WarningMessageJob {
  25. @Autowired
  26. private MeterReadRecordMapper meterReadRecordMapper;
  27. @Resource
  28. private WarningRuleMapper warningRuleMapper;
  29. @Resource
  30. private WarningLogMapper warningLogMapper;
  31. @Resource
  32. private WarningMessageMapper warningMessageMapper;
  33. /**
  34. * 每天预警消息
  35. */
  36. @Scheduled(cron = "0 0 10 * * ?")
  37. public void warningMessage() {
  38. log.info("begin warningMessage job");
  39. List<WarningRule> list = warningRuleMapper.getList(null);
  40. if (list != null && list.size() > 0) {
  41. for (WarningRule warningRule : list) {
  42. if(warningRule.getWarningType() == 1){
  43. Integer date = Integer.valueOf(LocalDateTime.now().plusDays(-1).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
  44. Boolean b = meterReadRecordMapper.exceedConsumption(warningRule.getDeviceId(),date);
  45. if (b !=null && b) {
  46. WarningLog warningLogNew = new WarningLog();
  47. //warningLogNew.setClientUserId(clientUserDevice.getClientUserId());
  48. warningLogNew.setDeviceId(warningRule.getDeviceId());
  49. warningLogNew.setWarningType(warningRule.getWarningType());
  50. warningLogNew.setFeedbackStatus(0);
  51. warningLogNew.setFeedbackContent("");
  52. warningLogNew.setLastDate(LocalDateTime.now());
  53. warningLogNew.setStatus(1);
  54. warningLogNew.setCreateBy("system");
  55. warningLogNew.setDateCreate(LocalDateTime.now());
  56. warningLogNew.setUpdateBy("system");
  57. warningLogNew.setDateUpdate(LocalDateTime.now());
  58. warningLogMapper.insertSelective(warningLogNew);
  59. WarningMessage warningMessageNew = new WarningMessage();
  60. warningMessageNew.setWarningLogId(warningLogNew.getId());
  61. warningMessageNew.setContent("较上日用水量激增30%");
  62. warningMessageNew.setStatus(1);
  63. warningMessageNew.setCreateBy("system");
  64. warningMessageNew.setDateCreate(new Date());
  65. warningMessageNew.setUpdateBy("system");
  66. warningMessageNew.setDateUpdate(new Date());
  67. warningMessageMapper.insertSelective(warningMessageNew);
  68. }
  69. }
  70. if(warningRule.getWarningType() == 2){
  71. Integer days = meterReadRecordMapper.queryNotWaterConsumptionDays(warningRule.getDeviceId(),warningRule.getDateCreate());
  72. if(days != null && days > 7){
  73. WarningLog warningLog = warningLogMapper.findByDeviceId(warningRule.getDeviceId(),warningRule.getWarningType());
  74. if (warningLog != null) {
  75. long differDays = LocalDateTime.now().toLocalDate().toEpochDay() - warningLog.getLastDate().toLocalDate().toEpochDay();
  76. if(differDays == 1){
  77. //无反馈继续预警
  78. if(warningLog.getFeedbackStatus()==0){
  79. WarningMessage warningMessageNew = new WarningMessage();
  80. warningMessageNew.setWarningLogId(warningLog.getId());
  81. warningMessageNew.setContent("连续无用水量超"+days+"天");
  82. warningMessageNew.setStatus(1);
  83. warningMessageNew.setCreateBy("system");
  84. warningMessageNew.setDateCreate(new Date());
  85. warningMessageNew.setUpdateBy("system");
  86. warningMessageNew.setDateUpdate(new Date());
  87. warningMessageMapper.insertSelective(warningMessageNew);
  88. WarningLog warningLogNew = new WarningLog();
  89. warningLogNew.setId(warningLog.getId());
  90. warningLogNew.setLastDate(LocalDateTime.now());
  91. warningLogNew.setDateUpdate(LocalDateTime.now());
  92. warningLogMapper.updateByPrimaryKeySelective(warningLogNew);
  93. }
  94. }else {
  95. WarningLog warningLogNew = new WarningLog();
  96. //warningLogNew.setClientUserId(clientUserDevice.getClientUserId());
  97. warningLogNew.setDeviceId(warningRule.getDeviceId());
  98. warningLogNew.setWarningType(warningRule.getWarningType());
  99. warningLogNew.setFeedbackStatus(0);
  100. warningLogNew.setFeedbackContent("");
  101. warningLogNew.setLastDate(LocalDateTime.now());
  102. warningLogNew.setStatus(1);
  103. warningLogNew.setCreateBy("system");
  104. warningLogNew.setDateCreate(LocalDateTime.now());
  105. warningLogNew.setUpdateBy("system");
  106. warningLogNew.setDateUpdate(LocalDateTime.now());
  107. warningLogMapper.insertSelective(warningLogNew);
  108. WarningMessage warningMessageNew = new WarningMessage();
  109. warningMessageNew.setWarningLogId(warningLogNew.getId());
  110. warningMessageNew.setContent("连续无用水量超"+days+"天");
  111. warningMessageNew.setStatus(1);
  112. warningMessageNew.setCreateBy("system");
  113. warningMessageNew.setDateCreate(new Date());
  114. warningMessageNew.setUpdateBy("system");
  115. warningMessageNew.setDateUpdate(new Date());
  116. warningMessageMapper.insertSelective(warningMessageNew);
  117. }
  118. }else {
  119. WarningLog warningLogNew = new WarningLog();
  120. //warningLogNew.setClientUserId(clientUserDevice.getClientUserId());
  121. warningLogNew.setDeviceId(warningRule.getDeviceId());
  122. warningLogNew.setWarningType(warningRule.getWarningType());
  123. warningLogNew.setFeedbackStatus(0);
  124. warningLogNew.setFeedbackContent("");
  125. warningLogNew.setLastDate(LocalDateTime.now());
  126. warningLogNew.setStatus(1);
  127. warningLogNew.setCreateBy("system");
  128. warningLogNew.setDateCreate(LocalDateTime.now());
  129. warningLogNew.setUpdateBy("system");
  130. warningLogNew.setDateUpdate(LocalDateTime.now());
  131. warningLogMapper.insertSelective(warningLogNew);
  132. WarningMessage warningMessageNew = new WarningMessage();
  133. warningMessageNew.setWarningLogId(warningLogNew.getId());
  134. warningMessageNew.setContent("连续无用水量超"+days+"天");
  135. warningMessageNew.setStatus(1);
  136. warningMessageNew.setCreateBy("system");
  137. warningMessageNew.setDateCreate(new Date());
  138. warningMessageNew.setUpdateBy("system");
  139. warningMessageNew.setDateUpdate(new Date());
  140. warningMessageMapper.insertSelective(warningMessageNew);
  141. }
  142. }
  143. }
  144. }
  145. }
  146. log.info("end warningMessage job");
  147. }
  148. }