From a04fbfc66c3054c2714bad1796a676306fd2393a Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期四, 09 九月 2021 15:01:04 +0800
Subject: [PATCH] 延迟报警处理

---
 springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java b/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java
index 2d6e071..4839a7f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/netty/NettyServerHandler.java
@@ -1,17 +1,27 @@
 package com.panzhihua.service_property.netty;
 
 import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.common.utlis.StringUtils;
 import com.panzhihua.service_property.dao.ComPropertyAlarmDao;
+import com.panzhihua.service_property.dao.ComPropertyAlarmSettingDao;
+import com.panzhihua.service_property.dao.ComPropertyEquipmentDao;
 import com.panzhihua.service_property.entity.ComPropertyAlarm;
+import com.panzhihua.service_property.entity.ComPropertyAlarmSetting;
+import com.panzhihua.service_property.entity.ComPropertyEquipment;
 import com.panzhihua.service_property.util.MyTools;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import java.time.Duration;
 import java.util.Date;
 
 @Slf4j
@@ -19,6 +29,14 @@
 public class NettyServerHandler extends ChannelInboundHandlerAdapter {
     @Resource
     private ComPropertyAlarmDao comPropertyAlarmDao;
+    @Resource
+    private ComPropertyAlarmSettingDao comPropertyAlarmSettingDao;
+    @Resource
+    private ComPropertyEquipmentDao comPropertyEquipmentDao;
+    @Resource
+    private StringRedisTemplate stringRedisTemplate;
+    @Resource
+    private RabbitTemplate rabbitTemplate;
 
     private static NettyServerHandler nettyServerHandler;
     /**
@@ -67,5 +85,33 @@
     public void init() {
         nettyServerHandler=this;
         nettyServerHandler.comPropertyAlarmDao=this.comPropertyAlarmDao;
+        nettyServerHandler.stringRedisTemplate=this.stringRedisTemplate;
+        nettyServerHandler.rabbitTemplate=this.rabbitTemplate;
+    }
+
+    private void delayAlarm(String serial){
+        int duration=0;
+        if(StringUtils.isNotEmpty(serial)){
+            if (nettyServerHandler.stringRedisTemplate.hasKey(serial)){
+                ComPropertyEquipment comPropertyEquipment= JSONObject.parseObject(nettyServerHandler.stringRedisTemplate.boundValueOps(serial).get(),ComPropertyEquipment.class);
+                if(nettyServerHandler.stringRedisTemplate.hasKey(comPropertyEquipment.getCommunityId().toString())){
+                    duration=Integer.parseInt(nettyServerHandler.stringRedisTemplate.boundValueOps(comPropertyEquipment.getCommunityId().toString()).get());
+                }else{
+                    ComPropertyAlarmSetting comPropertyAlarmSetting=nettyServerHandler.comPropertyAlarmSettingDao.getByCommunityId(comPropertyEquipment.getCommunityId());
+                    duration=comPropertyAlarmSetting.getTriggerTime();
+                    nettyServerHandler.stringRedisTemplate.boundValueOps(comPropertyEquipment.getCommunityId().toString()).set(comPropertyAlarmSetting.getTriggerTime().toString());
+                }
+                nettyServerHandler.stringRedisTemplate.boundValueOps(serial).set(JSONObject.toJSONString(comPropertyEquipment), Duration.ofHours(duration));
+            }
+            else {
+                ComPropertyEquipment comPropertyEquipment=nettyServerHandler.comPropertyEquipmentDao.selectOne(new QueryWrapper<ComPropertyEquipment>().eq("serial_no",serial));
+                nettyServerHandler.stringRedisTemplate.boundValueOps(serial).set(JSONObject.toJSONString(comPropertyEquipment));
+            }
+            int finalDuration = duration;
+            nettyServerHandler.rabbitTemplate.convertAndSend("delayed.queue","delayed.key", message -> {
+                message.getMessageProperties().setDelay(finalDuration);
+                return message;
+            });
+        }
     }
 }

--
Gitblit v1.7.1