fengxiang
2018-05-10 e2236bdb285884a32b8c58f0873deb603261f4c3
获取 报警levels,提供 mpID监控点id,orgId组织id,皆为可选参数
1 files modified
95 ■■■■ changed files
src/main/java/com/moral/controller/ScreenController.java 95 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ScreenController.java
@@ -7,11 +7,7 @@
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;
@@ -25,6 +21,7 @@
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;
@@ -158,17 +155,49 @@
     * @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>();
@@ -494,41 +523,5 @@
        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;
    }
}