From 00e38ff225eb948f5234934afc01aa54c94e0de6 Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Sat, 10 Oct 2020 11:29:36 +0800
Subject: [PATCH] update

---
 src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java |   98 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 85 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
index ff3a361..6ea34b6 100644
--- a/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AlarmConfigServiceImpl.java
@@ -1,30 +1,97 @@
 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 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
@@ -34,7 +101,7 @@
                 alarmConfig.setCreateTime(new Date());
                 alarmConfig.setUpdateTime(new Date());
                 alarmConfigMapper.insertSelective(alarmConfig);
-            }else{
+            }else {
                 alarmConfig.setUpdateTime(new Date());
                 alarmConfigMapper.updateByPrimaryKeySelective(alarmConfig);
             }
@@ -61,13 +128,18 @@
                              alarmSensorLevel.setIncrement(null);
                          }
                      }
-                     List<Float> degressions = alarmSensorLevel.getDegression();
-                     if(degressions!=null){
-                         boolean isDegression =  degressions.size()<3||
-                                 (degressions.get(0)==0&&degressions.get(1)==0&&degressions.get(2)==0);
-                         if(isDegression){
-                             alarmSensorLevel.setDegression(null);
+                     if(alarmSensorLevel.isDegressEnable()){
+                         List<Float> degressions = alarmSensorLevel.getDegression();
+                         if(degressions!=null){
+                             boolean isDegression =  degressions.size()<3||
+                                     (degressions.get(0)==0&&degressions.get(1)==0&&degressions.get(2)==0);
+                             if(isDegression){
+                                 alarmSensorLevel.setDegression(null);
+                             }
                          }
+                     }else{
+                         //���������������������������������
+                         alarmSensorLevel.setDegression(null);
                      }
                  }
           }

--
Gitblit v1.8.0