tyty
1 year ago
16 changed files with 484 additions and 7 deletions
@ -0,0 +1,35 @@ |
|||||||
|
package com.hnac.hzims.alarm.vo; |
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class AlarmHandleMarkVo { |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否集中监控右侧列表展示 : 0-展示 1-不展示") |
||||||
|
private Integer isRightTabulation; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否集中监控弹窗展示 : 0-展示 1-不展示") |
||||||
|
private Integer isShowAlert; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否集中监控铃铛展示 : 0-展示 1-不展示") |
||||||
|
private Integer isSmallBell; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否集中监控遮罩展示 : 0-展示 1-不展示") |
||||||
|
private Integer isMask; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否语音播报 : 0-播报 1-不播报") |
||||||
|
private Integer isBroadcast; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否进行平台消息推送 : 0-推送 1-不推送") |
||||||
|
private Integer isPlatformMessage; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否短信推送 :0-推送 1-不推送") |
||||||
|
private Integer isShortMessage; |
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否微信公众号消息推送 :0-推送 1-不推送") |
||||||
|
private Integer isWxMessage; |
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
package com.hnac.hzims.alarm.monitor.controller; |
||||||
|
|
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import com.hnac.hzims.alarm.entity.AlarmEntity; |
||||||
|
import com.hnac.hzims.alarm.monitor.service.AlarmSaveService; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@AllArgsConstructor |
||||||
|
@RequestMapping("/alarm/test") |
||||||
|
@Api(value = "告警配置", tags = "告警配置") |
||||||
|
public class AlarmTestController extends BladeController { |
||||||
|
|
||||||
|
private final AlarmSaveService alarmSaveService; |
||||||
|
|
||||||
|
@PostMapping("/save") |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "新增告警", notes = "传入AlarmConfigEntity对象") |
||||||
|
public R save(@RequestBody List<AlarmEntity> entitys) { |
||||||
|
return R.status(alarmSaveService.save(entitys)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
package com.hnac.hzims.alarm.monitor.listener; |
||||||
|
|
||||||
|
import com.hnac.hzims.alarm.monitor.service.AlarmMessageSendService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.data.redis.connection.Message; |
||||||
|
import org.springframework.data.redis.connection.MessageListener; |
||||||
|
import org.springframework.data.redis.core.RedisTemplate; |
||||||
|
import org.springframework.data.redis.serializer.RedisSerializer; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
* @version 4.0.0 |
||||||
|
* @create 2023-11-09-14:04 |
||||||
|
*/ |
||||||
|
@Component |
||||||
|
public class AlarmListener implements MessageListener { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private AlarmMessageSendService alarmMessageSendService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private RedisTemplate redisTemplate; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onMessage(Message message, byte[] pattern) { |
||||||
|
RedisSerializer<String> serializer = redisTemplate.getStringSerializer(); |
||||||
|
String msg = serializer.deserialize(message.getBody()); |
||||||
|
System.out.println("接收到的消息是:" + msg); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
package com.hnac.hzims.alarm.monitor.listener; |
||||||
|
|
||||||
|
import com.hnac.hzims.common.config.RedisMessageListener; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.data.redis.connection.RedisConnectionFactory; |
||||||
|
import org.springframework.data.redis.listener.PatternTopic; |
||||||
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer; |
||||||
|
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
* @version 4.0.0 |
||||||
|
* @create 2023-11-09 14:02 |
||||||
|
*/ |
||||||
|
public class QuqueConfig { |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建连接工厂 |
||||||
|
* |
||||||
|
* @param connectionFactory |
||||||
|
* @param adapter |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, |
||||||
|
MessageListenerAdapter adapter) { |
||||||
|
RedisMessageListenerContainer container = new RedisMessageListenerContainer(); |
||||||
|
container.setConnectionFactory(connectionFactory); |
||||||
|
//监听对应的channel
|
||||||
|
container.addMessageListener(adapter, new PatternTopic("alarmchannel")); |
||||||
|
return container; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 绑定消息监听者和接收监听的方法 |
||||||
|
* @param message |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public MessageListenerAdapter adapter(RedisMessageListener message) { |
||||||
|
// onMessage 如果RedisMessage 中 没有实现接口,这个参数必须跟RedisMessage中的读取信息的方法名称一样
|
||||||
|
return new MessageListenerAdapter(message, "onMessage"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
package com.hnac.hzims.alarm.monitor.service; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
public interface AlarmMessageSendService { |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.hnac.hzims.alarm.monitor.service; |
||||||
|
|
||||||
|
import com.hnac.hzims.alarm.entity.AlarmEntity; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
public interface AlarmSaveService { |
||||||
|
|
||||||
|
Boolean save(List<AlarmEntity> alarms); |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.hnac.hzims.alarm.monitor.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.alarm.monitor.service.AlarmMessageSendService; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@AllArgsConstructor |
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class AlarmMessageSendServiceImpl implements AlarmMessageSendService { |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,92 @@ |
|||||||
|
package com.hnac.hzims.alarm.monitor.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.alarm.config.service.AlarmConfigService; |
||||||
|
import com.hnac.hzims.alarm.entity.AlarmEntity; |
||||||
|
import com.hnac.hzims.alarm.monitor.service.AlarmSaveService; |
||||||
|
import com.hnac.hzims.alarm.show.service.AlarmService; |
||||||
|
import com.hnac.hzims.alarm.vo.AlarmHandleMarkVo; |
||||||
|
import com.hnac.hzims.operational.station.entity.StationEntity; |
||||||
|
import com.hnac.hzims.operational.station.feign.IStationClient; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.CollectionUtil; |
||||||
|
import org.springblade.core.tool.utils.ObjectUtil; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.data.redis.core.RedisTemplate; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.PathVariable; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author ysj |
||||||
|
*/ |
||||||
|
@AllArgsConstructor |
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class AlarmSaveServiceImpl implements AlarmSaveService { |
||||||
|
|
||||||
|
private final AlarmService alarmService; |
||||||
|
|
||||||
|
private final AlarmConfigService alarmConfigService; |
||||||
|
|
||||||
|
private final IStationClient stationClient; |
||||||
|
|
||||||
|
private final RedisTemplate redisTemplate; |
||||||
|
|
||||||
|
@GetMapping(value = "pub/{msg}") |
||||||
|
public String pubMsg(@PathVariable String msg){ |
||||||
|
|
||||||
|
return msg; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 告警数据保存 |
||||||
|
* @param alarms |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public Boolean save(List<AlarmEntity> alarms) { |
||||||
|
|
||||||
|
// 步骤1.查询告警数据对应站点
|
||||||
|
R<List<StationEntity>> result = stationClient.querySatationByCodes(alarms.stream().map(AlarmEntity::getStationId).collect(Collectors.toList())); |
||||||
|
if(!result.isSuccess() || CollectionUtil.isEmpty(result.getData())){ |
||||||
|
log.error("alarm query station is null : {}",alarms.stream().map(AlarmEntity::getAlarmId).collect(Collectors.toList())); |
||||||
|
return false; |
||||||
|
} |
||||||
|
// 步骤2.遍历保存告警数据
|
||||||
|
alarms.forEach(alarm->{ |
||||||
|
|
||||||
|
// 步骤3.根据站点查询配置标识
|
||||||
|
AlarmHandleMarkVo mark = alarmConfigService.mark(alarm.getStationId(),alarm.getAlarmSource(),alarm.getAlarmType()); |
||||||
|
if(ObjectUtil.isEmpty(mark)){ |
||||||
|
log.error("alarm obtain mark is null : {}",alarm.getAlarmId()); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
// 步骤4.告警处理标识赋值
|
||||||
|
alarm.setIsRightTabulation(mark.getIsRightTabulation()); |
||||||
|
alarm.setIsBroadcast(mark.getIsBroadcast()); |
||||||
|
alarm.setIsMask(mark.getIsMask()); |
||||||
|
alarm.setIsPlatformMessage(mark.getIsPlatformMessage()); |
||||||
|
alarm.setIsShowAlert(mark.getIsShowAlert()); |
||||||
|
alarm.setIsSmallBell(mark.getIsSmallBell()); |
||||||
|
alarm.setIsShortMessage(mark.getIsShortMessage()); |
||||||
|
alarm.setIsWxMessage(mark.getIsWxMessage()); |
||||||
|
|
||||||
|
// 步骤5.保存当日告警数据
|
||||||
|
boolean isSave = alarmService.save(alarm); |
||||||
|
if(!isSave){ |
||||||
|
log.error("alarm save fail : {}",alarm.getAlarmId()); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
// 步骤6.发生数据至redis告警队列
|
||||||
|
redisTemplate.convertAndSend("alarmchannel",alarm); |
||||||
|
}); |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue