Commit 051e2d8e authored by tangwei's avatar tangwei

告警通知 告警记录,添加

parent af7bf0e0
......@@ -10,7 +10,8 @@ public enum DeviceEnum {
NET_DEVICE("net_device", "网络设备"),
SERVER("server", "服务器"),
PATROL("patrol", "自动巡检设备");
PATROL("patrol", "自动巡检设备"),
IP_EQUIPMENT("ip_equipment", "IP设备");
DeviceEnum(String type, String desc) {
this.type = type;
......
package com.yeejoin.amos.bank.config;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
......@@ -18,11 +24,19 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yeejoin.amos.bank.TopographyNode;
import com.yeejoin.amos.bank.common.enums.AlarmPointTypeEnum;
import com.yeejoin.amos.bank.common.enums.DeviceStatusEnum;
import com.yeejoin.amos.bank.dao.IDeviceRecord;
import com.yeejoin.amos.bank.dao.entity.Alarm;
import com.yeejoin.amos.bank.dao.entity.AlarmPoint;
import com.yeejoin.amos.bank.dao.repository.IAlarmRepository;
import com.yeejoin.amos.bank.dao.repository.ITopographyLineRepository;
import com.yeejoin.amos.bank.entity.DeviceRecord;
import com.yeejoin.amos.bank.remote.client.RiskModelRemoteClient;
import com.yeejoin.amos.bank.service.IAlarmPointService;
import com.yeejoin.amos.bank.service.IAlarmService;
import com.yeejoin.amos.bank.utils.HttpUtil;
import com.yeejoin.amos.bank.webSocket.WebsocketParam;
import com.yeejoin.amos.spc.business.dao.mapper.EquipmentMapper;
import com.yeejoin.amos.spc.business.remote.RemoteWebSocketServer;
import com.yeejoin.amos.spc.core.util.StringUtil;
......@@ -55,8 +69,13 @@ public class SelfSupportListener extends EmqxListener implements InitializingBea
@Autowired
private RemoteWebSocketServer webSocketServer;
@Autowired
private IAlarmPointService alarmPointService;
@Autowired
private IAlarmService alarmService;
@Autowired
private IAlarmRepository iAlarmDao;
/**
* 监听主题
*/
......@@ -83,6 +102,7 @@ public class SelfSupportListener extends EmqxListener implements InitializingBea
private void blueprintMsgtransfer(MqttMessage mqttMessage) {
try {
String jsonStr = new String(mqttMessage.getPayload());
System.out.println("----supprtmqtt received--jsonStr:" + jsonStr);
// logger.error("----supprtmqtt received--jsonStr",jsonStr);
......@@ -94,15 +114,27 @@ public class SelfSupportListener extends EmqxListener implements InitializingBea
JSONArray eqpConfigMap = parseObject.getJSONArray("eqpConfigMap");
//获取ip
String ipAddress = getIpAddress(eqpConfigMap);
//楼层
String lou =getIpAddress1(eqpConfigMap,"所属楼层");
//3为坐标
String sanwei =getIpAddress1(eqpConfigMap,"三维位置");
String eqpName = parseObject.getString("eqpName");
//orgcode
String orgCode1 = parseObject.getString("orgCode");
if (ObjectUtils.isEmpty(jsonArray)) {
return;
}
jsonArray.forEach(e -> {
//告警信息
String metricKey="";
//默认状态为正常
int statusByName=0 ;
// jsonArray.forEach(e -> {
for (Object e : jsonArray){
JSONObject object = (JSONObject) e;
String string = object.getString("metricJson");
metricKey = object.getString("metricKey");
if (!StringUtil.isNotEmpty(string)) {
return;
}
......@@ -110,16 +142,17 @@ public class SelfSupportListener extends EmqxListener implements InitializingBea
System.out.println("----supprtmqtt chuli recording : "+ string);
//{\"maxTime\":\"1\",\"packetLossRate\":\"0\",\"avgTime\":\"0\",\"minTime\":\"0\",\"发包数\":\"\",\"icmpPackSize\":\"32\",\"status\":\"通\"}
JSONObject metricJson = JSONObject.parseObject(string);
for (Map.Entry entry : metricJson.entrySet()) {
// 指标名
System.out.println("----start chuli device state : "+ entry);
String remark = entry.getKey().toString();
String statusName = entry.getValue().toString();
if (remark.equals("status")) {
DeviceRecord record = new DeviceRecord();
record.setDeviceId(eqpId);
int statusByName = DeviceStatusEnum.getStatusByName(statusName);
statusByName = DeviceStatusEnum.getStatusByName(statusName);
record.setDeviceStatus(statusByName);
record.setMetricData(string);
record.setName(eqpName + " " + ipAddress);
......@@ -139,8 +172,81 @@ public class SelfSupportListener extends EmqxListener implements InitializingBea
}
}
}
});
};
// });
//增加报警
List<AlarmPoint> alarmPoint= alarmPointService.selectPointTypeAndPointId(AlarmPointTypeEnum.设备.getCode(), eqpId);
if(alarmPoint!=null&&alarmPoint.size()>0){
//存在报警,判断当前状态是不是合格,合格则删除上次的报警
if(statusByName==0){
//删除告警
alarmPointService.delete(alarmPoint.get(0));
}
}else{
//不存在,判断当前状态是不是合格,不合格新增,合格不做任何操作
if(statusByName!=0){
//增加告警
AlarmPoint alarmPoint1=new AlarmPoint();
alarmPoint1.setPointId(eqpId);
alarmPoint1.setPointType(AlarmPointTypeEnum.设备.getCode());
alarmPoint1.setUpdateDate(new Date());
alarmPoint1.setIsAlarm(1);//不合格
alarmPoint1.setContent(metricKey);
alarmPoint1.setCode(orgCode1);
alarmPoint1.setPointName(eqpName);
Map<String, Object> map = new HashMap<>();
map.put("position",sanwei);
map.put("storey", lou);
alarmPoint1.setPointAttrs(JSON.toJSONString(map));
alarmPointService.save(alarmPoint1);
//推送告警
List<AlarmPoint> list= alarmPointService.findAll();
WebsocketParam param=new WebsocketParam("alarmPoint", JSON.toJSONString(list));
Properties props = PropertiesLoaderUtils.loadAllProperties("application.properties");
String url = (String) props.get("params.remoteWebsocketUrl") + "/generic/sendMessage";
HttpUtil.PostJson(url, JSON.toJSONString(param));
}
}
//增建告警记录表
//告警记录
List<Alarm> curAlarmList = alarmService.findByQueryColumn(eqpId+metricKey);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (curAlarmList != null && curAlarmList.size() > 0) {
if("异常".equals(curAlarmList.get(0).getCurrentState())){
Alarm alarm = curAlarmList.get(0);
alarm.setUpdateDate(df.format(new Date()));
alarm.setCurrentState(metricKey);
iAlarmDao.save(alarm);
}
} else {
Alarm alarm = new Alarm();
alarm.setSourceId(eqpId+"");
alarm.setAlarmLevel("警告告警");
alarm.setAlarmReason("");
alarm.setAlarmSourceIp(eqpId+"");
alarm.setAlarmSourceName(eqpName);
alarm.setAlarmSourceType(metricKey);
alarm.setClearDate("");
alarm.setClearPerson(metricKey);
alarm.setContinueDate("");
if(statusByName!=0){
alarm.setCurrentState("异常");
}else{
alarm.setCurrentState("正常");
}
alarm.setEnsureDate("");
alarm.setHappenDate("");
alarm.setEnsurePerson("");
alarm.setOrgCode(orgCode1);
alarm.setUpdateDate(df.format(new Date()));
alarm.setQueryColumn(eqpId+metricKey);
iAlarmDao.save(alarm);
}
} catch (Exception e) {
logger.error("消息流转报错.");
logger.error(e.getMessage(), e);
......@@ -148,6 +254,27 @@ public class SelfSupportListener extends EmqxListener implements InitializingBea
}
}
public String getIpAddress1(JSONArray eqpConfigMap,String name) {
//配置信息
if(null != eqpConfigMap && eqpConfigMap.size() > 0) {
for (Object object : eqpConfigMap) {
JSONObject obj = (JSONObject) object;
String str = obj.getString("displayName");
if(str.contains(name)) {
String ip = obj.getString("valueStr");
return ip;
}
}
}
return null;
}
public String getIpAddress(JSONArray eqpConfigMap) {
//配置信息
if(null != eqpConfigMap && eqpConfigMap.size() > 0) {
......
......@@ -90,7 +90,11 @@ public class EquipmentServuceImpl2 implements IEquipmentService {
String netDeviceResStr = deviceService.listByOrgCodeAndModel(orgCode, DeviceEnum.NET_DEVICE.getType());
String serverResStr = deviceService.listByOrgCodeAndModel(orgCode, DeviceEnum.SERVER.getType());
String patrolResStr = deviceService.listByOrgCodeAndModel(orgCode, DeviceEnum.PATROL.getType());
String ipequipmentStr =deviceService.listByOrgCodeAndModel(orgCode, DeviceEnum.IP_EQUIPMENT.getType());
JSONObject ipequipmentStrjson = JSONObject.parseObject(ipequipmentStr);
//String netDeviceResStr = deviceService.deviceDoGet(DeviceUriEnum.根据型号查询设备点, params);
JSONObject netDeviceResJson = JSONObject.parseObject(netDeviceResStr);
......@@ -201,6 +205,43 @@ public class EquipmentServuceImpl2 implements IEquipmentService {
convertNode3DVoResponse(list, patrolResJson, "03");
}
//IP 设备
if (ipequipmentStrjson != null) {
convertNode3DVoResponse(list, ipequipmentStrjson, "04");
}
// Node3DVoResponse node3dVoResponse = new Node3DVoResponse();
// node3dVoResponse.setId("1");
// node3dVoResponse.setKey("equipment-" +"1");
// node3dVoResponse.setLabel("测试");
// node3dVoResponse.setTitle("测试");
// node3dVoResponse.setLevel("04");
// node3dVoResponse.setLevelStr("impEqu_" + "04");
// node3dVoResponse.setObjType("04");
// node3dVoResponse.setObjKey("floor_3");
// node3dVoResponse.setSourceId("1");
// CoordDTO postion = new CoordDTO();
// postion.setX(344.9619516812333);
// postion.setY(93.90619659423828);
// postion.setZ(154.7298426229343);
// node3dVoResponse.setPositionDTO(postion.toString());
// node3dVoResponse.setPosition(postion);
// node3dVoResponse.setRate(0);
// node3dVoResponse.setRotation(new CoordDTO(0d, 0d, 0d));
// node3dVoResponse.setRotationDTO(new CoordDTO(0d, 0d, 0d).toString());
// node3dVoResponse.setScale(new CoordDTO(1d, 1d, 1d));
// node3dVoResponse.setScaleDTO(new CoordDTO(1d, 1d, 1d).toString());
// node3dVoResponse.setShowInfo(false);
// node3dVoResponse.setTwinkle(false);
// node3dVoResponse.setType("impEquipment");
// list.add(node3dVoResponse);
return list;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment