TElecdashboardRealtimeController.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package io.renren.modules.aspen.controller;
  2. import io.renren.modules.aspen.entity.TElecdashboardAlarmEntity;
  3. import io.renren.modules.aspen.entity.TElecdashboardRealtimeEntity;
  4. import io.renren.modules.aspen.entity.base.TElecdashboard;
  5. import io.renren.modules.aspen.service.TElecdashboardAlarmService;
  6. import io.renren.modules.aspen.service.TElecdashboardRealtimeService;
  7. import io.renren.modules.aspen.core.utils.DashboardDataPullUtils;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.scheduling.annotation.EnableScheduling;
  10. import org.springframework.scheduling.annotation.Scheduled;
  11. import org.springframework.stereotype.Component;
  12. import io.renren.modules.aspen.core.constant.AlarmValue;
  13. import javax.annotation.Resource;
  14. import java.util.ArrayList;
  15. import java.util.Arrays;
  16. import java.util.Date;
  17. /**
  18. * 电厂大屏实时数据
  19. *
  20. * @author Wang Zi Wen
  21. * @email wangggziwen@163.com
  22. * @date 2022/09/01 10:58:53
  23. */
  24. @Component
  25. @Configuration
  26. @EnableScheduling
  27. public class TElecdashboardRealtimeController {
  28. @Resource
  29. private TElecdashboardRealtimeService tElecdashboardRealtimeService;
  30. @Resource
  31. private TElecdashboardAlarmService tElecdashboardAlarmService;
  32. /**
  33. * 每5秒抓取实时数据,存入数据库
  34. */
  35. @Scheduled(cron = "*/5 * * * * ?" )
  36. public void getExcelDataEvery5Seconds(){
  37. DashboardDataPullUtils dashboardDataPullUtils = new DashboardDataPullUtils();
  38. // 抓取实时数据
  39. TElecdashboard tElecdashboard = dashboardDataPullUtils.getCsvData(new TElecdashboardRealtimeEntity());
  40. TElecdashboardRealtimeEntity tElecdashboardRealtimeEntity = (TElecdashboardRealtimeEntity) tElecdashboard;
  41. // 存入数据库
  42. tElecdashboardRealtimeService.insertTElecdashboardRealtime(tElecdashboardRealtimeEntity);
  43. // 检查预警值
  44. this.checkAlarmValue(tElecdashboardRealtimeEntity);
  45. }
  46. /**
  47. * 检查预警值,如果实时数据超出预警值范围,插入预警数据
  48. *
  49. * @param tElecdashboardRealtimeEntity 电厂大屏实时数据
  50. */
  51. private void checkAlarmValue(TElecdashboardRealtimeEntity tElecdashboardRealtimeEntity) {
  52. // 清空电厂大屏预警表
  53. tElecdashboardAlarmService.deleteTElecdashboardAlarm();
  54. // 预警值list
  55. ArrayList<String> alarmValueList = new ArrayList<String>(Arrays.asList(
  56. tElecdashboardRealtimeEntity.getQt61001(), tElecdashboardRealtimeEntity.getQt61002(),
  57. tElecdashboardRealtimeEntity.getQt61003(), tElecdashboardRealtimeEntity.getQt61004(),
  58. tElecdashboardRealtimeEntity.getQt61005(), tElecdashboardRealtimeEntity.getQt61101(),
  59. tElecdashboardRealtimeEntity.getQt61102(), tElecdashboardRealtimeEntity.getQt61103(),
  60. tElecdashboardRealtimeEntity.getQt61104(), tElecdashboardRealtimeEntity.getQt61105(),
  61. tElecdashboardRealtimeEntity.getQt76001(), tElecdashboardRealtimeEntity.getQt76002()
  62. ));
  63. // 位号list
  64. ArrayList<String> codeList = new ArrayList<String>(Arrays.asList(
  65. "QT61001", "QT61002", "QT61003", "QT61004", "QT61005", "QT61101",
  66. "QT61102", "QT61103", "QT61104", "QT61105", "QT76001", "QT76002"
  67. ));
  68. for (int i = 0; i < alarmValueList.size(); i++) {
  69. // 空值或错误值,不处理
  70. if ("".equals(alarmValueList.get(i)) || "#NAME?".equals(alarmValueList.get(i))) {
  71. continue;
  72. }
  73. // 小于最小值或大于最大值,插入预警数据
  74. if (
  75. AlarmValue.valueOf(codeList.get(i)).getMin() > Double.parseDouble(alarmValueList.get(i))
  76. || AlarmValue.valueOf(codeList.get(i)).getMax() < Double.parseDouble(alarmValueList.get(i))
  77. ) {
  78. tElecdashboardAlarmService.insertTElecdashboardAlarm(new TElecdashboardAlarmEntity(
  79. alarmValueList.get(i),
  80. new Date(),
  81. codeList.get(i),
  82. AlarmValue.valueOf(codeList.get(i)).getDesc()
  83. ));
  84. }
  85. }
  86. }
  87. /**
  88. * 每天8:00清空电厂大屏实时数据表
  89. */
  90. @Scheduled(cron = "0 0 8 * * ?")
  91. public void clearTElecdashboardRealtimeEveryHour() {
  92. tElecdashboardRealtimeService.deleteTElecdashboardRealtime();
  93. }
  94. }