EtlRainDataTask.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /**
  2. * Copyright
  3. * All right reserved.
  4. * 项目名称:
  5. * 创建日期:2022/5/22
  6. */
  7. package org.springblade.etl;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springblade.core.tool.utils.ConcurrentDateFormat;
  12. import org.springblade.core.tool.utils.Func;
  13. import org.springblade.etl.entity.EtlRainDataEntity;
  14. import org.springblade.etl.service.IEtlRainDataService;
  15. import org.springblade.modules.business.rtu.data.entity.RtuDataRainEntity;
  16. import org.springblade.modules.business.rtu.data.service.IRtuDataRainService;
  17. import org.springframework.data.redis.core.HashOperations;
  18. import org.springframework.data.redis.core.RedisTemplate;
  19. import java.util.Date;
  20. import java.util.List;
  21. import java.util.concurrent.Callable;
  22. /***
  23. * Date:2022/5/22
  24. * Title: 环境辐射与气象监测系统(KRS) 模块
  25. * Description:MODBUS TCP 协议传输 ,读取任务
  26. * @author swp
  27. * @version 1.0
  28. * Remark:认为有必要的其他信息
  29. */
  30. @Slf4j
  31. public class EtlRainDataTask implements Callable<Integer> {
  32. private RedisTemplate redisTemplate;
  33. private IEtlRainDataService etlRainDataService;
  34. private IRtuDataRainService rtuDataRainService;
  35. EtlRainDataTask(RedisTemplate redisTemplate, IEtlRainDataService rainDataService, IRtuDataRainService rtuDataRainService) {
  36. this.redisTemplate = redisTemplate;
  37. this.etlRainDataService = rainDataService;
  38. this.rtuDataRainService = rtuDataRainService;
  39. }
  40. @Override
  41. public Integer call() {
  42. try {
  43. HashOperations<String, String, String> opsHash = redisTemplate.opsForHash();
  44. Date date = new Date();
  45. if (opsHash.hasKey("etl", "rain_update_time")) {
  46. String dt = opsHash.get("etl", "rain_update_time");
  47. date = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd"));
  48. } else {
  49. String dt = Func.formatDateTime(date);
  50. date = Func.parse(dt, ConcurrentDateFormat.of("yyyy-MM-dd"));
  51. }
  52. EtlRainDataEntity dto = new EtlRainDataEntity();
  53. dto.setTm(date);
  54. List<EtlRainDataEntity> list = etlRainDataService.selectLastList(dto);
  55. if (list != null && list.size() > 0) {
  56. for (int i = 0; i < list.size(); i++) {
  57. EtlRainDataEntity entity = list.get(i);
  58. LambdaQueryWrapper<RtuDataRainEntity> dataWrapper = Wrappers.<RtuDataRainEntity>query().lambda();
  59. dataWrapper.eq(RtuDataRainEntity::getRtuCode, entity.getRtuCode());
  60. RtuDataRainEntity rainEntity = rtuDataRainService.getOne(dataWrapper);
  61. if (null == rainEntity) {
  62. rainEntity = new RtuDataRainEntity();
  63. }
  64. rainEntity.setDrp(entity.getDrp());
  65. rainEntity.setIntv(entity.getIntv());
  66. rainEntity.setRtuCode(entity.getRtuCode());
  67. rainEntity.setTm(entity.getTm());
  68. rtuDataRainService.saveOrUpdate(rainEntity);
  69. }
  70. }
  71. } catch (Exception e) {
  72. log.error("实时数据统计任务异常 {}", e.getMessage());
  73. }
  74. return 0;
  75. }
  76. }