ProEnergyData.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package vip.xiaonuo.Timer;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.transaction.annotation.Transactional;
  8. import vip.xiaonuo.common.timer.CommonTimerTaskRunner;
  9. import vip.xiaonuo.modular.ai.taskInspection.entity.TaskInspection;
  10. import vip.xiaonuo.modular.ai.taskInspection.mapper.TaskInspectionMapper;
  11. import vip.xiaonuo.modular.ai.warningRemind.entity.WarningRemind;
  12. import vip.xiaonuo.modular.ai.warningRemind.mapper.WarningRemindMapper;
  13. import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
  14. import vip.xiaonuo.modular.base.baseConfig.mapper.BaseConfigMapper;
  15. import vip.xiaonuo.modular.energy.energyDevice.entity.EnergyDevice;
  16. import vip.xiaonuo.modular.energy.energyDevice.mapper.EnergyDeviceMapper;
  17. import vip.xiaonuo.modular.energy.energyElectricity.entity.EnergyElectricity;
  18. import vip.xiaonuo.modular.energy.energyElectricity.mapper.EnergyElectricityMapper;
  19. import vip.xiaonuo.modular.energy.energyThreshold.entity.EnergyThreshold;
  20. import vip.xiaonuo.modular.energy.energyThreshold.mapper.EnergyThresholdMapper;
  21. import vip.xiaonuo.modular.energy.energyWater.entity.EnergyWater;
  22. import vip.xiaonuo.modular.energy.energyWater.mapper.EnergyWaterMapper;
  23. import vip.xiaonuo.modular.env.envdevice.entity.EnvDevice;
  24. import vip.xiaonuo.modular.warning.warningInfo.entity.WarningInfo;
  25. import vip.xiaonuo.modular.warning.warningInfo.mapper.WarningInfoMapper;
  26. import vip.xiaonuo.modular.warning.warningManager.entity.WarningManager;
  27. import vip.xiaonuo.modular.warning.warningManager.mapper.WarningManagerMapper;
  28. import java.math.BigDecimal;
  29. import java.util.Date;
  30. import java.util.List;
  31. @Slf4j
  32. @Component
  33. public class ProEnergyData implements CommonTimerTaskRunner {
  34. @Autowired
  35. private EnergyDeviceMapper deviceMapper;
  36. @Autowired
  37. private EnergyElectricityMapper electricityMapper;
  38. @Autowired
  39. private EnergyWaterMapper waterMapper;
  40. @Autowired
  41. private EnergyThresholdMapper energyThresholdMapper;
  42. @Autowired
  43. private WarningInfoMapper warningInfoMapper;
  44. @Autowired
  45. private WarningManagerMapper warningManagerMapper;
  46. @Autowired
  47. private WarningRemindMapper warningRemindMapper;
  48. @Autowired
  49. private BaseConfigMapper baseConfigMapper;
  50. @Autowired
  51. private TaskInspectionMapper taskInspectionMapper;
  52. @Override
  53. @Transactional
  54. public void action() {
  55. QueryWrapper<EnergyDevice> queryWrapper = new QueryWrapper<>();
  56. queryWrapper.eq("org_id", "1543842934270394370").eq("delete_flag", "NOT_DELETE")
  57. .eq("status", 1);
  58. List<EnergyDevice> energyDevices = deviceMapper.selectList(queryWrapper);
  59. for (EnergyDevice energyDevice : energyDevices) {
  60. Date now = new Date();
  61. String orgId = energyDevice.getOrgId();
  62. String pigpenId = energyDevice.getInstallPosition();
  63. String waterValue = NumberUtils.getNumFloat(5.0, 20.0);
  64. String electricityValue = NumberUtils.getNumFloat(10.0, 100.0);
  65. EnergyWater energyWater = new EnergyWater();
  66. energyWater.setOrgId(orgId);
  67. energyWater.setUnitId(pigpenId);
  68. energyWater.setDeviceCode(energyDevice.getDeviceCode());
  69. energyWater.setCreateDate(now);
  70. energyWater.setOriginalDate(now);
  71. energyWater.setWaterValue(waterValue);
  72. energyWater.setOriginalValue(waterValue);
  73. EnergyElectricity energyElectricity = new EnergyElectricity();
  74. energyElectricity.setOrgId(orgId);
  75. energyElectricity.setUnitId(pigpenId);
  76. energyElectricity.setDeviceCode(energyDevice.getDeviceCode());
  77. energyElectricity.setCreateDate(now);
  78. energyElectricity.setOriginalDate(now);
  79. energyElectricity.setElectricityValue(electricityValue);
  80. energyElectricity.setOriginalValue(electricityValue);
  81. electricityMapper.insert(energyElectricity);
  82. waterMapper.insert(energyWater);
  83. BigDecimal water = new BigDecimal(waterValue);
  84. BigDecimal ele = new BigDecimal(electricityValue);
  85. BaseConfig baseConfig = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getConfigName, "预警类型").eq(BaseConfig::getParentId, 0));
  86. BaseConfig envWarning = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getConfigName, "能耗预警").eq(BaseConfig::getParentId, baseConfig.getId()));
  87. WarningRemind warningRemind = warningRemindMapper.selectOne(new QueryWrapper<WarningRemind>().lambda()
  88. .eq(WarningRemind::getWarningTypeId, envWarning.getId())
  89. .eq(WarningRemind::getOrgId, orgId).eq(WarningRemind::getUnitId, pigpenId));
  90. if (ObjectUtil.isNotEmpty(warningRemind)) {
  91. if (warningRemind.getTodayNoRemind() != 1) {
  92. EnergyThreshold energyThreshold = energyThresholdMapper.selectOne(new QueryWrapper<EnergyThreshold>().lambda().eq(EnergyThreshold::getOrgId, orgId).eq(EnergyThreshold::getUnitId, pigpenId).eq(EnergyThreshold::getIsEnable, 1));
  93. if (ObjectUtil.isNotEmpty(energyThreshold)) {
  94. BigDecimal waterLower = energyThreshold.getWaterLower();
  95. if (water.compareTo(waterLower) < 0) {
  96. WarningInfo warningInfo = new WarningInfo();
  97. warningInfo.setWarningContent("用水" + water + "吨低于阈值");
  98. warningInfo.setUnitId(pigpenId);
  99. warningInfo.setWarningTime(now);
  100. warningInfo.setOrgId(orgId);
  101. warningInfo.setWarningTypeId(envWarning.getId());
  102. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  103. if (ObjectUtil.isNotEmpty(warningManager)){
  104. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  105. }
  106. warningInfoMapper.insert(warningInfo);
  107. this.generateInspection(warningManager,warningInfo,orgId);
  108. }
  109. BigDecimal waterUpper = energyThreshold.getWaterUpper();
  110. if (water.compareTo(waterUpper) > 0) {
  111. WarningInfo warningInfo = new WarningInfo();
  112. warningInfo.setWarningContent("用水" + water + "吨高于阈值");
  113. warningInfo.setUnitId(pigpenId);
  114. warningInfo.setWarningTime(now);
  115. warningInfo.setOrgId(orgId);
  116. warningInfo.setWarningTypeId(envWarning.getId());
  117. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  118. if (ObjectUtil.isNotEmpty(warningManager)){
  119. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  120. }
  121. warningInfoMapper.insert(warningInfo);
  122. this.generateInspection(warningManager,warningInfo,orgId);
  123. }
  124. BigDecimal electricityLower = energyThreshold.getElectricityLower();
  125. if (ele.compareTo(electricityLower) < 0) {
  126. WarningInfo warningInfo = new WarningInfo();
  127. warningInfo.setWarningContent("用电" + ele + "kw·h低于阈值");
  128. warningInfo.setUnitId(pigpenId);
  129. warningInfo.setWarningTime(now);
  130. warningInfo.setOrgId(orgId);
  131. warningInfo.setWarningTypeId(envWarning.getId());
  132. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  133. if (ObjectUtil.isNotEmpty(warningManager)){
  134. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  135. }
  136. warningInfoMapper.insert(warningInfo);
  137. this.generateInspection(warningManager,warningInfo,orgId);
  138. }
  139. BigDecimal electricityUpper = energyThreshold.getElectricityUpper();
  140. if (ele.compareTo(electricityUpper) > 0) {
  141. WarningInfo warningInfo = new WarningInfo();
  142. warningInfo.setWarningContent("用电" + ele + "kw·h高于阈值");
  143. warningInfo.setUnitId(pigpenId);
  144. warningInfo.setWarningTime(now);
  145. warningInfo.setOrgId(orgId);
  146. warningInfo.setWarningTypeId(envWarning.getId());
  147. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  148. if (ObjectUtil.isNotEmpty(warningManager)){
  149. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  150. }
  151. warningInfoMapper.insert(warningInfo);
  152. this.generateInspection(warningManager,warningInfo,orgId);
  153. }
  154. BigDecimal sevenDayEleTotal = electricityMapper.getSevenDayTotal(orgId, pigpenId);
  155. BigDecimal sevenDayWaterTotal = waterMapper.getSevenDayTotal(orgId, pigpenId);
  156. BigDecimal sevenDayWaterLower = energyThreshold.getSevenDayWaterLower();
  157. if (sevenDayWaterTotal.compareTo(sevenDayWaterLower) < 0) {
  158. WarningInfo warningInfo = new WarningInfo();
  159. warningInfo.setWarningContent("七日用水" + sevenDayWaterTotal + "吨低于阈值");
  160. warningInfo.setUnitId(pigpenId);
  161. warningInfo.setWarningTime(now);
  162. warningInfo.setOrgId(orgId);
  163. warningInfo.setWarningTypeId(envWarning.getId());
  164. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  165. if (ObjectUtil.isNotEmpty(warningManager)){
  166. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  167. }
  168. warningInfoMapper.insert(warningInfo);
  169. this.generateInspection(warningManager,warningInfo,orgId);
  170. }
  171. BigDecimal sevenDayWaterUpper = energyThreshold.getSevenDayWaterUpper();
  172. if (sevenDayWaterTotal.compareTo(sevenDayWaterUpper) > 0) {
  173. WarningInfo warningInfo = new WarningInfo();
  174. warningInfo.setWarningContent("七日用水" + sevenDayWaterTotal + "吨高于阈值");
  175. warningInfo.setUnitId(pigpenId);
  176. warningInfo.setWarningTime(now);
  177. warningInfo.setOrgId(orgId);
  178. warningInfo.setWarningTypeId(envWarning.getId());
  179. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  180. if (ObjectUtil.isNotEmpty(warningManager)){
  181. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  182. }
  183. warningInfoMapper.insert(warningInfo);
  184. this.generateInspection(warningManager,warningInfo,orgId);
  185. }
  186. BigDecimal sevenDayElectricityLower = energyThreshold.getSevenDayElectricityLower();
  187. if (sevenDayEleTotal.compareTo(sevenDayElectricityLower) < 0) {
  188. WarningInfo warningInfo = new WarningInfo();
  189. warningInfo.setWarningContent("七日用电" + sevenDayEleTotal + "kw·h低于阈值");
  190. warningInfo.setUnitId(pigpenId);
  191. warningInfo.setWarningTime(now);
  192. warningInfo.setOrgId(orgId);
  193. warningInfo.setWarningTypeId(envWarning.getId());
  194. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  195. if (ObjectUtil.isNotEmpty(warningManager)){
  196. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  197. }
  198. warningInfoMapper.insert(warningInfo);
  199. this.generateInspection(warningManager,warningInfo,orgId);
  200. }
  201. BigDecimal sevenDayElectricityUpper = energyThreshold.getSevenDayElectricityUpper();
  202. if (sevenDayEleTotal.compareTo(sevenDayElectricityUpper) > 0) {
  203. WarningInfo warningInfo = new WarningInfo();
  204. warningInfo.setWarningContent("七日用电" + sevenDayEleTotal + "kw·h高于阈值");
  205. warningInfo.setUnitId(pigpenId);
  206. warningInfo.setWarningTime(now);
  207. warningInfo.setOrgId(orgId);
  208. warningInfo.setWarningTypeId(envWarning.getId());
  209. WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
  210. if (ObjectUtil.isNotEmpty(warningManager)){
  211. warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
  212. }
  213. warningInfoMapper.insert(warningInfo);
  214. this.generateInspection(warningManager,warningInfo,orgId);
  215. }
  216. }
  217. }
  218. }
  219. }
  220. }
  221. private void generateInspection(WarningManager warningManager, WarningInfo warningInfo,String orgId){
  222. TaskInspection taskInspection = new TaskInspection();
  223. if (ObjectUtil.isNotEmpty(warningManager)){
  224. taskInspection.setNotifierId(warningManager.getSecondManagerId());
  225. taskInspection.setWarningId(warningInfo.getId());
  226. taskInspection.setOrgId(orgId);
  227. taskInspectionMapper.insert(taskInspection);
  228. }
  229. }
  230. }