瀏覽代碼

报警定义存储优化,全部改为静态方法调用

zhangqiankun 3 年之前
父節點
當前提交
9f1bee975b

+ 23 - 32
src/main/java/com/persagy/cache/AlarmInfoCache.java

@@ -7,7 +7,6 @@ import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
-import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
 import com.alibaba.fastjson.JSONObject;
@@ -26,7 +25,6 @@ import lombok.extern.slf4j.Slf4j;
  * @since: 2020/10/19 10:57
  * @version: V1.0
  **/
-@Component
 @Slf4j
 public class AlarmInfoCache {
     public static List<String> isolationSystemList = new ArrayList<>();
@@ -34,16 +32,16 @@ public class AlarmInfoCache {
      * 报警定义  <报警定义标识,报警时间状态>
      * 报警定义标识默认为:报警编码-报警对象id
      */
-    private final ConcurrentHashMap<String, AlarmState> alarmStateMap = new ConcurrentHashMap<>();
+    private static ConcurrentHashMap<String, AlarmState> alarmStateMap = new ConcurrentHashMap<>(1024);
     /**
      * 报警定义  <报警定义标识,报警定义详情>
      * 报警定义标识默认为:报警编码-报警对象id
      */
-    private ConcurrentHashMap<String, AlarmDefine> alarmDefineMap = new ConcurrentHashMap<>();
+    private static ConcurrentHashMap<String, AlarmDefine> alarmDefineMap = new ConcurrentHashMap<>(1024);
     /**
      * 信息点-报警定义 <表号-功能号,[报警定义1,报警定义2]>
      */
-    private ConcurrentHashMap<String, List<AlarmDefine>> infoAlarmMap = new ConcurrentHashMap<>();
+    private static ConcurrentHashMap<String, List<AlarmDefine>> infoAlarmMap = new ConcurrentHashMap<>(1024);
 
     /**
      * @param alarmDefine:
@@ -72,7 +70,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/20 17:12
      * @version: V1.0
      */
-    public AlarmState getAlarmState(String definitionId) {
+    public static AlarmState getAlarmState(String definitionId) {
         return alarmStateMap.get(definitionId);
     }
 
@@ -87,7 +85,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/20 17:15
      * @version: V1.0
      */
-    public AlarmState setAlarmState(String definitionId, AlarmState alarmState) {
+    public static AlarmState setAlarmState(String definitionId, AlarmState alarmState) {
         return alarmStateMap.put(definitionId, alarmState);
     }
 
@@ -96,7 +94,7 @@ public class AlarmInfoCache {
      *
      * @return
      */
-    public ConcurrentHashMap<String, AlarmDefine> getAlarmDefineMap() {
+    public static ConcurrentHashMap<String, AlarmDefine> getAlarmDefineMap() {
         return alarmDefineMap;
     }
 
@@ -105,8 +103,8 @@ public class AlarmInfoCache {
      *
      * @return
      */
-    public void setAlarmDefineMap(ConcurrentHashMap<String, AlarmDefine> alarmDefineMap) {
-        this.alarmDefineMap = alarmDefineMap;
+    public static void setAlarmDefineMap(ConcurrentHashMap<String, AlarmDefine> alarmDefineMaps) {
+        alarmDefineMap = alarmDefineMaps;
     }
 
     /**
@@ -114,7 +112,7 @@ public class AlarmInfoCache {
      *
      * @return
      */
-    public ConcurrentHashMap<String, List<AlarmDefine>> getInfoAlarmMap() {
+    public static ConcurrentHashMap<String, List<AlarmDefine>> getInfoAlarmMap() {
         return infoAlarmMap;
     }
 
@@ -123,8 +121,8 @@ public class AlarmInfoCache {
      *
      * @return
      */
-    public void setInfoAlarmMap(ConcurrentHashMap<String, List<AlarmDefine>> infoAlarmMap) {
-        this.infoAlarmMap = infoAlarmMap;
+    public static void setInfoAlarmMap(ConcurrentHashMap<String, List<AlarmDefine>> infoAlarmMaps) {
+        infoAlarmMap = infoAlarmMaps;
     }
 
     /**
@@ -137,7 +135,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/19 14:32
      * @version: V1.0
      */
-    public AlarmDefine getAlarmDefinitionById(String definitionId) {
+    public static AlarmDefine getAlarmDefinitionById(String definitionId) {
         return alarmDefineMap.get(definitionId);
     }
 
@@ -152,15 +150,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/19 14:32
      * @version: V1.0
      */
-    public void putAlarmDefinitionById(String definitionId, AlarmDefine alarmDefine) {
-//        if (alarmDefine.getOpen() == 0) {
-//            log.info("报警定义ID为[{}]已经屏蔽", definitionId);
-//            return;
-//        }
-//        if(AlarmInfoCache.isolationSystemList.contains(alarmDefine.getSystemCode())){
-//            log.info("报警定义ID为[{}]的系统[{}]已经隔离,不产生报警", definitionId, alarmDefine.getSystemCode());
-//            return;
-//        }
+    public static void putAlarmDefinitionById(String definitionId, AlarmDefine alarmDefine) {
         Condition condition = alarmDefine.getCondition();
         List<JSONObject> infoCodes = condition.getInfoCodes();
         if (CollectionUtil.isEmpty(infoCodes)) {
@@ -192,7 +182,7 @@ public class AlarmInfoCache {
         }
     }
 
-    public void putAlarmDefinitionById(AlarmDefine alarmDefine) {
+    public static void putAlarmDefinitionById(AlarmDefine alarmDefine) {
         putAlarmDefinitionById(getAlarmDefineId(alarmDefine), alarmDefine);
     }
 
@@ -202,9 +192,9 @@ public class AlarmInfoCache {
      * @param alarmConfig
      * @date 2022年2月16日 下午4:26:15
      */
-    public void isolationAlarmDefinitionById(JSONObject alarmConfig) {
+    public static void isolationAlarmDefinitionById(JSONObject alarmConfig) {
     	String defineId = getAlarmDefineId(alarmConfig);
-    	AlarmDefine alarmDefine = this.alarmDefineMap.get(defineId);
+    	AlarmDefine alarmDefine = alarmDefineMap.get(defineId);
     	if (alarmDefine == null) {
 			return;
 		}
@@ -231,7 +221,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/19 14:31
      * @version: V1.0
      */
-    public List<AlarmDefine> getAlarmDefinitionIdByMeterFuncId(String meterId, String funcId) {
+    public static List<AlarmDefine> getAlarmDefinitionIdByMeterFuncId(String meterId, String funcId) {
         return infoAlarmMap.get(getKey(meterId, funcId));
     }
 
@@ -247,7 +237,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/19 14:26
      * @version: V1.0
      */
-    public void putAlarmDefinitionIdByMeterFuncId(String meterId, String funcId, AlarmDefine definition) {
+    public static void putAlarmDefinitionIdByMeterFuncId(String meterId, String funcId, AlarmDefine definition) {
         List<AlarmDefine> definitionList = getAlarmDefinitionIdByMeterFuncId(meterId, funcId);
         if (CollectionUtils.isEmpty(definitionList)) {
             definitionList = new ArrayList<>();
@@ -267,7 +257,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/19 14:25
      * @version: V1.0
      */
-    public void clearAllAlarmDefine() {
+    public static void clearAllAlarmDefine() {
         alarmDefineMap.clear();
         infoAlarmMap.clear();
         //清除编译表达式缓存
@@ -284,7 +274,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/26 20:34
      * @version: V1.0
      */
-    public void clearAlarmDefine(AlarmDefine ad) {
+    public static void clearAlarmDefine(AlarmDefine ad) {
         String defineId = getAlarmDefineId(ad);
         AlarmDefine alarmDefine = alarmDefineMap.get(defineId);
         if (!Objects.isNull(alarmDefine)) {
@@ -296,6 +286,7 @@ public class AlarmInfoCache {
                 infoAlarmMap.put(getKey(meterId, funcId), AlarmDefineList.stream().filter(adTmp -> !getAlarmDefineId(adTmp).equals(defineId)).collect(Collectors.toList()));
             });
         }
+        
         alarmDefineMap.remove(defineId);
         alarmStateMap.remove(defineId);
     }
@@ -311,7 +302,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/19 19:54
      * @version: V1.0
      */
-    public boolean hasKey(String meterId, String funcId) {
+    public static boolean hasKey(String meterId, String funcId) {
         return infoAlarmMap.containsKey(getKey(meterId, funcId));
     }
 
@@ -322,7 +313,7 @@ public class AlarmInfoCache {
      * @param funcId
      * @return
      */
-    private String getKey(String meterId, String funcId) {
+    private static String getKey(String meterId, String funcId) {
         return meterId + "-" + funcId;
     }
 

+ 7 - 6
src/main/java/com/persagy/controller/HelloWorld.java

@@ -38,8 +38,6 @@ public class HelloWorld {
     @Autowired
     AlarmHandleService alarmHandleService;
     @Autowired
-    AlarmInfoCache alarmInfoCache;
-    @Autowired
     AlarmRecordRepository alarmRecordRepository;
     @Autowired
     NettyClient nettyClient;
@@ -87,7 +85,7 @@ public class HelloWorld {
             LockUtil.getInstance().lock.unlock();
         }
         AtomicInteger atomicInteger = new AtomicInteger(0);
-        alarmInfoCache.getAlarmDefineMap().entrySet().forEach(entry -> {
+        AlarmInfoCache.getAlarmDefineMap().entrySet().forEach(entry -> {
 //			log.info("[{}]的key:[{}],value:[{}]",atomicInteger.getAndIncrement(),entry.getKey(),entry.getValue());
         });
         return "成功";
@@ -126,12 +124,15 @@ public class HelloWorld {
     	String itemId = jsonObject.getString("itemId");
     	if (StrUtil.isAllNotBlank(objId, itemId)) {
     		String defineId = AlarmInfoCache.getAlarmDefineId(jsonObject);
-    		return alarmInfoCache.getAlarmDefinitionById(defineId);
+    		return AlarmInfoCache.getAlarmDefinitionById(defineId);
 		}
     	
-        ConcurrentHashMap<String, AlarmDefine> alarmDefineMap = alarmInfoCache.getAlarmDefineMap();
+    	JSONObject result = new JSONObject();
+        ConcurrentHashMap<String, AlarmDefine> alarmDefineMap = AlarmInfoCache.getAlarmDefineMap();
         if (ObjectUtil.isNotEmpty(alarmDefineMap)) {
-            return alarmDefineMap;
+        	result.put("count", alarmDefineMap.size());
+        	result.put("alarmDefineMap", alarmDefineMap);
+            return result;
         }
         return new HashMap<>();
     }

+ 23 - 32
src/main/java/com/persagy/kafka/KafkaConsumer.java

@@ -1,7 +1,16 @@
 package com.persagy.kafka;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.TimeInterval;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.kafka.annotation.KafkaListener;
+import org.springframework.kafka.support.Acknowledgment;
+
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.persagy.cache.AlarmInfoCache;
@@ -9,27 +18,12 @@ import com.persagy.constant.CommonConst;
 import com.persagy.entity.AlarmDefine;
 import com.persagy.entity.NettyMessage;
 import com.persagy.entity.ZktAlarmRecordDO;
-import com.persagy.netty.client.NettyClient;
-import com.persagy.repository.AlarmRecordRepository;
-import com.persagy.service.AlarmDefineService;
+import com.persagy.service.IAlarmRecordService;
+import com.persagy.utils.AlarmDefineUtil;
 import com.persagy.utils.LockUtil;
-import io.netty.channel.ChannelHandlerContext;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.kafka.clients.consumer.ConsumerRecord;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.support.Acknowledgment;
-import org.springframework.kafka.support.KafkaHeaders;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * kafak消费
@@ -42,10 +36,7 @@ import java.util.Optional;
 public class KafkaConsumer {
 
     @Autowired
-    private AlarmDefineService alarmDefineService;
-
-    @Autowired
-    private AlarmRecordRepository alarmRecordRepository;
+    private IAlarmRecordService alarmRecordService;
 
     @KafkaListener(topics = {"#{'${topicName}'.split(',')}"}, containerFactory = "listenerContainerFactory")
     public void topicCloudAlarmConsumer(List<ConsumerRecord<?,String>> record, Acknowledgment ack) {
@@ -74,7 +65,7 @@ public class KafkaConsumer {
             });
             List<AlarmDefine> definesList = alarmDefineMessage.getContent();
             if (CollectionUtil.isNotEmpty(definesList)) {
-                alarmDefineService.listSomeAlarmDefine(definesList);
+            	AlarmDefineUtil.listSomeAlarmDefine(definesList);
             }
         } else if (msg.getOpCode() == 8) {
             log.info("-----报警记录id推送----[{}]", msg);
@@ -82,12 +73,12 @@ public class KafkaConsumer {
             if (CollectionUtil.isNotEmpty(content)) {
                 JSONObject parseObject = JSONObject.parseObject(JSONObject.toJSONString(content.get(0)));
                 String defineId = AlarmInfoCache.getAlarmDefineId(parseObject);
-                ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO());
+                ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordService.findById(defineId).orElse(new ZktAlarmRecordDO());
                 zktAlarmRecordDO.setDefinitionId(defineId);
                 zktAlarmRecordDO.setObjId(parseObject.getString("objId"));
                 zktAlarmRecordDO.setItemId(parseObject.getString("itemId"));
                 zktAlarmRecordDO.setAlarmId(parseObject.getString("id"));
-                alarmRecordRepository.save(zktAlarmRecordDO);
+                alarmRecordService.save(zktAlarmRecordDO);
             }
         } else if (msg.getOpCode() == 9) {
             NettyMessage<AlarmDefine> alarmDefineMessage = JSONObject.parseObject(msg.toString(), new TypeReference<NettyMessage<AlarmDefine>>() {
@@ -99,7 +90,7 @@ public class KafkaConsumer {
                     LockUtil.getInstance().setExecute(false);
                     //加个等待,保证正在执行的逻辑执行成功
                     Thread.sleep(4000);
-                    alarmDefineService.listAllAlarmDefine(definesList);
+                    AlarmDefineUtil.listAllAlarmDefine(definesList);
                     LockUtil.getInstance().setExecute(true);
                     LockUtil.getInstance().condition.signalAll();
                 } catch (InterruptedException e) {
@@ -113,7 +104,7 @@ public class KafkaConsumer {
             });
             List<AlarmDefine> definesList = alarmDefineMessage.getContent();
             if (CollectionUtil.isNotEmpty(definesList)) {
-                alarmDefineService.deleteAlarmDefine(definesList);
+            	AlarmDefineUtil.deleteAlarmDefine(definesList);
             }
         } else if (msg.getOpCode() == 11) {
             //更新隔离的系统对象
@@ -127,7 +118,7 @@ public class KafkaConsumer {
             //云端更新报警记录状态
             NettyMessage<JSONObject> alarmDefineMessage = JSONObject.parseObject(msg.toString(), new TypeReference<NettyMessage<JSONObject>>() {});
             List<JSONObject> stateList = alarmDefineMessage.getContent();
-            alarmDefineService.updateAlarmDefine(stateList);
+            alarmRecordService.updateAlarmDefine(stateList);
         }
     }
 

+ 5 - 8
src/main/java/com/persagy/netty/client/CenterChannelInitializer.java

@@ -2,22 +2,19 @@ package com.persagy.netty.client;
 
 import com.persagy.netty.codec.ObjDecoder;
 import com.persagy.netty.codec.ObjEncoder;
-import com.persagy.repository.AlarmRecordRepository;
-import com.persagy.service.AlarmDefineService;
+import com.persagy.service.IAlarmRecordService;
 
 import io.netty.channel.ChannelInitializer;
 import io.netty.channel.socket.SocketChannel;
 
 
 public class CenterChannelInitializer extends ChannelInitializer<SocketChannel> {
-    private final AlarmDefineService alarmDefineService;
     private final NettyClient nettyClient;
-    private final AlarmRecordRepository alarmRecordRepository;
+    private final IAlarmRecordService alarmRecordService;
 
-    public CenterChannelInitializer(AlarmDefineService alarmDefineService, NettyClient nettyClient, AlarmRecordRepository alarmRecordRepository) {
-        this.alarmDefineService = alarmDefineService;
+    public CenterChannelInitializer(NettyClient nettyClient, IAlarmRecordService alarmRecordService) {
         this.nettyClient = nettyClient;
-        this.alarmRecordRepository = alarmRecordRepository;
+        this.alarmRecordService = alarmRecordService;
     }
 
     @Override
@@ -26,7 +23,7 @@ public class CenterChannelInitializer extends ChannelInitializer<SocketChannel>
         //对象传输处理
         channel.pipeline().addLast(new ObjDecoder());
         // 在管道中添加我们自己的接收数据实现方法
-        channel.pipeline().addLast(new CenterClientHandler(alarmDefineService, nettyClient, alarmRecordRepository));
+        channel.pipeline().addLast(new CenterClientHandler(nettyClient, alarmRecordService));
         channel.pipeline().addLast(new ObjEncoder());
     }
 

+ 12 - 14
src/main/java/com/persagy/netty/client/CenterClientHandler.java

@@ -12,8 +12,8 @@ import com.persagy.entity.AlarmDefine;
 import com.persagy.entity.NettyMessage;
 import com.persagy.entity.ZktAlarmRecordDO;
 import com.persagy.job.NettyMessageQueue;
-import com.persagy.repository.AlarmRecordRepository;
-import com.persagy.service.AlarmDefineService;
+import com.persagy.service.IAlarmRecordService;
+import com.persagy.utils.AlarmDefineUtil;
 import com.persagy.utils.LockUtil;
 
 import cn.hutool.core.collection.CollectionUtil;
@@ -30,14 +30,12 @@ public class CenterClientHandler extends SimpleChannelInboundHandler<NettyMessag
     // Reconnect when the server sends nothing for 10 seconds.
     // private static final int READ_TIMEOUT = Integer.parseInt(System.getProperty("readTimeout", "10"));
 
-    private final AlarmDefineService alarmDefineService;
     private final NettyClient nettyClient;
-    private final AlarmRecordRepository alarmRecordRepository;
+    private final IAlarmRecordService alarmRecordService;
 
-    public CenterClientHandler(AlarmDefineService alarmDefineService, NettyClient nettyClient, AlarmRecordRepository alarmRecordRepository) {
-        this.alarmDefineService = alarmDefineService;
+    public CenterClientHandler(NettyClient nettyClient, IAlarmRecordService alarmRecordService) {
         this.nettyClient = nettyClient;
-        this.alarmRecordRepository = alarmRecordRepository;
+        this.alarmRecordService = alarmRecordService;
     }
 
     /**
@@ -99,7 +97,7 @@ public class CenterClientHandler extends SimpleChannelInboundHandler<NettyMessag
             });
             List<AlarmDefine> definesList = AlarmDefineMessage.getContent();
             if (CollectionUtil.isNotEmpty(definesList)) {
-                alarmDefineService.listSomeAlarmDefine(definesList);
+				AlarmDefineUtil.listSomeAlarmDefine(definesList);
             }
         } else if (msg.getOpCode() == 8) {
             log.info("-----报警记录id推送----[{}]", msg);
@@ -107,12 +105,12 @@ public class CenterClientHandler extends SimpleChannelInboundHandler<NettyMessag
             if (CollectionUtil.isNotEmpty(content)) {
                 JSONObject parseObject = JSONObject.parseObject(JSONObject.toJSONString(content.get(0)));
                 String defineId = AlarmInfoCache.getAlarmDefineId(parseObject);
-                ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO());
+                ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordService.findById(defineId).orElse(new ZktAlarmRecordDO());
                 zktAlarmRecordDO.setDefinitionId(defineId);
                 zktAlarmRecordDO.setObjId(parseObject.getString("objId"));
                 zktAlarmRecordDO.setItemId(parseObject.getString("itemId"));
                 zktAlarmRecordDO.setAlarmId(parseObject.getString("id"));
-                alarmRecordRepository.save(zktAlarmRecordDO);
+                alarmRecordService.save(zktAlarmRecordDO);
             }
         } else if (msg.getOpCode() == 9) {
             NettyMessage<AlarmDefine> AlarmDefineMessage = JSONObject.parseObject(msg.toString(), new TypeReference<NettyMessage<AlarmDefine>>() {
@@ -124,7 +122,7 @@ public class CenterClientHandler extends SimpleChannelInboundHandler<NettyMessag
                     LockUtil.getInstance().setExecute(false);
                     //加个等待,保证正在执行的逻辑执行成功
                     Thread.sleep(4000);
-                    alarmDefineService.listAllAlarmDefine(definesList);
+                    AlarmDefineUtil.listAllAlarmDefine(definesList);
                     LockUtil.getInstance().setExecute(true);
                     LockUtil.getInstance().condition.signalAll();
                 } catch (InterruptedException e) {
@@ -138,7 +136,7 @@ public class CenterClientHandler extends SimpleChannelInboundHandler<NettyMessag
             });
             List<AlarmDefine> definesList = AlarmDefineMessage.getContent();
             if (CollectionUtil.isNotEmpty(definesList)) {
-                alarmDefineService.deleteAlarmDefine(definesList);
+            	AlarmDefineUtil.deleteAlarmDefine(definesList);
             }
         } else if (msg.getOpCode() == 11) {
             // 更新隔离的系统对象
@@ -152,12 +150,12 @@ public class CenterClientHandler extends SimpleChannelInboundHandler<NettyMessag
             // 云端更新报警记录状态
             NettyMessage<JSONObject> AlarmStateMessage = JSONObject.parseObject(msg.toString(), new TypeReference<NettyMessage<JSONObject>>() {});
             List<JSONObject> stateList = AlarmStateMessage.getContent();
-            alarmDefineService.updateAlarmDefine(stateList);
+            alarmRecordService.updateAlarmDefine(stateList);
         } else if (msg.getOpCode() == 13) {
             // 报警隔离或取消隔离
             NettyMessage<JSONObject> alarmConfigMessage = JSONObject.parseObject(msg.toString(), new TypeReference<NettyMessage<JSONObject>>() {});
             List<JSONObject> alarmConfigs = alarmConfigMessage.getContent();
-            alarmDefineService.isolationAlarmDefine(alarmConfigs);
+            AlarmDefineUtil.isolationAlarmDefine(alarmConfigs);
         }
         NettyMessage response = new NettyMessage(3);
         response.setRemark("已经收到消息");

+ 12 - 11
src/main/java/com/persagy/netty/client/NettyClient.java

@@ -1,21 +1,25 @@
 package com.persagy.netty.client;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.persagy.constant.CommonConst;
 import com.persagy.entity.NettyMessage;
 import com.persagy.job.NettyMessageQueue;
 import com.persagy.kafka.KafkaProducer;
-import com.persagy.repository.AlarmRecordRepository;
-import com.persagy.service.AlarmDefineService;
+import com.persagy.service.IAlarmRecordService;
+
 import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.*;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelFutureListener;
+import io.netty.channel.ChannelOption;
+import io.netty.channel.EventLoopGroup;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.nio.NioSocketChannel;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 
 @Slf4j
 @Component
@@ -26,10 +30,7 @@ public class NettyClient {
     public Bootstrap bootstrap = new Bootstrap();
     
     @Autowired
-    AlarmDefineService alarmDefineService;
-    
-    @Autowired
-    AlarmRecordRepository alarmRecordRepository;
+    private IAlarmRecordService alarmRecordService;
     
     @Autowired(required = false)
     private KafkaProducer kafkaProducer;
@@ -40,7 +41,7 @@ public class NettyClient {
             bootstrap.group(workerGroup);
             bootstrap.channel(NioSocketChannel.class);
             bootstrap.option(ChannelOption.AUTO_READ, true);
-            bootstrap.handler(new CenterChannelInitializer(alarmDefineService, this, alarmRecordRepository));
+            bootstrap.handler(new CenterChannelInitializer(this, alarmRecordService));
             ChannelFuture f = bootstrap.connect(CommonConst.alarmHost, CommonConst.alarmPort).sync();
             channel = f.channel();
             // f.channel().closeFuture().sync();

+ 0 - 34
src/main/java/com/persagy/service/AlarmDefineService.java

@@ -1,34 +0,0 @@
-package com.persagy.service;
-
-import com.alibaba.fastjson.JSONObject;
-import com.persagy.entity.AlarmDefine;
-
-import java.util.List;
-
-/**
- * @description:报警定义逻辑接口类(项目报警定义全量获取,报警定义添加修改删除同步更新)
- * @author:LuoGuangyi
- * @company:PersagyTechnologyCo.,Ltd
- * @since:2020/10/15 11:22
- * @version:V1.0
- **/
-public interface AlarmDefineService {
-    List listAllAlarmDefine(List<AlarmDefine> definesList);
-
-    void listSomeAlarmDefine(List<AlarmDefine> alarmDefineList);
-
-    void deleteAlarmDefine(List<AlarmDefine> alarmDefineList);
-
-    void updateAlarmDefine(List<JSONObject> alarmDefineList);
-
-    void updateAlarmDefine();
-
-    /**
-     * 隔离或取消隔离报警信息
-     * 
-     * @param alarmConfigs
-     * @date 2022年2月16日 下午4:21:12
-     */
-	void isolationAlarmDefine(List<JSONObject> alarmConfigs);
-	
-}

+ 24 - 0
src/main/java/com/persagy/service/IAlarmRecordService.java

@@ -0,0 +1,24 @@
+package com.persagy.service;
+
+import java.util.List;
+import java.util.Optional;
+
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.entity.ZktAlarmRecordDO;
+
+/**
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2022年2月18日 上午10:06:18
+ */
+public interface IAlarmRecordService {
+
+	void updateAlarmDefine(List<JSONObject> alarmDefineList);
+
+	void save(ZktAlarmRecordDO zktAlarmRecordDO);
+
+	Optional<ZktAlarmRecordDO> findById(String defineId);
+	
+}

+ 0 - 154
src/main/java/com/persagy/service/impl/AlarmDefineServiceImpl.java

@@ -1,154 +0,0 @@
-package com.persagy.service.impl;
-
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.alibaba.fastjson.JSONObject;
-import com.persagy.cache.AlarmInfoCache;
-import com.persagy.entity.AlarmDefine;
-import com.persagy.entity.AlarmState;
-import com.persagy.entity.ExpireAlarmMessage;
-import com.persagy.entity.ZktAlarmRecordDO;
-import com.persagy.job.ExpireAlarmQueue;
-import com.persagy.repository.AlarmRecordRepository;
-import com.persagy.service.AlarmDefineService;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ObjectUtil;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @description:报警定义逻辑实现类(项目报警定义全量获取,报警定义添加修改删除同步更新)
- * @author:LuoGuangyi
- * @company:PersagyTechnologyCo.,Ltd
- * @since:2020/10/15 11:24
- * @version:V1.0
- **/
-@Slf4j
-@Service
-public class AlarmDefineServiceImpl implements AlarmDefineService {
-    
-	@Autowired
-    AlarmInfoCache alarmInfoCache;
-    
-	@Autowired
-    AlarmRecordRepository alarmRecordRepository;
-
-    @Override
-    public List listAllAlarmDefine(List<AlarmDefine> alarmDefineList) {
-    	alarmInfoCache.clearAllAlarmDefine();
-        for (AlarmDefine alarmDefine : alarmDefineList) {
-            alarmInfoCache.putAlarmDefinitionById(alarmDefine);
-        }
-        log.info(String.valueOf(alarmInfoCache));
-        return alarmDefineList;
-    }
-
-    /**
-     * @param alarmDefineList:
-     * @description:批量修改(添加)报警定义 (根据报警条目+对象Id先删除,再添加)
-     * @exception:
-     * @author: LuoGuangyi
-     * @company: Persagy Technology Co.,Ltd
-     * @return: void
-     * @since: 2020/10/26 20:38
-     * @version: V1.0
-     */
-    @Override
-    public void listSomeAlarmDefine(List<AlarmDefine> alarmDefineList) {
-        for (AlarmDefine alarmDefine : alarmDefineList) {
-            alarmInfoCache.clearAlarmDefine(alarmDefine);
-            alarmInfoCache.putAlarmDefinitionById(alarmDefine);
-        }
-    }
-
-    /**
-     * @param alarmDefineList:
-     * @description:根据标号功能号删除报警定义
-     * @exception:
-     * @author: LuoGuangyi
-     * @company: Persagy Technology Co.,Ltd
-     * @return: void
-     * @since: 2020/10/29 18:26
-     * @version: V1.0
-     */
-    @Override
-    public void deleteAlarmDefine(List<AlarmDefine> alarmDefineList) {
-        for (AlarmDefine alarmDefine : alarmDefineList) {
-            alarmInfoCache.clearAlarmDefine(alarmDefine);
-        }
-    }
-
-    @Override
-    public void updateAlarmDefine(List<JSONObject> alarmDefineList) {
-        if (CollectionUtil.isNotEmpty(alarmDefineList)) {
-            for (JSONObject stateItem : alarmDefineList) {
-                String defineId = AlarmInfoCache.getAlarmDefineId(stateItem);
-                AlarmState alarmState = new AlarmState(defineId);
-                String state = stateItem.getString("state");
-                //1:未恢复;2:已恢复;3:已过期
-                //报警状态( 0-正常 1-报警)
-                String newState = "1".equals(state) ? "1" : "0";
-                alarmState.setState(newState);
-                alarmInfoCache.setAlarmState(defineId, alarmState);
-                ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO());
-                zktAlarmRecordDO.setDefinitionId(defineId);
-                zktAlarmRecordDO.setProjectId(stateItem.getString("projectId"));
-                zktAlarmRecordDO.setObjId(stateItem.getString("objId"));
-                zktAlarmRecordDO.setItemCode(stateItem.getString("itemCode"));
-                zktAlarmRecordDO.setItemId(stateItem.getString("itemId"));
-                zktAlarmRecordDO.setState(stateItem.getString("state"));
-                alarmRecordRepository.save(zktAlarmRecordDO);
-                if("2".equals(state)||"3".equals(state)) {
-                    try {
-                        ExpireAlarmMessage em = new ExpireAlarmMessage();
-                        //取消过期消息
-                        em.setType("2");
-                        em.setJobName(defineId);
-                        em.setJobGroupName("expire");
-                        ExpireAlarmQueue.getExpireAlarmMessageQueue().produce(em);
-                        //报警恢复,报警状态重置回默认
-                        alarmState.reset();
-                    }catch (Exception e){
-                        log.error("取消过期定时任务失败",e);
-                    }
-                }
-            }
-        }
-    }
-
-
-    /**
-     * @param
-     * @description: 更新报警定义,把系统隔离的报警全部移除
-     * 因为隔离和屏蔽的报警定义不产生报警,但是要恢复,所以只能实时判断,所有作废
-     * @author: LuoGuangyi
-     * @createTime: 2021/03/25 18:08
-     * @return: void
-     * @expression
-     */
-    @Override
-    @Deprecated
-    public void updateAlarmDefine() {
-        ConcurrentHashMap<String, AlarmDefine> alarmDefineMap = alarmInfoCache.getAlarmDefineMap();
-        if (ObjectUtil.isNotEmpty(alarmDefineMap)) {
-            return;
-        }
-        for (AlarmDefine alarmDefine : alarmDefineMap.values()) {
-            if (AlarmInfoCache.isolationSystemList.contains(alarmDefine.getSystemCode())) {
-                alarmInfoCache.clearAlarmDefine(alarmDefine);
-            }
-        }
-    }
-
-	@Override
-	public void isolationAlarmDefine(List<JSONObject> alarmConfigs) {
-		for (JSONObject alarmConfig : alarmConfigs) {
-			alarmInfoCache.isolationAlarmDefinitionById(alarmConfig);
-        }
-	}
-
-}

+ 11 - 13
src/main/java/com/persagy/service/impl/AlarmHandleServiceImpl.java

@@ -56,8 +56,6 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class AlarmHandleServiceImpl implements AlarmHandleService {
     @Autowired
-    AlarmInfoCache alarmInfoCache;
-    @Autowired
     CurrentDataCache currentDataCache;
     @Autowired
     NettyClient nettyClient;
@@ -97,7 +95,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
             String valueStr = split[i * 4 + 3];
             if (StrUtil.isNotBlank(valueStr)) {
             	double value = Double.parseDouble(valueStr);
-                if (alarmInfoCache.hasKey(meterId, funcId)) {
+                if (AlarmInfoCache.hasKey(meterId, funcId)) {
                     validIotData(dateTime, meterId, funcId, value);
                 }
 			}
@@ -105,7 +103,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
     }
 
     private void validIotData(String dateTime, String meterId, String funcId, double value) throws SchedulerException, InterruptedException {
-        List<AlarmDefine> alarmDefines = alarmInfoCache.getAlarmDefinitionIdByMeterFuncId(meterId, funcId);
+        List<AlarmDefine> alarmDefines = AlarmInfoCache.getAlarmDefinitionIdByMeterFuncId(meterId, funcId);
         for (AlarmDefine alarmDefine : alarmDefines) {
             String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
             synchronized (defineId.intern()) {
@@ -122,7 +120,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
                     }*/
                     String trigger = condition.getTrigger();
                     String end = condition.getEnd();
-                    HashMap paramMap = new HashMap<>();
+                    HashMap<String, Object> paramMap = new HashMap<String, Object>();
                     for (int j = 0; j < codeDetail.size(); j++) {
                         JSONObject code = codeDetail.get(j);
                         paramMap.put(code.getString("infoCode"), currentDataCache.getCurrentData(code.getString("meterId"), code.getString("funcId")));
@@ -135,7 +133,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
                     if (triggerResult && endResult) {
                         log.warn("报警触发条件和报警恢复条件同时满足,请检查,报警定义详情【{}】", alarmDefine.toString());
                     }
-                    AlarmState alarmState = alarmInfoCache.getAlarmState(defineId);
+                    AlarmState alarmState = AlarmInfoCache.getAlarmState(defineId);
                     if (Objects.isNull(alarmState)) {
                         //默认正常报警状态
                         alarmState = new AlarmState(defineId);
@@ -193,17 +191,17 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
      * @since: 2020/10/21 16:46
      * @version: V1.0
      */
-    private void handlerNowDataNormal(AlarmDefine alarmDefine, String dateTime, Condition condition, String defineId, Boolean endResult, AlarmState alarmState, HashMap paramMap, String meterId, String funcId, double value) throws InterruptedException, SchedulerException {
+    private void handlerNowDataNormal(AlarmDefine alarmDefine, String dateTime, Condition condition, String defineId, Boolean endResult, AlarmState alarmState, HashMap<String, Object> paramMap, String meterId, String funcId, double value) throws InterruptedException, SchedulerException {
         //当前数据正常,报警状态为正常:清空之前的报警计时,重置回默认状态
         if (AlarmState.State.NORMAL.getType().equals(alarmState.getState())) {
             alarmState = new AlarmState(defineId);
-            alarmInfoCache.setAlarmState(defineId, alarmState);
+            AlarmInfoCache.setAlarmState(defineId, alarmState);
         } else if (AlarmState.State.NOT_DEAL.getType().equals(alarmState.getState())) {
             handlerNormalWithLock(alarmDefine, dateTime, condition, defineId, endResult, alarmState, paramMap);
         }
     }
 
-    private void handlerNormalWithLock(AlarmDefine alarmDefine, String dateTime, Condition condition, String defineId, Boolean endResult, AlarmState alarmState, HashMap paramMap) throws InterruptedException {
+    private void handlerNormalWithLock(AlarmDefine alarmDefine, String dateTime, Condition condition, String defineId, Boolean endResult, AlarmState alarmState, HashMap<String, Object> paramMap) throws InterruptedException {
         //报警状态异常时候
         alarmState.setLatestDataNormalstate(true);
         //报警恢复条件满足,判断是否满足报警恢复持续时间
@@ -277,7 +275,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
                 alarmState.reset();
             }
         }
-        alarmInfoCache.setAlarmState(defineId, alarmState);
+        AlarmInfoCache.setAlarmState(defineId, alarmState);
     }
 
     /**
@@ -297,7 +295,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
      * @since: 2020/10/20 22:31
      * @version: V1.0
      */
-    private void handlerNowDataAlarm(AlarmDefine alarmDefine, AlarmState alarmState, String dateTime, Condition condition, String defineId, HashMap paramMap, String meterId, String funcId, double value) throws SchedulerException, InterruptedException {
+    private void handlerNowDataAlarm(AlarmDefine alarmDefine, AlarmState alarmState, String dateTime, Condition condition, String defineId, HashMap<String, Object> paramMap, String meterId, String funcId, double value) throws SchedulerException, InterruptedException {
         alarmState.setLatestDataNormalstate(false);
         JSONObject effectTime = condition.getEffectTime();
         //无生效时间设置,则任何时间生效
@@ -332,7 +330,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
             //其他条件全部改成默认值(不报警,不过期,报警开始时间和结束时间为空)
             alarmState.reset();
         }
-        alarmInfoCache.setAlarmState(defineId, alarmState);
+        AlarmInfoCache.setAlarmState(defineId, alarmState);
     }
 
     /**
@@ -351,7 +349,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
      * @return: void
      * @expression
      */
-    private void handlerAlarmWithLock(AlarmDefine alarmDefine, AlarmState alarmState, String dateTime, Condition condition, String defineId, HashMap paramMap, JSONObject effectTime, boolean hasExpire, JSONObject period) throws InterruptedException {
+    private void handlerAlarmWithLock(AlarmDefine alarmDefine, AlarmState alarmState, String dateTime, Condition condition, String defineId, HashMap<String, Object> paramMap, JSONObject effectTime, boolean hasExpire, JSONObject period) throws InterruptedException {
         long timeSecond = 0;
         if (StringUtil.isNotEmpty(alarmState.getAlarmStartTime())) {
             timeSecond = DateUtils.betweenTwoTimeSecond(alarmState.getAlarmStartTime(), dateTime);

+ 83 - 0
src/main/java/com/persagy/service/impl/AlarmRecordService.java

@@ -0,0 +1,83 @@
+package com.persagy.service.impl;
+
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.cache.AlarmInfoCache;
+import com.persagy.entity.AlarmState;
+import com.persagy.entity.ExpireAlarmMessage;
+import com.persagy.entity.ZktAlarmRecordDO;
+import com.persagy.job.ExpireAlarmQueue;
+import com.persagy.repository.AlarmRecordRepository;
+import com.persagy.service.IAlarmRecordService;
+
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2022年2月18日 上午10:06:54
+ */
+@Slf4j
+@Service
+public class AlarmRecordService implements IAlarmRecordService {
+
+	@Autowired
+    private AlarmRecordRepository alarmRecordRepository;
+	
+	@Override
+    public void updateAlarmDefine(List<JSONObject> alarmDefineList) {
+        if (CollectionUtil.isNotEmpty(alarmDefineList)) {
+            for (JSONObject stateItem : alarmDefineList) {
+                String defineId = AlarmInfoCache.getAlarmDefineId(stateItem);
+                AlarmState alarmState = new AlarmState(defineId);
+                String state = stateItem.getString("state");
+                //1:未恢复;2:已恢复;3:已过期
+                //报警状态( 0-正常 1-报警)
+                String newState = "1".equals(state) ? "1" : "0";
+                alarmState.setState(newState);
+                AlarmInfoCache.setAlarmState(defineId, alarmState);
+                ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO());
+                zktAlarmRecordDO.setDefinitionId(defineId);
+                zktAlarmRecordDO.setProjectId(stateItem.getString("projectId"));
+                zktAlarmRecordDO.setObjId(stateItem.getString("objId"));
+                zktAlarmRecordDO.setItemCode(stateItem.getString("itemCode"));
+                zktAlarmRecordDO.setItemId(stateItem.getString("itemId"));
+                zktAlarmRecordDO.setState(stateItem.getString("state"));
+                alarmRecordRepository.save(zktAlarmRecordDO);
+                if("2".equals(state)||"3".equals(state)) {
+                    try {
+                        ExpireAlarmMessage em = new ExpireAlarmMessage();
+                        //取消过期消息
+                        em.setType("2");
+                        em.setJobName(defineId);
+                        em.setJobGroupName("expire");
+                        ExpireAlarmQueue.getExpireAlarmMessageQueue().produce(em);
+                        //报警恢复,报警状态重置回默认
+                        alarmState.reset();
+                    }catch (Exception e){
+                        log.error("取消过期定时任务失败",e);
+                    }
+                }
+            }
+        }
+    }
+
+	@Override
+	public void save(ZktAlarmRecordDO zktAlarmRecordDO) {
+		this.alarmRecordRepository.save(zktAlarmRecordDO);
+	}
+
+	@Override
+	public Optional<ZktAlarmRecordDO> findById(String defineId) {
+		return this.alarmRecordRepository.findById(defineId);
+	}
+	
+}

+ 90 - 0
src/main/java/com/persagy/utils/AlarmDefineUtil.java

@@ -0,0 +1,90 @@
+package com.persagy.utils;
+
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.cache.AlarmInfoCache;
+import com.persagy.entity.AlarmDefine;
+
+import cn.hutool.core.util.ObjectUtil;
+
+/**
+ * @description:报警定义逻辑实现类(项目报警定义全量获取,报警定义添加修改删除同步更新)
+ * @author:LuoGuangyi
+ * @company:PersagyTechnologyCo.,Ltd
+ * @since:2020/10/15 11:24
+ * @version:V1.0
+ **/
+public class AlarmDefineUtil {
+    
+	public static List<AlarmDefine> listAllAlarmDefine(List<AlarmDefine> alarmDefineList) {
+    	AlarmInfoCache.clearAllAlarmDefine();
+        for (AlarmDefine alarmDefine : alarmDefineList) {
+        	AlarmInfoCache.putAlarmDefinitionById(alarmDefine);
+        }
+        return alarmDefineList;
+    }
+
+    /**
+     * @param alarmDefineList:
+     * @description:批量修改(添加)报警定义 (根据报警条目+对象Id先删除,再添加)
+     * @exception:
+     * @author: LuoGuangyi
+     * @company: Persagy Technology Co.,Ltd
+     * @return: void
+     * @since: 2020/10/26 20:38
+     * @version: V1.0
+     */
+    public static void listSomeAlarmDefine(List<AlarmDefine> alarmDefineList) {
+        for (AlarmDefine alarmDefine : alarmDefineList) {
+        	AlarmInfoCache.clearAlarmDefine(alarmDefine);
+        	AlarmInfoCache.putAlarmDefinitionById(alarmDefine);
+        }
+    }
+
+    /**
+     * @param alarmDefineList:
+     * @description:根据标号功能号删除报警定义
+     * @exception:
+     * @author: LuoGuangyi
+     * @company: Persagy Technology Co.,Ltd
+     * @return: void
+     * @since: 2020/10/29 18:26
+     * @version: V1.0
+     */
+    public static void deleteAlarmDefine(List<AlarmDefine> alarmDefineList) {
+        for (AlarmDefine alarmDefine : alarmDefineList) {
+        	AlarmInfoCache.clearAlarmDefine(alarmDefine);
+        }
+    }
+
+    /**
+     * @param
+     * @description: 更新报警定义,把系统隔离的报警全部移除
+     * 因为隔离和屏蔽的报警定义不产生报警,但是要恢复,所以只能实时判断,所有作废
+     * @author: LuoGuangyi
+     * @createTime: 2021/03/25 18:08
+     * @return: void
+     * @expression
+     */
+    @Deprecated
+    public static void updateAlarmDefine() {
+        ConcurrentHashMap<String, AlarmDefine> alarmDefineMap = AlarmInfoCache.getAlarmDefineMap();
+        if (ObjectUtil.isNotEmpty(alarmDefineMap)) {
+            return;
+        }
+        for (AlarmDefine alarmDefine : alarmDefineMap.values()) {
+            if (AlarmInfoCache.isolationSystemList.contains(alarmDefine.getSystemCode())) {
+            	AlarmInfoCache.clearAlarmDefine(alarmDefine);
+            }
+        }
+    }
+
+	public static void isolationAlarmDefine(List<JSONObject> alarmConfigs) {
+		for (JSONObject alarmConfig : alarmConfigs) {
+			AlarmInfoCache.isolationAlarmDefinitionById(alarmConfig);
+        }
+	}
+
+}

+ 1 - 1
src/main/java/com/persagy/utils/DateUtils.java

@@ -35,7 +35,7 @@ public class DateUtils {
     /**
      * 东八区时区偏移量
      */
-    private final static int ASIA_SHANGHAI = 8;
+    //private final static int ASIA_SHANGHAI = 8;
 
     /**
      * LocalDate类型转为Date

+ 2 - 1
src/main/java/com/persagy/utils/StringUtil.java

@@ -409,7 +409,8 @@ public class StringUtil {
         return !isEmpty(obj);
     }
 
-    public static boolean isEmpty(Object obj) {
+    @SuppressWarnings("rawtypes")
+	public static boolean isEmpty(Object obj) {
         if (obj == null) {
             return true;
         }

+ 2 - 2
src/main/resources/application-XGPj5001120003.yml

@@ -12,9 +12,9 @@ remote:
     # 推送消息时,是否会开启压缩,true-压缩 false-不压缩
     compress: false
     # 需要更改
-    host: 192.168.100.102
+    host: 192.168.0.27
     # 需要更改
-    port: 30050
+    port: 8836
 
   # IOT程序
   iot:

+ 13 - 14
src/test/java/com/persagy/zktprojectalarm/Mytest.java

@@ -1,16 +1,5 @@
 package com.persagy.zktprojectalarm;
 
-import com.alibaba.fastjson.JSONObject;
-import com.google.common.base.CaseFormat;
-import com.persagy.ZktProjectAlarmApplication;
-import com.persagy.cache.AlarmInfoCache;
-import com.persagy.entity.AlarmDefine;
-import com.persagy.service.AlarmDefineService;
-import com.persagy.utils.LockUtil;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -18,13 +7,23 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
 
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.base.CaseFormat;
+import com.persagy.ZktProjectAlarmApplication;
+import com.persagy.cache.AlarmInfoCache;
+import com.persagy.entity.AlarmDefine;
+import com.persagy.utils.AlarmDefineUtil;
+import com.persagy.utils.LockUtil;
+
 
 @SpringBootTest(classes = ZktProjectAlarmApplication.class)
 public class Mytest {
 
     @Autowired
-    AlarmDefineService alarmDefineService;
-    @Autowired
     AlarmInfoCache alarmInfoCache;
 
     @Test
@@ -36,7 +35,7 @@ public class Mytest {
 
     @Test
     public void test2() throws Exception {
-        alarmDefineService.listAllAlarmDefine(new ArrayList<>());
+        AlarmDefineUtil.listAllAlarmDefine(new ArrayList<>());
         ConcurrentHashMap<String, AlarmDefine> alarmDefineMap = alarmInfoCache.getAlarmDefineMap();
         for (Map.Entry entry : alarmDefineMap.entrySet()) {
             System.out.println("[key]:" + entry.getKey() + "[value]" + entry.getValue());