AlarmScannerService.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.gyee.alarm.service;
  2. import com.gyee.alarm.feigns.IAlarmService;
  3. import com.gyee.alarm.model.vo.AlarmSuperTalbeType;
  4. import com.gyee.alarm.model.vo.AlarmTag;
  5. import com.gyee.alarm.task.thread.AlarmThread;
  6. import com.gyee.alarm.util.realtimesource.IEdosUtil;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.stereotype.Service;
  9. import javax.annotation.Resource;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.concurrent.Executor;
  13. @Service
  14. public class AlarmScannerService {
  15. @Value("${task-count}")
  16. private Integer taskCount;
  17. @Value("${interval}")
  18. private Integer interval;
  19. @Value("${alarmType}")
  20. private String alarmType;
  21. @Value("${read-rows}")
  22. private Integer readRows;
  23. @Resource
  24. private IEdosUtil edosUtil;
  25. @Resource
  26. private IAlarmService alarmService;
  27. private List<AlarmTag> alarmTags=new ArrayList<>();
  28. @Resource
  29. private Executor executor;
  30. /**
  31. * 初始化
  32. */
  33. public void init() {
  34. //#WT("wt_alarms", "设备报警超级表"),
  35. //#BT("bt_alarms", "升压站报警超级表"),
  36. //#IN("in_alarms", "逆变器报警超级表"),
  37. switch (alarmType){
  38. case "wt_alarms":
  39. alarmTags =alarmService.findTagsByWt();
  40. break;
  41. case "bt_alarms":
  42. alarmTags =alarmService.findTagsByBt();
  43. break;
  44. case "in_alarms":
  45. alarmTags =alarmService.findTagsByIn();
  46. break;
  47. }
  48. }
  49. /**
  50. * 分配任务
  51. */
  52. public void taskJobs() {
  53. int len = 1;
  54. List<AlarmTag> alarmls=new ArrayList<>();
  55. int listNumber=alarmTags.size()/taskCount;
  56. StringBuilder str=new StringBuilder();
  57. // System.out.println(str.toString());
  58. for(int i=0;i<alarmTags.size();i++)
  59. {
  60. alarmls.add(alarmTags.get(i));
  61. if(i!=0 && i%listNumber==0)
  62. {
  63. new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls,interval,String.valueOf(len),readRows,alarmType)).start();
  64. alarmls=new ArrayList<>();
  65. len++;
  66. }
  67. }
  68. if(!alarmls.isEmpty())
  69. {
  70. new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls,interval,String.valueOf(len),readRows,alarmType)).start();
  71. listNumber++;
  72. }
  73. str.append("总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
  74. }
  75. }