123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- package com.jjt.hl.service.impl;
- import com.jjt.biz.domain.BizObjMetrics;
- import com.jjt.common.utils.DateUtils;
- import com.jjt.common.utils.IntervalUtil;
- import com.jjt.common.utils.StringUtils;
- import com.jjt.hl.domain.HlEvent;
- import com.jjt.hl.mapper.HlEventMapper;
- import com.jjt.hl.service.IHlEventService;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.function.Function;
- import java.util.stream.Collectors;
- /**
- * 健康度事件记录Service业务层处理
- *
- * @author jjt
- * @date 2024-09-16
- */
- @Service
- public class HlEventServiceImpl implements IHlEventService {
- @Resource
- private HlEventMapper hlEventMapper;
- /**
- * 查询健康度事件记录
- *
- * @param eventId 健康度事件记录主键
- * @return 健康度事件记录
- */
- @Override
- public HlEvent selectHlEventByEventId(Long eventId) {
- return hlEventMapper.selectHlEventByEventId(eventId);
- }
- /**
- * 查询健康度事件记录列表
- *
- * @param hlEvent 健康度事件记录
- * @return 健康度事件记录
- */
- @Override
- public List<HlEvent> selectHlEventList(HlEvent hlEvent) {
- return hlEventMapper.selectHlEventList(hlEvent);
- }
- /**
- * 新增健康度事件记录
- *
- * @param hlEvent 健康度事件记录
- * @return 结果
- */
- @Override
- public int insertHlEvent(HlEvent hlEvent) {
- hlEvent.setCreateTime(DateUtils.getNowDate());
- return hlEventMapper.insertHlEvent(hlEvent);
- }
- /**
- * 修改健康度事件记录
- *
- * @param hlEvent 健康度事件记录
- * @return 结果
- */
- @Override
- public int updateHlEvent(HlEvent hlEvent) {
- hlEvent.setUpdateTime(DateUtils.getNowDate());
- return hlEventMapper.updateHlEvent(hlEvent);
- }
- /**
- * 批量删除健康度事件记录
- *
- * @param eventIds 需要删除的健康度事件记录主键
- * @return 结果
- */
- @Override
- public int deleteHlEventByEventIds(Long[] eventIds) {
- return hlEventMapper.deleteHlEventByEventIds(eventIds);
- }
- /**
- * 删除健康度事件记录信息
- *
- * @param eventId 健康度事件记录主键
- * @return 结果
- */
- @Override
- public int deleteHlEventByEventId(Long eventId) {
- return hlEventMapper.deleteHlEventByEventId(eventId);
- }
- /**
- * 处理事件
- *
- * @param om 指标对象
- * @param eventMap 当前事件列表
- * @param date 数据时间
- * @return
- */
- @Override
- public Map<String, HlEvent> process(BizObjMetrics om, Map<Long, HlEvent> eventMap, Date date) {
- Map<String, HlEvent> result = new HashMap<>(16);
- if (StringUtils.isEmpty(om.getEvent())) {
- //如果没有设置事件,则不做任何处理
- return result;
- }
- //当前是否产生事件
- boolean eventFlag = isEvent(om.getDValue().floatValue(), om.getEvent());
- //之前是否有事件
- HlEvent hlEvent = eventMap.get(om.getObjMetricsId());
- if (eventFlag) {
- //如果之前有事件,不管
- //如果没有事件,则添加事件
- if (hlEvent == null) {
- hlEvent = new HlEvent();
- hlEvent.setObjId(om.getObjId());
- hlEvent.setObjMetricsId(om.getObjMetricsId());
- hlEvent.setEventStatus("1");
- hlEvent.setEventValue(om.getDValue());
- hlEvent.setStartTime(date);
- hlEvent.setCreateTime(new Date());
- result.put("add", hlEvent);
- // insertHlEvent(hlEvent);
- }
- } else if (hlEvent != null) {
- //如果现在没有,之前有,需要结束上一次事件
- hlEvent.setEventStatus("2");
- hlEvent.setEndTime(date);
- result.put("update", hlEvent);
- // updateHlEvent(hlEvent);
- }
- return result;
- }
- /**
- * 通过对象ID查询当前事件的列表,并转换成map
- *
- * @param objId 对象ID
- * @return 结果
- */
- @Override
- public Map<Long, HlEvent> selectHlEventListCurr(Long objId) {
- HlEvent eventSearch = new HlEvent();
- eventSearch.setObjId(objId);
- eventSearch.setEventStatus("1");
- List<HlEvent> events = selectHlEventList(eventSearch);
- return events.stream().collect(Collectors.toMap(HlEvent::getObjMetricsId, Function.identity(), (existing, replacement) -> existing));
- }
- /**
- * 查询是否已经有事件产生
- *
- * @param metricsId 指标ID
- * @return 结果
- */
- // private HlEvent exists(Long metricsId) {
- // HlEvent search = new HlEvent();
- // search.setObjMetricsId(metricsId);
- // search.setEventStatus("1");
- //
- // List<HlEvent> list = selectHlEventList(search);
- // if (list.size() > 0) {
- // return list.get(0);
- // } else {
- // return null;
- // }
- // }
- /**
- * 获取告警等级
- *
- * @param value 值
- * @param event 事件表达式
- * @return 结果
- */
- private boolean isEvent(Float value, String event) {
- return IntervalUtil.inNumRange(value, event);
- }
- }
|