|  |  |  | 
|---|
|  |  |  | import java.io.ByteArrayInputStream; | 
|---|
|  |  |  | import java.io.InputStream; | 
|---|
|  |  |  | import java.io.InputStreamReader; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.LinkedHashMap; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.dom4j.Element; | 
|---|
|  |  |  | import org.dom4j.io.SAXReader; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.cglib.beans.BeanMap; | 
|---|
|  |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
|---|
|  |  |  | import org.springframework.security.access.prepost.PreAuthorize; | 
|---|
|  |  |  | import org.springframework.util.ObjectUtils; | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return the alarm levels | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @GetMapping("alarm-levels") | 
|---|
|  |  |  | public Object getAlarmLevels(HttpServletRequest request, Integer orgId) { | 
|---|
|  |  |  | public Object getAlarmLevels(HttpServletRequest request, Optional<Integer> orgId, Optional<Integer> mpId) { | 
|---|
|  |  |  | List<Map<String,Object>> sensorAlarmList = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | AlarmConfigValue alarmConfigValue = alarmConfigService.queryValueByOrganizationId(orgId).get(); | 
|---|
|  |  |  | Map<String,AlarmSensorLevel> alarmLevelMap = alarmConfigValue.getAlarmLevels(); | 
|---|
|  |  |  | sensorAlarmList = alarmLevelMap.keySet().stream().map(key -> { | 
|---|
|  |  |  | AlarmSensorLevel alarmSensorLevel = alarmLevelMap.get(key); | 
|---|
|  |  |  | JSONObject alarmSensorLevelMap = (JSONObject) JSON.toJSON(alarmSensorLevel); | 
|---|
|  |  |  | alarmSensorLevelMap.put("key",key); | 
|---|
|  |  |  | return alarmSensorLevelMap; | 
|---|
|  |  |  | }).collect(Collectors.toList()); | 
|---|
|  |  |  | Map<String,AlarmSensorLevel> alarmLevelMap = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if(orgId.isPresent()){ | 
|---|
|  |  |  | AlarmConfigValue alarmConfigValue = alarmConfigService.queryValueByOrganizationId(orgId.get()).get(); | 
|---|
|  |  |  | alarmLevelMap = alarmConfigValue.getAlarmLevels(); | 
|---|
|  |  |  | }else if(mpId.isPresent()){ | 
|---|
|  |  |  | AlarmConfig alarmConfig = alarmConfigService.queryByMonitorPointId(mpId.get()).get(); | 
|---|
|  |  |  | alarmLevelMap = alarmConfig.getValue().getAlarmLevels(); | 
|---|
|  |  |  | // 当前非取默认值,未设值将用默认值覆盖 | 
|---|
|  |  |  | if(alarmConfig.getId()!=null){ | 
|---|
|  |  |  | AlarmConfigValue defaultAlarmValue = alarmConfigService.getDefaultAlarmConfigValue(); | 
|---|
|  |  |  | Map<String,AlarmSensorLevel> defaultSensorLevelMap = defaultAlarmValue.getAlarmLevels(); | 
|---|
|  |  |  | Map<String,AlarmSensorLevel> alarmSensorLevelMapNotZO = alarmLevelMap.entrySet().stream().collect( | 
|---|
|  |  |  | HashMap::new, | 
|---|
|  |  |  | (map,entry) -> { | 
|---|
|  |  |  | AlarmSensorLevel alarmSensorLevel = entry.getValue(); | 
|---|
|  |  |  | if(alarmSensorLevel.isEnable()||alarmSensorLevel.isDegressEnable()){ | 
|---|
|  |  |  | map.put(entry.getKey(),entry.getValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | (oMap,nMap) -> { | 
|---|
|  |  |  | oMap.putAll(nMap); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | // 已设置的选项覆盖默认选项 | 
|---|
|  |  |  | defaultSensorLevelMap.putAll(alarmSensorLevelMapNotZO); | 
|---|
|  |  |  | alarmLevelMap = defaultSensorLevelMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(alarmLevelMap!=null){ | 
|---|
|  |  |  | //map to list | 
|---|
|  |  |  | Map<String, AlarmSensorLevel> finalAlarmLevelMap = alarmLevelMap; | 
|---|
|  |  |  | sensorAlarmList = alarmLevelMap.keySet().stream().map(key -> { | 
|---|
|  |  |  | AlarmSensorLevel alarmSensorLevel = finalAlarmLevelMap.get(key); | 
|---|
|  |  |  | Map<String,Object> alarmSensorLevelMap = new HashMap<>(BeanMap.create(alarmSensorLevel)); | 
|---|
|  |  |  | alarmSensorLevelMap.put("key",key); | 
|---|
|  |  |  | return alarmSensorLevelMap; | 
|---|
|  |  |  | }).collect(Collectors.toList()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | return  new ResultBean<>("提供参数有误,未查询到任何数据",ResultBean.FAIL); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | Map<String, Object> err = new LinkedHashMap<String, Object>(); | 
|---|
|  |  |  | 
|---|
|  |  |  | Map pieData = alarmDailyService.getPieData(parameters); | 
|---|
|  |  |  | List<Map<String, Object>> list = (List<Map<String, Object>>) pieData.get(sensorKey); | 
|---|
|  |  |  | return new ResultBean<List<Map<String, Object>>>(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取报警阀值 | 
|---|
|  |  |  | * @param mpid | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @GetMapping("getalevels") | 
|---|
|  |  |  | public ResultBean<Map<String,AlarmSensorLevel>> getAlarmLevelByMonitorPointId(int mpid){ | 
|---|
|  |  |  | AlarmConfig alarmConfig = alarmConfigService.queryByMonitorPointId(mpid).get(); | 
|---|
|  |  |  | Map<String,AlarmSensorLevel> alarmSensorLevelMap = alarmConfig.getValue().getAlarmLevels(); | 
|---|
|  |  |  | // 当前非取默认值,未设值将用默认值覆盖 | 
|---|
|  |  |  | if(alarmConfig.getId()!=null){ | 
|---|
|  |  |  | AlarmConfigValue defaultAlarmValue = alarmConfigService.getDefaultAlarmConfigValue(); | 
|---|
|  |  |  | Map<String,AlarmSensorLevel> defaultSensorLevelMap = defaultAlarmValue.getAlarmLevels(); | 
|---|
|  |  |  | Map<String,AlarmSensorLevel> alarmSensorLevelMapNotZO = alarmSensorLevelMap.entrySet().stream().collect( | 
|---|
|  |  |  | HashMap::new, | 
|---|
|  |  |  | (map,entry) -> { | 
|---|
|  |  |  | AlarmSensorLevel alarmSensorLevel = entry.getValue(); | 
|---|
|  |  |  | if(alarmSensorLevel.isEnable()||alarmSensorLevel.isDegressEnable()){ | 
|---|
|  |  |  | map.put(entry.getKey(),entry.getValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | (oMap,nMap) -> { | 
|---|
|  |  |  | oMap.putAll(nMap); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | // 已设置的选项覆盖默认选项 | 
|---|
|  |  |  | defaultSensorLevelMap.putAll(alarmSensorLevelMapNotZO); | 
|---|
|  |  |  | alarmSensorLevelMap = defaultSensorLevelMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ResultBean<Map<String,AlarmSensorLevel>> resultBean = new ResultBean(); | 
|---|
|  |  |  | resultBean.setCode(ResultBean.SUCCESS); | 
|---|
|  |  |  | resultBean.setData(alarmSensorLevelMap); | 
|---|
|  |  |  | return resultBean; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|