TestWarnTask.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /**
  2. * Copyright
  3. * All right reserved.
  4. * 项目名称:
  5. * 创建日期:2022/5/22
  6. */
  7. package org.springblade.etl;
  8. import cn.hutool.core.date.DateUtil;
  9. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  10. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springblade.common.cache.DictBizCache;
  13. import org.springblade.core.tool.jackson.JsonUtil;
  14. import org.springblade.core.tool.utils.Func;
  15. import org.springblade.enums.WarningStatusEnum;
  16. import org.springblade.etl.service.IEtlWarningService;
  17. import org.springblade.modules.business.project.base.entity.ProjectInfoEntity;
  18. import org.springblade.modules.business.project.base.service.IProjectBaseInfoService;
  19. import org.springblade.modules.business.rtu.base.entity.RtuInfoEntity;
  20. import org.springblade.modules.business.rtu.base.service.IRtuBaseInfoService;
  21. import org.springblade.modules.business.rtu.data.entity.RtuDataGroundEntity;
  22. import org.springblade.modules.business.rtu.data.entity.RtuDataRainEntity;
  23. import org.springblade.modules.business.rtu.data.entity.RtuDataRiverEntity;
  24. import org.springblade.modules.business.rtu.data.entity.RtuDataRsvrEntity;
  25. import org.springblade.modules.business.rtu.data.service.IRtuDataGroundService;
  26. import org.springblade.modules.business.rtu.data.service.IRtuDataRainService;
  27. import org.springblade.modules.business.rtu.data.service.IRtuDataRiverService;
  28. import org.springblade.modules.business.rtu.data.service.IRtuDataRsvrService;
  29. import org.springblade.modules.business.warning.entity.OriginalWarningInfoEntity;
  30. import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;
  31. import org.springblade.modules.business.warning.service.IOriginalWarningService;
  32. import org.springblade.modules.business.warning.service.IRtuWarningService;
  33. import org.springblade.modules.system.entity.DictBiz;
  34. import org.springframework.data.redis.core.RedisTemplate;
  35. import org.springframework.kafka.core.KafkaTemplate;
  36. import org.springframework.messaging.simp.SimpMessagingTemplate;
  37. import java.util.Date;
  38. import java.util.List;
  39. import java.util.concurrent.Callable;
  40. /***
  41. * Date:2022/5/22
  42. * Title: 环境辐射与气象监测系统(KRS) 模块
  43. * Description:MODBUS TCP 协议传输 ,读取任务
  44. * @author swp
  45. * @version 1.0
  46. * Remark:认为有必要的其他信息
  47. */
  48. @Slf4j
  49. public class TestWarnTask implements Callable<Integer> {
  50. private RedisTemplate redisTemplate;
  51. private SimpMessagingTemplate messagingTemplate;
  52. private KafkaTemplate<String, String> kafkaTemplate;
  53. private IEtlWarningService etlWarningService;
  54. private IRtuWarningService rtuWarningService;
  55. private IRtuBaseInfoService rtuBaseInfoService;
  56. private IProjectBaseInfoService projectBaseInfoService;
  57. private IRtuDataGroundService dataGroundService;
  58. private IRtuDataRainService dataRainService;
  59. private IRtuDataRsvrService dataRsvrService;
  60. private IRtuDataRiverService dataRiverService;
  61. private IOriginalWarningService originalWarningService;
  62. public TestWarnTask(RedisTemplate redisTemplate, KafkaTemplate<String, String> kafkaTemplate, SimpMessagingTemplate messagingTemplate, IEtlWarningService etlWarningService, IRtuWarningService rtuWarningService, IRtuBaseInfoService rtuBaseInfoService, IProjectBaseInfoService projectBaseInfoService, IRtuDataRainService dataRainService, IRtuDataRiverService dataRiverService, IRtuDataRsvrService dataRsvrService, IRtuDataGroundService dataGroundService,IOriginalWarningService originalWarningService) {
  63. this.redisTemplate = redisTemplate;
  64. this.kafkaTemplate = kafkaTemplate;
  65. this.messagingTemplate = messagingTemplate;
  66. this.etlWarningService = etlWarningService;
  67. this.rtuWarningService = rtuWarningService;
  68. this.rtuBaseInfoService = rtuBaseInfoService;
  69. this.projectBaseInfoService = projectBaseInfoService;
  70. this.dataGroundService = dataGroundService;
  71. this.dataRainService = dataRainService;
  72. this.dataRiverService = dataRiverService;
  73. this.dataRsvrService = dataRsvrService;
  74. this.originalWarningService=originalWarningService;
  75. }
  76. @Override
  77. public Integer call() {
  78. try {
  79. LambdaQueryWrapper<ProjectInfoEntity> wrapper = Wrappers.<ProjectInfoEntity>query().lambda();
  80. wrapper.eq(ProjectInfoEntity::getIsDeleted, 0);
  81. List<ProjectInfoEntity> projectInfoEntityList = projectBaseInfoService.list(wrapper);
  82. for (ProjectInfoEntity projectInfoEntity : projectInfoEntityList) {
  83. LambdaQueryWrapper<RtuInfoEntity> rtuWrapper = Wrappers.<RtuInfoEntity>query().lambda();
  84. rtuWrapper.eq(RtuInfoEntity::getProjectId, projectInfoEntity.getId());
  85. rtuWrapper.orderByAsc(RtuInfoEntity::getRtuCode);
  86. List<RtuInfoEntity> rtuInfoEntityList = rtuBaseInfoService.list(rtuWrapper);
  87. if (null != rtuInfoEntityList && rtuInfoEntityList.size() > 0) {
  88. //生成预警信息
  89. while (true) {
  90. java.util.Random random = new java.util.Random();
  91. int index = random.nextInt(rtuInfoEntityList.size());
  92. RtuInfoEntity toWarnRtuEntity = rtuInfoEntityList.get(index);
  93. LambdaQueryWrapper<RtuWarningInfoEntity> warnWrapper = Wrappers.<RtuWarningInfoEntity>query().lambda();
  94. warnWrapper.eq(RtuWarningInfoEntity::getRtuCode, toWarnRtuEntity.getRtuCode());
  95. warnWrapper.eq(RtuWarningInfoEntity::getIsDeleted, 0);
  96. warnWrapper.isNull(RtuWarningInfoEntity::getWarningRecoveryTime);
  97. RtuWarningInfoEntity entity = rtuWarningService.getOne(warnWrapper);
  98. if (null == entity) {
  99. OriginalWarningInfoEntity originalWarningInfoEntity=new OriginalWarningInfoEntity();
  100. originalWarningInfoEntity.setRtuCode(toWarnRtuEntity.getRtuCode());
  101. originalWarningInfoEntity.setWarnName(toWarnRtuEntity.getRtuName()+"-预警");
  102. originalWarningInfoEntity.setWarnTime(new Date());
  103. originalWarningInfoEntity.setWarnLevelCode("严重");
  104. originalWarningInfoEntity.setWarnInfo("降水量超限预警");
  105. originalWarningInfoEntity.setWarnStatus(5);
  106. originalWarningInfoEntity.setReviewStatus("2");
  107. originalWarningInfoEntity.setType("1");
  108. originalWarningInfoEntity.setRainWarnRate(1);
  109. originalWarningInfoEntity.setWarnSort("监测雨量");
  110. originalWarningInfoEntity.setWarnLocation("全市");
  111. originalWarningInfoEntity.setWarnAdcd("全市");
  112. originalWarningInfoEntity.setUserAdcd("全市");
  113. originalWarningInfoEntity.setWarnLgtd("116.727371");
  114. originalWarningInfoEntity.setWarnLttd("39.906744");
  115. originalWarningInfoEntity.setIntv("1小时");
  116. originalWarningInfoEntity.setDrp(random.nextDouble());
  117. originalWarningInfoEntity.setZ(random.nextDouble());
  118. originalWarningInfoEntity.setQ(random.nextDouble());
  119. originalWarningInfoEntity.setWptn("水势");
  120. originalWarningInfoEntity.setRz(random.nextDouble());
  121. originalWarningInfoEntity.setRwptn("水势");
  122. originalWarningInfoEntity.setInq(random.nextDouble());
  123. originalWarningService.save(originalWarningInfoEntity);
  124. RtuWarningInfoEntity rtuWarningInfoEntity = new RtuWarningInfoEntity();
  125. rtuWarningInfoEntity.setWarningKind("监测雨量");
  126. rtuWarningInfoEntity.setWarningDesc("降水量超限预警");
  127. rtuWarningInfoEntity.setRtuCode(toWarnRtuEntity.getRtuCode());
  128. rtuWarningInfoEntity.setWarningHappenTime(new Date());
  129. rtuWarningInfoEntity.setDataFromId(originalWarningInfoEntity.getId());
  130. rtuWarningInfoEntity.setWarningStatus(WarningStatusEnum.STATUS_HAPPEN.getCode());
  131. rtuWarningService.save(rtuWarningInfoEntity);
  132. kafkaTemplate.send("ywxt.warning", JsonUtil.toJson(rtuWarningInfoEntity));
  133. break;
  134. }
  135. }
  136. }
  137. }
  138. String timeStartText = DateUtil.format(new Date(), "yyyy年MM月dd日 HH时mm分ss秒");
  139. log.info("模似预警生成{}", timeStartText);
  140. } catch (Exception e) {
  141. log.error("模似预警务异常 {}", e.getMessage());
  142. }
  143. return 0;
  144. }
  145. }