Browse Source

集中告警数据推送代码修改

zhongwei
tyty 1 year ago
parent
commit
b99caae820
  1. 2
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/handle/service/DroolsAlarmService.java
  2. 4
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/handle/service/impl/DroolsAlarmServiceImpl.java
  3. 41
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/DroolsMqttConsumer.java
  4. 8
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/FdpMqttConsumer.java
  5. 40
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/HZ300MqttConsumer.java
  6. 68
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/MqttConfig.java
  7. 53
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/fdpMqttConfig.java
  8. 2
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/AlarmService.java
  9. 36
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java
  10. 6
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/task/VideoScheduledTask.java
  11. 60
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/condition/ConditionAlarmRegular.java
  12. 136
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/condition/ConditionAlarmWebSocket.java
  13. 56
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/fdp/FdpAlarmRegular.java
  14. 138
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/fdp/FdpAlarmWebSocket.java
  15. 60
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/hz3000/SystemAlarmRegular.java
  16. 142
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/hz3000/SystemAlarmWebSocket.java
  17. 6
      hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/level/LevelAlarmWebSocket.java

2
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/handle/service/ConditionAlarmService.java → hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/handle/service/DroolsAlarmService.java

@ -8,7 +8,7 @@ import java.util.List;
* 等级处理接口 * 等级处理接口
* @author ysj * @author ysj
*/ */
public interface ConditionAlarmService { public interface DroolsAlarmService {
String message(); String message();

4
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/handle/service/impl/ConditionAlarmServiceImpl.java → hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/handle/service/impl/DroolsAlarmServiceImpl.java

@ -3,7 +3,7 @@ package com.hnac.hzims.alarm.handle.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.hnac.hzims.alarm.entity.AlarmEntity; import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.ConditionAlarmService; import com.hnac.hzims.alarm.handle.service.DroolsAlarmService;
import com.hnac.hzims.alarm.handle.service.MessageService; import com.hnac.hzims.alarm.handle.service.MessageService;
import com.hnac.hzims.alarm.show.service.AlarmService; import com.hnac.hzims.alarm.show.service.AlarmService;
import com.hnac.hzims.alarm.vo.ConditionAlarmVo; import com.hnac.hzims.alarm.vo.ConditionAlarmVo;
@ -31,7 +31,7 @@ import static com.hnac.hzims.alarm.constants.AlarmConstants.CONDITION_ALARM;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class ConditionAlarmServiceImpl implements ConditionAlarmService { public class DroolsAlarmServiceImpl implements DroolsAlarmService {
private final AlarmService alarmService; private final AlarmService alarmService;

41
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/DroolsMqttConsumer.java

@ -0,0 +1,41 @@
package com.hnac.hzims.alarm.mqtt;
import com.alibaba.fastjson.JSONObject;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.DroolsAlarmService;
import com.hnac.hzims.alarm.monitor.service.AlarmSaveService;
import com.hnac.hzinfo.subscribe.SubscribeCallBack;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
*
* @Author: ty
*/
@Service
@Slf4j
public class DroolsMqttConsumer implements SubscribeCallBack {
@Autowired
private DroolsAlarmService droolsAlarmService;
@Autowired
private AlarmSaveService alarmSaveService;
@Override
public void onMessage(Map<String, Object> data) {
System.out.println("监听到消息"+data.toString());
String s = JSONObject.toJSONString(data);
//消费代码
List<AlarmEntity> alarmEntities = droolsAlarmService.receiveMessage(s);
//统一数据处理
try {
alarmSaveService.save(alarmEntities);
}catch (Exception e){
log.error("规则引擎告警数据处理报错(DroolsAlarm):"+e);
System.out.println("规则引擎告警数据处理报错(DroolsAlarm):"+e);
}
}
}

8
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/fdpMqttConsumer.java → hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/FdpMqttConsumer.java

@ -3,7 +3,7 @@ package com.hnac.hzims.alarm.mqtt;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hnac.hzims.alarm.entity.AlarmEntity; import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.FdpAlarmService; import com.hnac.hzims.alarm.handle.service.FdpAlarmService;
import com.hnac.hzims.alarm.show.service.AlarmService; import com.hnac.hzims.alarm.monitor.service.AlarmSaveService;
import com.hnac.hzinfo.subscribe.SubscribeCallBack; import com.hnac.hzinfo.subscribe.SubscribeCallBack;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -18,11 +18,11 @@ import java.util.Map;
*/ */
@Service @Service
public class fdpMqttConsumer implements SubscribeCallBack { public class FdpMqttConsumer implements SubscribeCallBack {
@Autowired @Autowired
private FdpAlarmService fdpAlarmService; private FdpAlarmService fdpAlarmService;
@Autowired @Autowired
private AlarmService alarmService; private AlarmSaveService alarmSaveService;
@Override @Override
public void onMessage(Map<String, Object> data) { public void onMessage(Map<String, Object> data) {
System.out.println("监听到消息"+data.toString()); System.out.println("监听到消息"+data.toString());
@ -32,7 +32,7 @@ public class fdpMqttConsumer implements SubscribeCallBack {
List<AlarmEntity> alarmEntities = fdpAlarmService.receiveMessage(s); List<AlarmEntity> alarmEntities = fdpAlarmService.receiveMessage(s);
//统一数据处理 //统一数据处理
try { try {
alarmService.dealAlarmEntities(alarmEntities); alarmSaveService.save(alarmEntities);
}catch (Exception e){ }catch (Exception e){
throw new ServiceException("集中监控告警数据处理报错(FdpAlarm):"+e); throw new ServiceException("集中监控告警数据处理报错(FdpAlarm):"+e);
} }

40
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/HZ300MqttConsumer.java

@ -0,0 +1,40 @@
package com.hnac.hzims.alarm.mqtt;
import com.alibaba.fastjson.JSONObject;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.SystemAlarmService;
import com.hnac.hzims.alarm.monitor.service.AlarmSaveService;
import com.hnac.hzinfo.subscribe.SubscribeCallBack;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
*
* @Author: ty
*/
@Service
@Slf4j
public class HZ300MqttConsumer implements SubscribeCallBack {
@Autowired
private SystemAlarmService systemAlarmService;
@Autowired
private AlarmSaveService alarmSaveService;
@Override
public void onMessage(Map<String, Object> data) {
System.out.println("监听到消息"+data.toString());
String s = JSONObject.toJSONString(data);
//消费代码
List<AlarmEntity> alarmEntities = systemAlarmService.receiveMessage(s);
//统一数据处理
try {
alarmSaveService.save(alarmEntities);
}catch (Exception e){
log.error("HZ3000告警数据处理报错(HZ300Alarm):"+e);
}
}
}

68
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/MqttConfig.java

@ -0,0 +1,68 @@
package com.hnac.hzims.alarm.mqtt;
import com.hnac.hzinfo.subscribe.AnalysisSubscribe;
import com.hnac.hzinfo.subscribe.DroolsSoeSubscribe;
import com.hnac.hzinfo.subscribe.HZ3000SoeSubscribe;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttAsyncClient;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Collections;
/**
* @Author: ty
*/
@Component
@Slf4j
public class MqttConfig {
@Autowired
FdpMqttConsumer fdpMqttConsumer;
@Autowired
DroolsMqttConsumer droolsMqttConsumer;
@Autowired
HZ300MqttConsumer hz300MqttConsumer;
@Value("${hzims.mqtt.url}")
private String mqtt_fdp_url;
@Value("${hzims.mqtt.group}")
private String mqtt_fdp_group;
@Value("${hzims.mqtt.password}")
private String mqtt_fdp_password;
@Value("${hzims.mqtt.username}")
private String mqtt_fdp_username;
// @Value("${hzims.mqtt.fdp.topname}")
// private String mqtt_fdp_topname;
// @Value("${hzims.mqtt.drools.topname}")
// private String mqtt_drools_topname;
// @Value("${hzims.mqtt.system.topname}")
// private String mqtt_system_topname;
@PostConstruct
public void registerMqtt(){
try {
com.hnac.hzinfo.subscribe.MqttConfig mqttConfig = new com.hnac.hzinfo.subscribe.MqttConfig();
mqttConfig.setUrl(mqtt_fdp_url);
mqttConfig.setGroup(mqtt_fdp_group);
mqttConfig.setPassword(mqtt_fdp_password);
mqttConfig.setUsername(mqtt_fdp_username);
//fdp
AnalysisSubscribe analysisSubscribe = new AnalysisSubscribe();
MqttAsyncClient fdpClient = analysisSubscribe.subscribe(mqttConfig, Collections.singletonList("#"), fdpMqttConsumer);
log.info(fdpClient.toString());
//drools
DroolsSoeSubscribe droolsSoeSubscribe = new DroolsSoeSubscribe();
MqttAsyncClient droolsClient = droolsSoeSubscribe.subscribe(mqttConfig, Collections.singletonList("#"), droolsMqttConsumer);
log.info(droolsClient.toString());
//hz3000
HZ3000SoeSubscribe hz3000SoeSubscribe = new HZ3000SoeSubscribe();
MqttAsyncClient hz3000Client = hz3000SoeSubscribe.subscribe(mqttConfig, Collections.singletonList("#"), hz300MqttConsumer);
log.info(hz3000Client.toString());
}catch (MqttException e){
log.error(e.toString()) ;
}
}
}

53
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/mqtt/fdpMqttConfig.java

@ -1,53 +0,0 @@
package com.hnac.hzims.alarm.mqtt;
import com.hnac.hzinfo.subscribe.AnalysisSubscribe;
import com.hnac.hzinfo.subscribe.MqttConfig;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Collections;
/**
* @Author: ty
*/
@Component
public class fdpMqttConfig {
@Autowired
fdpMqttConsumer fdpMqttConsumer;
/*@Value("${hzims.mqtt.fdp-url}")
private String mqtt_fdp_url;
@Value("${hzims.mqtt.fdp-group}")
private String mqtt_fdp_group;
@Value("${hzims.mqtt.fdp-password}")
private String mqtt_fdp_password;
@Value("${hzims.mqtt.fdp-username}")
private String mqtt_fdp_username;
@Value("${hzims.mqtt.fdp-topname}")
private String mqtt_fdp_topname;*/
@PostConstruct
public void registerMqtt(){
try {
MqttConfig mqttConfig = new MqttConfig();
mqttConfig.setUrl("tcp://175.6.40.68:1883");
mqttConfig.setGroup("hzims-alarm");
mqttConfig.setPassword("hz123456");
mqttConfig.setUsername("hzinfo");
// mqttConfig.setUrl(mqtt_fdp_url);
// mqttConfig.setGroup(mqtt_fdp_group);
// mqttConfig.setPassword(mqtt_fdp_password);
// mqttConfig.setUsername(mqtt_fdp_username);
AnalysisSubscribe analysisSubscribe = new AnalysisSubscribe();
analysisSubscribe.subscribe(mqttConfig, Collections.singletonList("iot/sync/analytics/#"), fdpMqttConsumer);
// analysisSubscribe.subscribe(mqttConfig, mqtt_fdp_topname, fdpMqttConsumer);
}catch (MqttException e){
e.printStackTrace();
}
}
}

2
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/AlarmService.java

@ -17,6 +17,4 @@ public interface AlarmService extends BaseService<AlarmEntity> {
List<AlarmCountVo> counts(); List<AlarmCountVo> counts();
List<AlarmEntity> broadcast(String startTime, String endTime); List<AlarmEntity> broadcast(String startTime, String endTime);
void dealAlarmEntities(List<AlarmEntity> param);
} }

36
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/show/service/impl/AlarmServiceImpl.java

@ -2,7 +2,6 @@ package com.hnac.hzims.alarm.show.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.alarm.config.service.AlarmConfigService; import com.hnac.hzims.alarm.config.service.AlarmConfigService;
import com.hnac.hzims.alarm.constants.AlarmConstants; import com.hnac.hzims.alarm.constants.AlarmConstants;
import com.hnac.hzims.alarm.entity.AlarmEntity; import com.hnac.hzims.alarm.entity.AlarmEntity;
@ -20,7 +19,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient; import org.springblade.system.user.feign.IUserClient;
@ -28,9 +26,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -159,38 +155,6 @@ public class AlarmServiceImpl extends BaseServiceImpl<AlarmMapper, AlarmEntity>
return this.list(wrapper); return this.list(wrapper);
} }
/**
* websocket 消息推送保存
* @param param
*/
@Override
public void dealAlarmEntities(List<AlarmEntity> param) {
if (CollectionUtil.isNotEmpty(param)) {
// 查询当天已经记录的告警
List<AlarmEntity> historys = this.list(Wrappers.<AlarmEntity>lambdaQuery().
ge(AlarmEntity::getCreateTime, DateUtil.format(new Date(), DateUtil.PATTERN_DATE) + " 00:00:00")
.eq(AlarmEntity::getAlarmSource, param.get(0).getAlarmSource()));
// 数据过滤
List<AlarmEntity> entitys = param.stream()
.filter(alarm -> CollectionUtil.isNotEmpty(historys) || !historys.stream().map(AlarmEntity::getAlarmId).collect(Collectors.toList()).contains(alarm.getAlarmId()))
.map(item -> {
//消息推送
// 短信
CompletableFuture.runAsync(() -> messageService.shortMessage(item));
// web/app消息推送
CompletableFuture.runAsync(() -> messageService.webAppMessage(item));
// 微信公众号推送
CompletableFuture.runAsync(() -> messageService.weChatMessage(item));
return item;
}).collect(Collectors.toList());
if (CollectionUtil.isEmpty(entitys)) {
return;
}
// 批量保存
this.saveBatch(entitys);
}
}

6
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/task/VideoScheduledTask.java

@ -2,7 +2,7 @@ package com.hnac.hzims.alarm.task;
import com.hnac.hzims.alarm.entity.AlarmEntity; import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.VideoAlarmService; import com.hnac.hzims.alarm.handle.service.VideoAlarmService;
import com.hnac.hzims.alarm.show.service.AlarmService; import com.hnac.hzims.alarm.monitor.service.AlarmSaveService;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -22,7 +22,7 @@ public class VideoScheduledTask {
@Autowired @Autowired
private VideoAlarmService service; private VideoAlarmService service;
@Autowired @Autowired
private AlarmService alarmService; private AlarmSaveService alarmService;
/** /**
* 设备信息缓存 * 设备信息缓存
@ -37,7 +37,7 @@ public class VideoScheduledTask {
List<AlarmEntity> alarmEntities = service.sendMessage(); List<AlarmEntity> alarmEntities = service.sendMessage();
//获取消息 //获取消息
// List<AlarmEntity> alarmEntities = service.receiveMessage(param); // List<AlarmEntity> alarmEntities = service.receiveMessage(param);
alarmService.dealAlarmEntities(alarmEntities); alarmService.save(alarmEntities);
return new ReturnT<>("SUCCESS"); return new ReturnT<>("SUCCESS");
} }

60
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/condition/ConditionAlarmRegular.java

@ -1,60 +0,0 @@
package com.hnac.hzims.alarm.ws.condition;
import com.hnac.hzims.alarm.handle.service.ConditionAlarmService;
import com.hnac.hzims.alarm.ws.level.LevelAlarmWebSocket;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.net.URI;
/**
* @author ysj
*/
@Slf4j
@Component
@EnableScheduling
public class ConditionAlarmRegular {
@Autowired
private ConditionAlarmService conditionService;
private LevelAlarmWebSocket socket;
@Value("${hzims.condition.wss-url}")
private String condition_wss_url;
// 两分钟进行一次检查链接是否存活,不存活了重新建立链接
@Scheduled(cron = "0 0/2 * * * ?")
private void regular(){
// 检查链接存活状态
if(ObjectUtil.isEmpty(socket) || !socket.isOpen()){
log.error("level websocket survival check : {}","死亡");
this.createSocket();
if(ObjectUtil.isNotEmpty(socket) && socket.isOpen()){
String message = conditionService.message();
if(!StringUtil.isEmpty(message)){
socket.send(message);
}
}
log.error("conditionAlarm survival check : {}","重新建立链接");
}else{
log.error("conditionAlarm survival check : {}","存活");
}
}
// 创建websocket链接
private void createSocket() {
try{
socket = new LevelAlarmWebSocket(new URI(condition_wss_url));
socket.connectBlocking();
}catch (Exception e){
log.error("conditionAlarm create error : {}",e.getMessage());
}
}
}

136
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/condition/ConditionAlarmWebSocket.java

@ -1,136 +0,0 @@
package com.hnac.hzims.alarm.ws.condition;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.ConditionAlarmService;
import com.hnac.hzims.alarm.show.service.AlarmService;
import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringUtil;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.net.Socket;
import java.net.URI;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Optional;
/**
* @author ysj
*/
@Slf4j
public class ConditionAlarmWebSocket extends WebSocketClient {
private final ConditionAlarmService conditionService;
private AlarmService alarmService;
/**
* 构造等级告警websocket
* @param uri
*/
public ConditionAlarmWebSocket(URI uri) {
super(uri);
conditionService = SpringUtil.getBean(ConditionAlarmService.class);
connection(this);
}
// 链接到服务器回调接口
@Override
public void onOpen(ServerHandshake handshakedata) {
log.error("conditionAlarm websocket open");
}
// 接收到服务器消息回调接口
@Override
public void onMessage(String message) {
if(StringUtil.isEmpty(message)){
log.error("conditionAlarm on message is null");
}else{
// 告警数据转化
List<AlarmEntity> alarmEntities = conditionService.receiveMessage(message);
// 等级告警数据处理
try {
alarmService.dealAlarmEntities(alarmEntities);
}catch (Exception e){
throw new ServiceException("集中监控告警数据处理报错(conditionAlarm):"+e);
}
}
}
// 与服务器链接中断回调接口
@Override
public void onClose(int code, String reason, boolean remote) {
log.error("conditionAlarm websocket close");
}
// 与服务器通讯异常触发
@Override
public void onError(Exception e) {
log.error("conditionAlarm websocket error : {}",e.getMessage());
}
/**
* 建立链接
* @param webSocket
*/
private void connection(ConditionAlarmWebSocket webSocket) {
SSLContext context = init();
if(Optional.ofNullable(context).isPresent()){
Socket socket = create(context);
if(Optional.ofNullable(socket).isPresent()){
webSocket.setSocket(socket);
}
}
}
/**
* 创建Socket
* @param context
* @return
*/
private Socket create(SSLContext context) {
Socket socket = null;
try{
socket = context.getSocketFactory().createSocket();
}catch (Exception e){
log.error("conditionAlarm socket create error : {}",e.getMessage());
}
return socket;
}
/**
* 协议初始化
* @return SSLContext
*/
private SSLContext init() {
SSLContext SSL = null;
try{
SSL = SSLContext.getInstance("TLS");
SSL.init(null, new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}}, new SecureRandom());
}catch (Exception e){
log.error("conditionAlarm SSL init error : {}",e.getMessage());
}
return SSL;
}
}

56
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/fdp/FdpAlarmRegular.java

@ -1,56 +0,0 @@
package com.hnac.hzims.alarm.ws.fdp;
import com.hnac.hzims.alarm.handle.service.FdpAlarmService;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.net.URI;
/**
* 等级告警获取数据长链接
* @author ty
*/
@Slf4j
@Component
@EnableScheduling
public class FdpAlarmRegular {
@Value("${hzims.fdp.alarm-url}")
private String fdp_alarm_url;
private FdpAlarmWebSocket client;
@Autowired
private FdpAlarmService fdpAlarmService;
// 定时发送消息
@Scheduled(cron = "0 0/30 * * * ?")
private void regular(){
System.out.println("系统告警链接检查");
// 检查链接存活状态
if(ObjectUtil.isNotEmpty(client) && client.isOpen()){
client.send(fdpAlarmService.sendMessage());
System.out.println("FdpAlarm:链接成功");
}else {
System.out.println("FdpAlarm:链接失败");
this.createClient();
System.out.println("FdpAlarm:重新链接");
}
}
// 创建websocket链接
private void createClient() {
try{
client = new FdpAlarmWebSocket(new URI(fdp_alarm_url));
client.connectBlocking();
System.out.println("FdpAlarm create success");
}catch (Exception e){
log.error("FdpAlarm create error : {}",e.getMessage());
}
}
}

138
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/fdp/FdpAlarmWebSocket.java

@ -1,138 +0,0 @@
package com.hnac.hzims.alarm.ws.fdp;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.FdpAlarmService;
import com.hnac.hzims.alarm.show.service.AlarmService;
import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.net.Socket;
import java.net.URI;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Optional;
/**
* 等级告警获取数据长链接
* @author ty
*/
@Slf4j
public class FdpAlarmWebSocket extends WebSocketClient {
@Autowired
private FdpAlarmService fdpAlarmService;
private AlarmService alarmService;
/**
* 构造等级告警websocket
* @param uri
*/
public FdpAlarmWebSocket(URI uri) {
super(uri);
fdpAlarmService = SpringUtil.getBean(FdpAlarmService.class);
connection(this);
}
// 链接到服务器回调接口
@Override
public void onOpen(ServerHandshake handshakedata) {
log.error("FdpAlarm websocket open");
}
// 接收到服务器消息回调接口
@Override
public void onMessage(String message) {
if(StringUtil.isEmpty(message)){
log.error("FdpAlarm on message is null");
}else{
// 告警数据转化
List<AlarmEntity> alarmEntities = fdpAlarmService.receiveMessage(message);
//统一数据处理
try {
//websocket 消息推送保存
alarmService.dealAlarmEntities(alarmEntities);
}catch (Exception e){
throw new ServiceException("集中监控告警数据处理报错(FdpAlarm):"+e);
}
}
}
// 与服务器链接中断回调接口
@Override
public void onClose(int code, String reason, boolean remote) {
log.error("FdpAlarm websocket close");
}
// 与服务器通讯异常触发
@Override
public void onError(Exception e) {
log.error("FdpAlarm websocket error : {}",e.getMessage());
}
/**
* 建立链接
* @param webSocket
*/
private void connection(FdpAlarmWebSocket webSocket) {
SSLContext context = init();
if(Optional.ofNullable(context).isPresent()){
Socket socket = create(context);
if(Optional.ofNullable(socket).isPresent()){
webSocket.setSocket(socket);
}
}
}
/**
* 创建Socket
* @param context
* @return
*/
private Socket create(SSLContext context) {
Socket socket = null;
try{
socket = context.getSocketFactory().createSocket();
}catch (Exception e){
log.error("FdpAlarm socket create error : {}",e.getMessage());
}
return socket;
}
/**
* 协议初始化
* @return SSLContext
*/
private SSLContext init() {
SSLContext SSL = null;
try{
SSL = SSLContext.getInstance("TLS");
SSL.init(null, new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}}, new SecureRandom());
}catch (Exception e){
log.error("FdpAlarm SSL init error : {}",e.getMessage());
}
return SSL;
}
}

60
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/hz3000/SystemAlarmRegular.java

@ -1,60 +0,0 @@
package com.hnac.hzims.alarm.ws.hz3000;
import com.hnac.hzims.alarm.handle.service.SystemAlarmService;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.net.URI;
/**
* 等级告警获取数据长链接
* @author ty
*/
@Slf4j
@Component
@EnableScheduling
public class SystemAlarmRegular {
@Value("${hzims.system.wss-url}")
private String system_wss_url;
private SystemAlarmWebSocket client;
@Autowired
private SystemAlarmService systemAlarmService;
int count=0;
// 定时发送消息
@Scheduled(cron = "0 0/30 * * * ?")
private void regular(){
// 检查链接存活状态
if(ObjectUtil.isNotEmpty(client) && client.isOpen()){
client.send(systemAlarmService.sendMessage());
System.out.println("systemAlarm:存活");
count=0;
}else {
System.out.println("systemAlarm:链接失败");
this.createClient();
count++;
if (count>=3){
}
}
}
// 创建websocket链接
private void createClient() {
try{
client = new SystemAlarmWebSocket(new URI(system_wss_url));
client.connectBlocking();
System.out.println("systemAlarm create success");
}catch (Exception e){
log.error("systemAlarm create error : {}",e.getMessage());
}
}
}

142
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/hz3000/SystemAlarmWebSocket.java

@ -1,142 +0,0 @@
package com.hnac.hzims.alarm.ws.hz3000;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.SystemAlarmService;
import com.hnac.hzims.alarm.show.service.AlarmService;
import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringUtil;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.net.Socket;
import java.net.URI;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Optional;
/**
* 等级告警获取数据长链接
* @author ty
*/
@Slf4j
public class SystemAlarmWebSocket extends WebSocketClient {
private final SystemAlarmService systemAlarmService;
private AlarmService alarmService;
/**
* 构造等级告警websocket
* @param uri
*/
public SystemAlarmWebSocket(URI uri) {
super(uri);
systemAlarmService = SpringUtil.getBean(SystemAlarmService.class);
connection(this);
}
// 链接到服务器回调接口
@Override
public void onOpen(ServerHandshake handshakedata) {
log.error("SystemAlarmWebSocket链接到服务器回调接口");
}
// 接收到服务器消息回调接口
@Override
public void onMessage(String message) {
if(StringUtil.isEmpty(message)){
log.error("systemAlarm on message is null");
}else{
// 华自3000告警数据转化
List<AlarmEntity> alarmEntities = systemAlarmService.receiveMessage(message);
//统一数据处理
try {
//websocket 消息推送保存
alarmService.dealAlarmEntities(alarmEntities);
}catch (Exception e){
throw new ServiceException("集中监控告警数据处理报错:"+e);
}
log.error("华自3000告警数据处理");
}
}
// 与服务器链接中断回调接口
@Override
public void onClose(int code, String reason, boolean remote) {
log.error("SystemAlarmWebSocket与服务器链接中断回调接口 ");
}
// 与服务器通讯异常触发
@Override
public void onError(Exception e) {
log.error("systemAlarm websocket error : {}",e.getMessage());
}
/**
* 建立链接
* @param webSocket
*/
private void connection(SystemAlarmWebSocket webSocket) {
SSLContext context = init();
if(Optional.ofNullable(context).isPresent()){
Socket socket = create(context);
if(Optional.ofNullable(socket).isPresent()){
webSocket.setSocket(socket);
}
}
System.out.println("systemAlarm create success");
}
/**
* 创建Socket
* @param context
* @return
*/
private Socket create(SSLContext context) {
Socket socket = null;
try{
socket = context.getSocketFactory().createSocket();
log.error("SystemAlarmWebSocket链接创建成功");
}catch (Exception e){
log.error("systemAlarm socket create error : {}",e.getMessage());
}
return socket;
}
/**
* 协议初始化
* @return SSLContext
*/
private SSLContext init() {
SSLContext SSL = null;
try{
SSL = SSLContext.getInstance("TLS");
SSL.init(null, new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}}, new SecureRandom());
log.error("SystemAlarmWebSocket初始化成功");
}catch (Exception e){
log.error("systemAlarm SSL init error : {}",e.getMessage());
}
return SSL;
}
}

6
hzims-service/hzims-alarm/src/main/java/com/hnac/hzims/alarm/ws/level/LevelAlarmWebSocket.java

@ -2,7 +2,7 @@ package com.hnac.hzims.alarm.ws.level;
import com.hnac.hzims.alarm.entity.AlarmEntity; import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.alarm.handle.service.LevelAlarmService; import com.hnac.hzims.alarm.handle.service.LevelAlarmService;
import com.hnac.hzims.alarm.show.service.AlarmService; import com.hnac.hzims.alarm.monitor.service.AlarmSaveService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient; import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake; import org.java_websocket.handshake.ServerHandshake;
@ -29,7 +29,7 @@ public class LevelAlarmWebSocket extends WebSocketClient {
private final LevelAlarmService levelService; private final LevelAlarmService levelService;
private AlarmService alarmService; private AlarmSaveService alarmSaveService;
/** /**
* 构造等级告警websocket * 构造等级告警websocket
@ -59,7 +59,7 @@ public class LevelAlarmWebSocket extends WebSocketClient {
// 等级告警数据处理 // 等级告警数据处理
try { try {
//websocket 消息推送保存 //websocket 消息推送保存
alarmService.dealAlarmEntities(alarmEntities); alarmSaveService.save(alarmEntities);
}catch (Exception e){ }catch (Exception e){
throw new ServiceException("集中监控告警数据处理报错(levelAlarm):"+e); throw new ServiceException("集中监控告警数据处理报错(levelAlarm):"+e);
} }

Loading…
Cancel
Save