EnergyAlarmServiceImpl.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.persagy.apm.diagnose.service;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.persagy.apm.diagnose.feign.AlarmResult;
  5. import com.persagy.apm.diagnose.feign.client.AlarmServiceClient;
  6. import com.persagy.apm.diagnose.indicatorrecord.service.impl.MonitorIndicatorRecordServiceImpl;
  7. import com.persagy.apm.diagnose.service.dto.*;
  8. import com.persagy.apm.diagnose.utils.AlarmResultUtil;
  9. import com.persagy.apm.diagnose.utils.DmpResultUtil;
  10. import com.persagy.apm.diagnose.utils.RedisUtil;
  11. import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
  12. import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.QueryAlarmConfigDTO;
  13. import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.util.CollectionUtils;
  17. import java.util.*;
  18. import java.util.function.Function;
  19. import java.util.stream.Collectors;
  20. /**
  21. * OriginalPresent采集当前数据查询
  22. *
  23. * @author strootman
  24. * @version 1.0
  25. * @date 2018年8月17日
  26. */
  27. @Service
  28. public class EnergyAlarmServiceImpl {
  29. @Autowired
  30. AlarmServiceClient alarmServiceClient;
  31. @Autowired
  32. RedisUtil redisUtil;
  33. /**
  34. * @throws
  35. * @title queryMonitorIndicatorConfigDTOList
  36. * @description 查询监控指标配置
  37. * @author leifeng
  38. * @param: projectId
  39. * @updateTime 2021/9/23 20:29
  40. * @return: java.util.List<com.persagy.apm.diagnose.service.dto.MonitorIndicatorConfigDTO>
  41. */
  42. public List<MonitorIndicatorConfigDTO> queryMonitorIndicatorConfigDTOList(String projectId) throws Exception {
  43. MonitorIndicatorConfigDTO monitorIndicatorConfigDTO = MonitorIndicatorConfigDTO.builder().build();
  44. monitorIndicatorConfigDTO.setProjectId(projectId);
  45. monitorIndicatorConfigDTO.setGroupCode("WD");
  46. monitorIndicatorConfigDTO.setPd("asdasdasda");
  47. monitorIndicatorConfigDTO.setUserId("test");
  48. AlarmResult<JSONObject> result = alarmServiceClient.query(monitorIndicatorConfigDTO);
  49. return AlarmResultUtil.getRecords(result, MonitorIndicatorConfigDTO.class);
  50. }
  51. /**
  52. * @throws
  53. * @title queryCalculateMethods
  54. * @description 查询所有计算公式, key为公式id
  55. * @author leifeng
  56. * @updateTime 2021/9/23 20:29
  57. * @return: java.util.Map<java.lang.String, com.persagy.apm.diagnose.service.dto.CalculateMethodDTO>
  58. */
  59. public Map<String, CalculateMethodDTO> queryCalculateMethods() throws Exception {
  60. AlarmResult<JSONObject> result = alarmServiceClient.queryCalculateMethods(CalculateMethodDTO.builder().groupCode("WD").userId("test").pd("asdasdasdasdadsdasdasdasdasdasd").build());
  61. List<CalculateMethodDTO> records = AlarmResultUtil.getRecords(result, CalculateMethodDTO.class);
  62. return records.stream().collect(Collectors.toMap(CalculateMethodDTO::getId, Function.identity(), (key1, key2) -> key2));
  63. }
  64. /**
  65. * @throws
  66. * @title queryObjIndicatorMethodId
  67. * @description 查询对象指标公式
  68. * @author leifeng
  69. * @param: objId
  70. * @param: indicatorList
  71. * @updateTime 2021/9/27 11:54
  72. */
  73. public Map<String, String> queryObjId_indicatorAndMethodId(String projectId,String objId, List<String> indicatorIdList) throws Exception {
  74. MonitorIndicatorConfigByEquipDTO build = MonitorIndicatorConfigByEquipDTO.builder().projectId(projectId).objId(objId).monitorIndicatorId(indicatorIdList).groupCode("WD").userId("test").pd("wwwwwwwwww").build();
  75. AlarmResult<JSONObject> result = alarmServiceClient.query_by_equip(build);
  76. JSONObject content = result.getContent();
  77. if (content == null) {
  78. return new HashMap<>();
  79. }
  80. JSONArray records = content.getJSONArray("records");
  81. if (records == null) {
  82. return new HashMap<>();
  83. }
  84. List<ObjIndicatorMethodDTO> objIndicatorMethodDTOs = new ArrayList<>();
  85. ObjIndicatorMethodDTO objIndicatorMethodDTO = null;
  86. for (Object record : records) {
  87. objIndicatorMethodDTO = new ObjIndicatorMethodDTO();
  88. JSONObject recordObj = (JSONObject) record;
  89. JSONObject obj1 = recordObj.getJSONObject("obj");
  90. if (obj1 == null) {
  91. continue;
  92. }
  93. JSONObject monitorIndicator = recordObj.getJSONObject("monitorIndicator");
  94. if (monitorIndicator == null) {
  95. continue;
  96. }
  97. JSONObject calculateMethod = recordObj.getJSONObject("calculateMethod");
  98. if (calculateMethod == null) {
  99. continue;
  100. }
  101. objIndicatorMethodDTO.setObjId(obj1.getString("id"));
  102. objIndicatorMethodDTO.setCalculateMethodId(calculateMethod.getString("id"));
  103. objIndicatorMethodDTO.setMonitorIndicatorId(monitorIndicator.getString("id"));
  104. objIndicatorMethodDTOs.add(objIndicatorMethodDTO);
  105. }
  106. return objIndicatorMethodDTOs.stream().collect(Collectors.toMap(a -> a.getObjId() + MonitorIndicatorRecordServiceImpl.alarmSlipt + a.getMonitorIndicatorId(), ObjIndicatorMethodDTO::getCalculateMethodId));
  107. }
  108. /**
  109. * @throws
  110. * @title queryObjIndicatorMethodId
  111. * @description 查询对象指标公式
  112. * @author leifeng
  113. * @param: objId
  114. * @param: indicatorList
  115. * @updateTime 2021/9/27 11:54
  116. */
  117. public String queryObjIndicatorMethodId(String projectId,String objId, String indicatorId) throws Exception {
  118. MonitorIndicatorConfigByEquipDTO build = MonitorIndicatorConfigByEquipDTO.builder().projectId(projectId).objId(objId).monitorIndicatorId(Arrays.asList(indicatorId)).groupCode("WD").userId("test").pd("wwwwwwwwww").build();
  119. AlarmResult<JSONObject> result = alarmServiceClient.query_by_equip(build);
  120. JSONObject content = result.getContent();
  121. if (content == null) {
  122. return null;
  123. }
  124. JSONArray records = content.getJSONArray("records");
  125. if (records == null) {
  126. return null;
  127. }
  128. if(CollectionUtils.isEmpty(records)){
  129. return null;
  130. }
  131. JSONObject recordObj = (JSONObject)records.get(0);
  132. JSONObject calculateMethod = recordObj.getJSONObject("calculateMethod");
  133. if (calculateMethod == null) {
  134. return null;
  135. }
  136. return calculateMethod.getString("id");
  137. }
  138. /**
  139. * @throws
  140. * @title queryMonitorIndicatorConfigDTOList
  141. * @description 查询监控指标配置
  142. * @author leifeng
  143. * @param: projectId
  144. * @updateTime 2021/9/23 20:29
  145. * @return: java.util.List<com.persagy.apm.diagnose.service.dto.MonitorIndicatorConfigDTO>
  146. */
  147. public List<AlarmRuleDTO> getProjectAlarmRules(String projectId) throws Exception {
  148. AlarmRuleDTO alarmRuleDTO = AlarmRuleDTO.builder().build();
  149. alarmRuleDTO.setProjectId(projectId);
  150. alarmRuleDTO.setGroupCode("WD");
  151. alarmRuleDTO.setPd("asdasdasda");
  152. alarmRuleDTO.setUserId("test");
  153. AlarmResult<JSONObject> result = alarmServiceClient.queryProjectAlarmRules(alarmRuleDTO);
  154. return AlarmResultUtil.getRecords(result, AlarmRuleDTO.class);
  155. }
  156. }