HlEventServiceImpl.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package com.jjt.hl.service.impl;
  2. import com.jjt.biz.domain.BizObjMetrics;
  3. import com.jjt.common.utils.DateUtils;
  4. import com.jjt.common.utils.IntervalUtil;
  5. import com.jjt.common.utils.StringUtils;
  6. import com.jjt.hl.domain.HlEvent;
  7. import com.jjt.hl.mapper.HlEventMapper;
  8. import com.jjt.hl.service.IHlEventService;
  9. import org.springframework.stereotype.Service;
  10. import javax.annotation.Resource;
  11. import java.util.Date;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. import java.util.function.Function;
  16. import java.util.stream.Collectors;
  17. /**
  18. * 健康度事件记录Service业务层处理
  19. *
  20. * @author jjt
  21. * @date 2024-09-16
  22. */
  23. @Service
  24. public class HlEventServiceImpl implements IHlEventService {
  25. @Resource
  26. private HlEventMapper hlEventMapper;
  27. /**
  28. * 查询健康度事件记录
  29. *
  30. * @param eventId 健康度事件记录主键
  31. * @return 健康度事件记录
  32. */
  33. @Override
  34. public HlEvent selectHlEventByEventId(Long eventId) {
  35. return hlEventMapper.selectHlEventByEventId(eventId);
  36. }
  37. /**
  38. * 查询健康度事件记录列表
  39. *
  40. * @param hlEvent 健康度事件记录
  41. * @return 健康度事件记录
  42. */
  43. @Override
  44. public List<HlEvent> selectHlEventList(HlEvent hlEvent) {
  45. return hlEventMapper.selectHlEventList(hlEvent);
  46. }
  47. /**
  48. * 新增健康度事件记录
  49. *
  50. * @param hlEvent 健康度事件记录
  51. * @return 结果
  52. */
  53. @Override
  54. public int insertHlEvent(HlEvent hlEvent) {
  55. hlEvent.setCreateTime(DateUtils.getNowDate());
  56. return hlEventMapper.insertHlEvent(hlEvent);
  57. }
  58. /**
  59. * 修改健康度事件记录
  60. *
  61. * @param hlEvent 健康度事件记录
  62. * @return 结果
  63. */
  64. @Override
  65. public int updateHlEvent(HlEvent hlEvent) {
  66. hlEvent.setUpdateTime(DateUtils.getNowDate());
  67. return hlEventMapper.updateHlEvent(hlEvent);
  68. }
  69. /**
  70. * 批量删除健康度事件记录
  71. *
  72. * @param eventIds 需要删除的健康度事件记录主键
  73. * @return 结果
  74. */
  75. @Override
  76. public int deleteHlEventByEventIds(Long[] eventIds) {
  77. return hlEventMapper.deleteHlEventByEventIds(eventIds);
  78. }
  79. /**
  80. * 删除健康度事件记录信息
  81. *
  82. * @param eventId 健康度事件记录主键
  83. * @return 结果
  84. */
  85. @Override
  86. public int deleteHlEventByEventId(Long eventId) {
  87. return hlEventMapper.deleteHlEventByEventId(eventId);
  88. }
  89. /**
  90. * 处理事件
  91. *
  92. * @param om 指标对象
  93. * @param eventMap 当前事件列表
  94. * @param date 数据时间
  95. * @return
  96. */
  97. @Override
  98. public Map<String, HlEvent> process(BizObjMetrics om, Map<Long, HlEvent> eventMap, Date date) {
  99. Map<String, HlEvent> result = new HashMap<>(16);
  100. if (StringUtils.isEmpty(om.getEvent())) {
  101. //如果没有设置事件,则不做任何处理
  102. return result;
  103. }
  104. //当前是否产生事件
  105. boolean eventFlag = isEvent(om.getDValue().floatValue(), om.getEvent());
  106. //之前是否有事件
  107. HlEvent hlEvent = eventMap.get(om.getObjMetricsId());
  108. if (eventFlag) {
  109. //如果之前有事件,不管
  110. //如果没有事件,则添加事件
  111. if (hlEvent == null) {
  112. hlEvent = new HlEvent();
  113. hlEvent.setObjId(om.getObjId());
  114. hlEvent.setObjMetricsId(om.getObjMetricsId());
  115. hlEvent.setEventStatus("1");
  116. hlEvent.setEventValue(om.getDValue());
  117. hlEvent.setStartTime(date);
  118. hlEvent.setCreateTime(new Date());
  119. result.put("add", hlEvent);
  120. // insertHlEvent(hlEvent);
  121. }
  122. } else if (hlEvent != null) {
  123. //如果现在没有,之前有,需要结束上一次事件
  124. hlEvent.setEventStatus("2");
  125. hlEvent.setEndTime(date);
  126. result.put("update", hlEvent);
  127. // updateHlEvent(hlEvent);
  128. }
  129. return result;
  130. }
  131. /**
  132. * 通过对象ID查询当前事件的列表,并转换成map
  133. *
  134. * @param objId 对象ID
  135. * @return 结果
  136. */
  137. @Override
  138. public Map<Long, HlEvent> selectHlEventListCurr(Long objId) {
  139. HlEvent eventSearch = new HlEvent();
  140. eventSearch.setObjId(objId);
  141. eventSearch.setEventStatus("1");
  142. List<HlEvent> events = selectHlEventList(eventSearch);
  143. return events.stream().collect(Collectors.toMap(HlEvent::getObjMetricsId, Function.identity(), (existing, replacement) -> existing));
  144. }
  145. /**
  146. * 查询是否已经有事件产生
  147. *
  148. * @param metricsId 指标ID
  149. * @return 结果
  150. */
  151. // private HlEvent exists(Long metricsId) {
  152. // HlEvent search = new HlEvent();
  153. // search.setObjMetricsId(metricsId);
  154. // search.setEventStatus("1");
  155. //
  156. // List<HlEvent> list = selectHlEventList(search);
  157. // if (list.size() > 0) {
  158. // return list.get(0);
  159. // } else {
  160. // return null;
  161. // }
  162. // }
  163. /**
  164. * 获取告警等级
  165. *
  166. * @param value 值
  167. * @param event 事件表达式
  168. * @return 结果
  169. */
  170. private boolean isEvent(Float value, String event) {
  171. return IntervalUtil.inNumRange(value, event);
  172. }
  173. }