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