于紫祥_1901
2020-12-24 f28149d8183a62f87fa9c8df9ae589070d83f612
src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
@@ -1,30 +1,102 @@
package com.moral.service.impl;
import com.alibaba.fastjson.JSONReader;
import com.alibaba.fastjson.TypeReference;
import com.moral.common.bean.Constants;
import com.moral.common.util.RedisUtils;
import com.moral.entity.MonitorPoint;
import com.moral.entity.alarm.AlarmConfig;
import com.moral.entity.alarm.AlarmConfigValue;
import com.moral.entity.alarm.AlarmMode;
import com.moral.entity.alarm.AlarmSensorLevel;
import com.moral.mapper.AlarmConfigMapper;
import com.moral.service.AlarmConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.session.SessionProperties;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
@Service
public class AlarmConfigServiceImpl implements AlarmConfigService{
    /** 缺省三级警报配置 .*/
    @Value(value = "classpath:system/alarmLevels.json")
    private org.springframework.core.io.Resource resource;
    private static AlarmConfigValue defaultAlarmConfigValue;
    @Autowired
    public AlarmConfigValue getDefaultAlarmConfigValue(){
        if(defaultAlarmConfigValue!=null){
            return defaultAlarmConfigValue;
        }else {
            InputStreamReader reader = null;
            AlarmConfigValue alarmConfigValue = null;
            try {
                reader = new InputStreamReader(resource.getInputStream());
                alarmConfigValue = new JSONReader(reader).readObject(new TypeReference<AlarmConfigValue>() {});
            } catch (IOException e) {
                e.printStackTrace();
            }
            return  alarmConfigValue;
        }
    }
    @Resource
    RedisUtils redisUtils;
    @Resource
    AlarmConfigMapper alarmConfigMapper;
    @Override
    public AlarmConfig SelectByOrganizationId(int organizationId) {
         return alarmConfigMapper.selectByOrganizationId(organizationId);
    public Optional<AlarmConfig> queryValueByOrganizationId(int organizationId) {
        String key = RedisUtils.getAlarmKey(organizationId);
        AlarmConfigValue alarmConfigValue = redisUtils.get(key,new TypeReference<AlarmConfigValue>(){});
        if(alarmConfigValue==null) {
            AlarmConfig alarmConfig = alarmConfigMapper.selectByOrganizationId(organizationId);
            if (alarmConfig != null && alarmConfig.getValue() != null) {
                return Optional.ofNullable(alarmConfig);
            } else {
                alarmConfigValue = getDefaultAlarmConfigValue();
            }
        }
        AlarmConfig alarmConfigNotWithId = new AlarmConfig();
        alarmConfigNotWithId.setValue(alarmConfigValue);
        return Optional.ofNullable(alarmConfigNotWithId);
    }
    @Override
    public Optional<AlarmConfig> queryByOrganizationId(int organizationId) {
        AlarmConfig alarmConfig = alarmConfigMapper.selectByOrganizationId(organizationId);
        if(alarmConfig==null){
            alarmConfig = new AlarmConfig();
            alarmConfig.setValue(getDefaultAlarmConfigValue());
        }
        return Optional.ofNullable(alarmConfig);
    }
    @Override
    public String getValueByOrganizationId(int organizationId) {
        return alarmConfigMapper.getValueByOrganizationId(organizationId);
    }
    @Override
    public Optional<AlarmConfig> queryByMonitorPointId(int mpId) {
        AlarmConfig alarmConfig = alarmConfigMapper.selectByMonitorPointId(mpId);
        if(alarmConfig==null){
            alarmConfig = new AlarmConfig();
            alarmConfig.setValue(getDefaultAlarmConfigValue());
        }
        return Optional.ofNullable(alarmConfig);
    }
    @Override
    public Optional<AlarmConfig> queryByDeviceMac(String mac) {
        AlarmConfig alarmConfig = alarmConfigMapper.selectByDeviceMac(mac);
        if(alarmConfig==null){
            alarmConfig = new AlarmConfig();
            alarmConfig.setValue(getDefaultAlarmConfigValue());
        }
        return Optional.ofNullable(alarmConfig);
    }
    @Override
@@ -45,6 +117,12 @@
            throw  ex;
        }
    }
    @Override
    public int containOrgId(Integer orgId) {
        return alarmConfigMapper.containOrgId(orgId);
    }
    public AlarmConfigValue simplifyAlarmConfigValue(AlarmConfigValue value){
          Map<String,AlarmSensorLevel> alarmSensorLevelMap = value.getAlarmLevels();
          List<String> cleanKeys = new ArrayList<>();