Commit b593c33a authored by xinglei's avatar xinglei

告警页面

parent 8f60f62e
...@@ -9,12 +9,14 @@ import com.yeejoin.amos.bank.common.enums.DevicePointEnum; ...@@ -9,12 +9,14 @@ import com.yeejoin.amos.bank.common.enums.DevicePointEnum;
import com.yeejoin.amos.bank.common.enums.DeviceStatusEnum; import com.yeejoin.amos.bank.common.enums.DeviceStatusEnum;
import com.yeejoin.amos.bank.dao.entity.Alarm; import com.yeejoin.amos.bank.dao.entity.Alarm;
import com.yeejoin.amos.bank.dao.entity.AlarmPoint; import com.yeejoin.amos.bank.dao.entity.AlarmPoint;
import com.yeejoin.amos.bank.dao.mapper.AlarmMapper;
import com.yeejoin.amos.bank.dao.mapper.BankInfoMapper; import com.yeejoin.amos.bank.dao.mapper.BankInfoMapper;
import com.yeejoin.amos.bank.dao.repository.IAlarmRepository; import com.yeejoin.amos.bank.dao.repository.IAlarmRepository;
import com.yeejoin.amos.bank.entity.EquipmentQualityVo; import com.yeejoin.amos.bank.entity.EquipmentQualityVo;
import com.yeejoin.amos.bank.remote.client.RiskModelRemoteClient; import com.yeejoin.amos.bank.remote.client.RiskModelRemoteClient;
import com.yeejoin.amos.bank.service.IAlarmPointService; import com.yeejoin.amos.bank.service.IAlarmPointService;
import com.yeejoin.amos.bank.service.IAlarmService; import com.yeejoin.amos.bank.service.IAlarmService;
import com.yeejoin.amos.bank.utils.DateTimeKit;
import com.yeejoin.amos.bank.utils.HttpUtil; import com.yeejoin.amos.bank.utils.HttpUtil;
import com.yeejoin.amos.bank.utils.JsonUtil; import com.yeejoin.amos.bank.utils.JsonUtil;
import com.yeejoin.amos.bank.webSocket.AmosWsClient; import com.yeejoin.amos.bank.webSocket.AmosWsClient;
...@@ -38,6 +40,8 @@ import java.io.IOException; ...@@ -38,6 +40,8 @@ import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import static com.yeejoin.amos.bank.constants.AlarmConstant.*;
@Component @Component
public class EquipmentListener extends EmqxListener implements InitializingBean { public class EquipmentListener extends EmqxListener implements InitializingBean {
...@@ -70,6 +74,9 @@ public class EquipmentListener extends EmqxListener implements InitializingBean ...@@ -70,6 +74,9 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
@Autowired @Autowired
private IAlarmRepository iAlarmDao; private IAlarmRepository iAlarmDao;
@Autowired
private AlarmMapper alarmMapper;
/** /**
* 监听主题 * 监听主题
*/ */
...@@ -158,7 +165,7 @@ public class EquipmentListener extends EmqxListener implements InitializingBean ...@@ -158,7 +165,7 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
String sourceId = getEqpConfigMapValueByKey(eqpConfigMap, "设备ID"); String sourceId = getEqpConfigMapValueByKey(eqpConfigMap, "设备ID");
String eqpName = parseObject.getString("eqpName"); String eqpName = parseObject.getString("eqpName");
// orgcode // orgcode
String orgcode = parseObject.getString("orgCode"); String orgCode = parseObject.getString("orgCode");
String authOrg = parseObject.getString("authOrg"); String authOrg = parseObject.getString("authOrg");
if (ObjectUtils.isEmpty(jsonArray)) { if (ObjectUtils.isEmpty(jsonArray)) {
...@@ -196,11 +203,16 @@ public class EquipmentListener extends EmqxListener implements InitializingBean ...@@ -196,11 +203,16 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
} }
} }
String authOrgTemp = JsonUtil.arraysToString(JsonUtil.toStringArray(authOrg));
if (!ObjectUtils.isEmpty(authOrgTemp)){
orgCode = authOrgTemp;
}
// 增加报警(跑马灯,首页) // 增加报警(跑马灯,首页)
addAlarmMethod(eqpId, statusByName, eqpName, ipAddress, metricKey, orgcode, sanwei, lou, authOrg); addAlarmMethod(eqpId, statusByName, eqpName, ipAddress, metricKey, orgCode, sanwei, lou);
// 增建告警记录表 // 增建告警记录表
addAlarmRecord(eqpId, metricKey, statusByName, orgcode, ipAddress, eqpName); addAlarmRecord(eqpId, metricKey, statusByName, orgCode, ipAddress, eqpName);
} catch (Exception e) { } catch (Exception e) {
logger.error("消息流转报错."); logger.error("消息流转报错.");
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
...@@ -285,55 +297,55 @@ public class EquipmentListener extends EmqxListener implements InitializingBean ...@@ -285,55 +297,55 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
* @param eqpId * @param eqpId
* @param metricKey * @param metricKey
* @param statusByName * @param statusByName
* @param orgCode1 * @param orgCode
* @param ipAddress * @param ipAddress
* @param eqpName * @param eqpName
*/ */
public void addAlarmRecord(Long eqpId, String metricKey, Integer statusByName, String orgCode1, String ipAddress, String eqpName) { public void addAlarmRecord(Long eqpId, String metricKey, Integer statusByName, String orgCode, String ipAddress, String eqpName) {
List<Alarm> curAlarmList = alarmService.findByQueryColumn(eqpId + metricKey); List<Alarm> curAlarmList = alarmService.findByQueryColumn(eqpId + metricKey);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (curAlarmList != null && curAlarmList.size() > 0) { if (curAlarmList != null && curAlarmList.size() > 0) {
// if("异常".equals(curAlarmList.get(0).getCurrentState())){ // if("异常".equals(curAlarmList.get(0).getCurrentState())){
Alarm alarm = curAlarmList.get(0); Alarm alarm = curAlarmList.get(0);
alarm.setUpdateDate(df.format(new Date())); alarm.setUpdateDate(DateTimeKit.now());
if (statusByName != 0) { alarm.setOrgCode(orgCode);
alarm.setCurrentState("异常"); alarm.setClearPerson(CLEAR_PERSON);
if (!ObjectUtils.isEmpty(alarm.getHappenDate())){
String subtract = DateTimeKit.getSubtract(alarm.getHappenDate());
alarm.setContinueDate(subtract);
}
if (ALARM_ABNORMAL_STATUS.equals(alarm.getCurrentState()) && statusByName != 0) {
alarm.setCurrentState(ALARM_ABNORMAL_STATUS);
} else { } else {
alarm.setCurrentState("正常"); alarm.setCurrentState(ALARM_NORMAL_STATUS);
} }
alarm.setQueryColumn(eqpId + metricKey); alarmMapper.updateAlarm(alarm);
alarm.setAlarmSourceType(metricKey);
alarm.setClearPerson(metricKey);
iAlarmDao.save(alarm);
// } // }
} else { } else {
Alarm alarm = new Alarm(); Alarm alarm = new Alarm();
alarm.setSourceId(eqpId + ""); alarm.setSourceId(eqpId + "");
alarm.setAlarmLevel("紧急告警"); alarm.setAlarmLevel(ALARM_LEVEL);
alarm.setAlarmReason(""); alarm.setAlarmReason("");
alarm.setAlarmSourceIp(ipAddress + ""); alarm.setAlarmSourceIp(ipAddress + "");
alarm.setAlarmSourceName(eqpName); alarm.setAlarmSourceName(eqpName);
alarm.setAlarmSourceType(metricKey); alarm.setAlarmSourceType(metricKey);
alarm.setClearDate(""); alarm.setClearDate("");
alarm.setClearPerson(metricKey);
alarm.setContinueDate(""); alarm.setContinueDate("");
if (statusByName != 0) {
alarm.setCurrentState("异常");
} else {
alarm.setCurrentState("正常");
}
alarm.setEnsureDate(""); alarm.setEnsureDate("");
alarm.setHappenDate(""); alarm.setHappenDate("");
alarm.setEnsurePerson(""); alarm.setEnsurePerson("");
alarm.setOrgCode(orgCode1); alarm.setOrgCode(orgCode);
alarm.setUpdateDate(df.format(new Date())); alarm.setHappenDate(DateTimeKit.now());
alarm.setQueryColumn(eqpId + metricKey); alarm.setQueryColumn(eqpId + metricKey);
iAlarmDao.save(alarm); if (statusByName != 0) {
alarm.setCurrentState(ALARM_ABNORMAL_STATUS);
iAlarmDao.save(alarm);
} else {
alarm.setCurrentState(ALARM_NORMAL_STATUS);
}
} }
} }
public void addAlarmMethod(Long eqpId, Integer statusByName, String eqpName, String ipAddress, String metricKey, String orgCode, String sanwei, String lou, String authOrg) throws IOException { public void addAlarmMethod(Long eqpId, Integer statusByName, String eqpName, String ipAddress, String metricKey, String orgCode, String sanwei, String lou) throws IOException {
String authOrgTemp = JsonUtil.arraysToString(JsonUtil.toStringArray(authOrg));
List<AlarmPoint> alarmPoint = alarmPointService.selectPointTypeAndPointId(AlarmPointTypeEnum.设备.getCode(), List<AlarmPoint> alarmPoint = alarmPointService.selectPointTypeAndPointId(AlarmPointTypeEnum.设备.getCode(),
eqpId); eqpId);
if (alarmPoint != null && alarmPoint.size() > 0) { if (alarmPoint != null && alarmPoint.size() > 0) {
...@@ -353,10 +365,10 @@ public class EquipmentListener extends EmqxListener implements InitializingBean ...@@ -353,10 +365,10 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
alarmPoint1.setPointType(AlarmPointTypeEnum.设备.getCode()); alarmPoint1.setPointType(AlarmPointTypeEnum.设备.getCode());
alarmPoint1.setUpdateDate(new Date()); alarmPoint1.setUpdateDate(new Date());
alarmPoint1.setIsAlarm(1);// 不合格 alarmPoint1.setIsAlarm(1);// 不合格
alarmPoint1.setContent(eqpName + "-" + ipAddress + "-" + metricKey); alarmPoint1.setContent(eqpName + "-" + ipAddress + "," + ALARM_CAUSE);
alarmPoint1.setCode(orgCode);
alarmPoint1.setPointName(eqpName); alarmPoint1.setPointName(eqpName);
alarmPoint1.setAuthOrg(authOrgTemp); alarmPoint1.setAuthOrg(orgCode);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("position", sanwei); map.put("position", sanwei);
map.put("storey", lou); map.put("storey", lou);
......
package com.yeejoin.amos.bank.constants;
/**
* @Author: xinglei
* @Description: 告警常量
* @Date: 2020/6/10 15:47
*/
public class AlarmConstant {
public static String ALARM_CAUSE = "设备Ping不通";
public static String CLEAR_PERSON = "自动清除";
public static String ALARM_LEVEL = "紧急告警";
public static String ALARM_NORMAL_STATUS = "清除";
public static String ALARM_ABNORMAL_STATUS = "告警";
}
package com.yeejoin.amos.bank.dao.mapper;
import com.yeejoin.amos.bank.dao.entity.Alarm;
import com.yeejoin.amos.spc.business.dao.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
public interface AlarmMapper extends BaseMapper {
void updateAlarm(Alarm alarm);
}
package com.yeejoin.amos.bank.dao.repository; package com.yeejoin.amos.bank.dao.repository;
import java.time.ZonedDateTime;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.yeejoin.amos.bank.dao.entity.Alarm; import com.yeejoin.amos.bank.dao.entity.Alarm;
import com.yeejoin.amos.op.core.jpa.IBaseRepository; import com.yeejoin.amos.op.core.jpa.IBaseRepository;
import org.springframework.transaction.annotation.Transactional;
@Repository("iAlarmDao") @Repository("iAlarmDao")
public interface IAlarmRepository extends IBaseRepository<Alarm, String> { public interface IAlarmRepository extends IBaseRepository<Alarm, String> {
@Query(value="select * from spc_alarm where query_column =?1 AND current_state in ('未确认未清除','已确认未清除','异常')",nativeQuery=true ) @Query(value="select * from spc_alarm where query_column =?1 AND current_state in ('未确认未清除','已确认未清除','异常','告警')",nativeQuery=true )
public List<Alarm> selectbyqueryColumn(String type); public List<Alarm> selectByQueryColumn(String type);
@Query(value="select COUNT(*) value,spc_alarm.alarm_level name from spc_alarm where spc_alarm.org_code like CONCAT(?1,'%' ) and spc_alarm.current_state in ('未确认未清除','已确认未清除','异常') GROUP BY spc_alarm.alarm_level ",nativeQuery=true ) @Query(value="select COUNT(*) value,spc_alarm.alarm_level name from spc_alarm where spc_alarm.org_code like CONCAT(?1,'%' ) and spc_alarm.current_state in ('未确认未清除','已确认未清除','异常') GROUP BY spc_alarm.alarm_level ",nativeQuery=true )
public List<Object[]> countnum(String code); public List<Object[]> countnum(String code);
} }
...@@ -43,7 +43,7 @@ public class spcAlarmServiceImpl extends GenericManagerImpl<Alarm, String> impl ...@@ -43,7 +43,7 @@ public class spcAlarmServiceImpl extends GenericManagerImpl<Alarm, String> impl
@Override @Override
public List<Alarm> findByQueryColumn(String queryColumn) { public List<Alarm> findByQueryColumn(String queryColumn) {
return iAlarmDao.selectbyqueryColumn(queryColumn); return iAlarmDao.selectByQueryColumn(queryColumn);
} }
public List<Object[]> countnum(String code) { public List<Object[]> countnum(String code) {
......
package com.yeejoin.amos.bank.utils;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
/**
* @Author: xinglei
* @Description:
* @Date: 2020/6/10 16:31
*/
public class DateTimeKit {
public static final String PATTERN_DEFAULT = "yyyy-MM-dd HH:mm:ss";
public static final String PATTERN_FULL = "yyyy-MM-dd HH:mm:ss SSS";
public static final String PATTERN_DATE = "yyyy-MM-dd";
public static final String PATTERN_TIME = "HH:mm:ss";
public static final String PATTERN_SEQUENCE = "yyyyMMddHHmmssSSS";
public DateTimeKit() {
}
public static String format(ZonedDateTime dateTime) {
return format(dateTime, "yyyy-MM-dd HH:mm:ss");
}
public static String format(ZonedDateTime dateTime, String pattern) {
return dateTime == null ? null : dateTime.format(DateTimeFormatter.ofPattern(pattern));
}
public static String now() {
return format(ZonedDateTime.now());
}
public static String getSubtract(String date) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(PATTERN_DEFAULT).withZone(ZoneId.of("Asia/Shanghai"));
ZonedDateTime startTime = ZonedDateTime.parse(date, dateTimeFormatter);
long day = ChronoUnit.DAYS.between(startTime, ZonedDateTime.now());
long hour = ChronoUnit.HOURS.between(startTime, ZonedDateTime.now());
long minute = ChronoUnit.MINUTES.between(startTime, ZonedDateTime.now());
StringBuffer sb = new StringBuffer();
if (day != 0) {
sb.append(day).append("天");
}
if (hour != 0) {
sb.append(hour%24).append("小时");
}
if (minute != 0) {
sb.append(minute%60).append("分");
}
return sb.toString();
}
public static void main(String[] args) {
String subtract = getSubtract("2020-06-09 17:38:59");
System.out.println(subtract);
}
}
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.bank.dao.mapper.AlarmMapper">
<update id="updateAlarm">
update spc_alarm
<set>
<if test="currentState != null">
current_state = #{currentState},
</if>
<if test="orgCode != null">
org_code = #{orgCode},
</if>
<if test="updateDate != null">
update_date = #{updateDate},
</if>
<if test="clearPerson != null">
clear_person = #{clearPerson},
</if>
<if test="continueDate != null">
continue_date = #{continueDate},
</if>
</set>
where query_column = #{queryColumn}
</update>
</mapper>
\ No newline at end of file
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