package com.persagy.apm.diagnose.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.persagy.apm.diagnose.feign.AlarmResult; import com.persagy.apm.diagnose.feign.client.AlarmServiceClient; import com.persagy.apm.diagnose.indicatorrecord.service.impl.MonitorIndicatorRecordServiceImpl; import com.persagy.apm.diagnose.service.dto.*; import com.persagy.apm.diagnose.utils.AlarmResultUtil; import com.persagy.apm.diagnose.utils.DmpResultUtil; import com.persagy.apm.diagnose.utils.RedisUtil; import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult; import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.QueryAlarmConfigDTO; import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** * OriginalPresent采集当前数据查询 * * @author strootman * @version 1.0 * @date 2018年8月17日 */ @Service public class EnergyAlarmServiceImpl { @Autowired AlarmServiceClient alarmServiceClient; @Autowired RedisUtil redisUtil; /** * @throws * @title queryMonitorIndicatorConfigDTOList * @description 查询监控指标配置 * @author leifeng * @param: projectId * @updateTime 2021/9/23 20:29 * @return: java.util.List */ public List queryMonitorIndicatorConfigDTOList(String projectId) throws Exception { MonitorIndicatorConfigDTO monitorIndicatorConfigDTO = MonitorIndicatorConfigDTO.builder().build(); monitorIndicatorConfigDTO.setProjectId(projectId); monitorIndicatorConfigDTO.setGroupCode("WD"); monitorIndicatorConfigDTO.setPd("asdasdasda"); monitorIndicatorConfigDTO.setUserId("test"); AlarmResult result = alarmServiceClient.query(monitorIndicatorConfigDTO); return AlarmResultUtil.getRecords(result, MonitorIndicatorConfigDTO.class); } /** * @throws * @title queryCalculateMethods * @description 查询所有计算公式, key为公式id * @author leifeng * @updateTime 2021/9/23 20:29 * @return: java.util.Map */ public Map queryCalculateMethods() throws Exception { AlarmResult result = alarmServiceClient.queryCalculateMethods(CalculateMethodDTO.builder().groupCode("WD").userId("test").pd("asdasdasdasdadsdasdasdasdasdasd").build()); List records = AlarmResultUtil.getRecords(result, CalculateMethodDTO.class); return records.stream().collect(Collectors.toMap(CalculateMethodDTO::getId, Function.identity(), (key1, key2) -> key2)); } /** * @throws * @title queryObjIndicatorMethodId * @description 查询对象指标公式 * @author leifeng * @param: objId * @param: indicatorList * @updateTime 2021/9/27 11:54 */ public Map queryObjId_indicatorAndMethodId(String projectId,String objId, List indicatorIdList) throws Exception { MonitorIndicatorConfigByEquipDTO build = MonitorIndicatorConfigByEquipDTO.builder().projectId(projectId).objId(objId).monitorIndicatorId(indicatorIdList).groupCode("WD").userId("test").pd("wwwwwwwwww").build(); AlarmResult result = alarmServiceClient.query_by_equip(build); JSONObject content = result.getContent(); if (content == null) { return new HashMap<>(); } JSONArray records = content.getJSONArray("records"); if (records == null) { return new HashMap<>(); } List objIndicatorMethodDTOs = new ArrayList<>(); ObjIndicatorMethodDTO objIndicatorMethodDTO = null; for (Object record : records) { objIndicatorMethodDTO = new ObjIndicatorMethodDTO(); JSONObject recordObj = (JSONObject) record; JSONObject obj1 = recordObj.getJSONObject("obj"); if (obj1 == null) { continue; } JSONObject monitorIndicator = recordObj.getJSONObject("monitorIndicator"); if (monitorIndicator == null) { continue; } JSONObject calculateMethod = recordObj.getJSONObject("calculateMethod"); if (calculateMethod == null) { continue; } objIndicatorMethodDTO.setObjId(obj1.getString("id")); objIndicatorMethodDTO.setCalculateMethodId(calculateMethod.getString("id")); objIndicatorMethodDTO.setMonitorIndicatorId(monitorIndicator.getString("id")); objIndicatorMethodDTOs.add(objIndicatorMethodDTO); } return objIndicatorMethodDTOs.stream().collect(Collectors.toMap(a -> a.getObjId() + MonitorIndicatorRecordServiceImpl.alarmSlipt + a.getMonitorIndicatorId(), ObjIndicatorMethodDTO::getCalculateMethodId)); } /** * @throws * @title queryObjIndicatorMethodId * @description 查询对象指标公式 * @author leifeng * @param: objId * @param: indicatorList * @updateTime 2021/9/27 11:54 */ public String queryObjIndicatorMethodId(String projectId,String objId, String indicatorId) throws Exception { MonitorIndicatorConfigByEquipDTO build = MonitorIndicatorConfigByEquipDTO.builder().projectId(projectId).objId(objId).monitorIndicatorId(Arrays.asList(indicatorId)).groupCode("WD").userId("test").pd("wwwwwwwwww").build(); AlarmResult result = alarmServiceClient.query_by_equip(build); JSONObject content = result.getContent(); if (content == null) { return null; } JSONArray records = content.getJSONArray("records"); if (records == null) { return null; } if(CollectionUtils.isEmpty(records)){ return null; } JSONObject recordObj = (JSONObject)records.get(0); JSONObject calculateMethod = recordObj.getJSONObject("calculateMethod"); if (calculateMethod == null) { return null; } return calculateMethod.getString("id"); } /** * @throws * @title queryMonitorIndicatorConfigDTOList * @description 查询监控指标配置 * @author leifeng * @param: projectId * @updateTime 2021/9/23 20:29 * @return: java.util.List */ public List getProjectAlarmRules(String projectId) throws Exception { AlarmRuleDTO alarmRuleDTO = AlarmRuleDTO.builder().build(); alarmRuleDTO.setProjectId(projectId); alarmRuleDTO.setGroupCode("WD"); alarmRuleDTO.setPd("asdasdasda"); alarmRuleDTO.setUserId("test"); AlarmResult result = alarmServiceClient.queryProjectAlarmRules(alarmRuleDTO); return AlarmResultUtil.getRecords(result, AlarmRuleDTO.class); } }