Commit b593c33a authored by xinglei's avatar xinglei

告警页面

parent 8f60f62e
......@@ -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.dao.entity.Alarm;
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.repository.IAlarmRepository;
import com.yeejoin.amos.bank.entity.EquipmentQualityVo;
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.DateTimeKit;
import com.yeejoin.amos.bank.utils.HttpUtil;
import com.yeejoin.amos.bank.utils.JsonUtil;
import com.yeejoin.amos.bank.webSocket.AmosWsClient;
......@@ -38,6 +40,8 @@ import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import static com.yeejoin.amos.bank.constants.AlarmConstant.*;
@Component
public class EquipmentListener extends EmqxListener implements InitializingBean {
......@@ -70,6 +74,9 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
@Autowired
private IAlarmRepository iAlarmDao;
@Autowired
private AlarmMapper alarmMapper;
/**
* 监听主题
*/
......@@ -158,7 +165,7 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
String sourceId = getEqpConfigMapValueByKey(eqpConfigMap, "设备ID");
String eqpName = parseObject.getString("eqpName");
// orgcode
String orgcode = parseObject.getString("orgCode");
String orgCode = parseObject.getString("orgCode");
String authOrg = parseObject.getString("authOrg");
if (ObjectUtils.isEmpty(jsonArray)) {
......@@ -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) {
logger.error("消息流转报错.");
logger.error(e.getMessage(), e);
......@@ -285,55 +297,55 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
* @param eqpId
* @param metricKey
* @param statusByName
* @param orgCode1
* @param orgCode
* @param ipAddress
* @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);
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()));
if (statusByName != 0) {
alarm.setCurrentState("异常");
alarm.setUpdateDate(DateTimeKit.now());
alarm.setOrgCode(orgCode);
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 {
alarm.setCurrentState("正常");
alarm.setCurrentState(ALARM_NORMAL_STATUS);
}
alarm.setQueryColumn(eqpId + metricKey);
alarm.setAlarmSourceType(metricKey);
alarm.setClearPerson(metricKey);
iAlarmDao.save(alarm);
alarmMapper.updateAlarm(alarm);
// }
} else {
Alarm alarm = new Alarm();
alarm.setSourceId(eqpId + "");
alarm.setAlarmLevel("紧急告警");
alarm.setAlarmLevel(ALARM_LEVEL);
alarm.setAlarmReason("");
alarm.setAlarmSourceIp(ipAddress + "");
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.setOrgCode(orgCode);
alarm.setHappenDate(DateTimeKit.now());
alarm.setQueryColumn(eqpId + metricKey);
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 {
String authOrgTemp = JsonUtil.arraysToString(JsonUtil.toStringArray(authOrg));
public void addAlarmMethod(Long eqpId, Integer statusByName, String eqpName, String ipAddress, String metricKey, String orgCode, String sanwei, String lou) throws IOException {
List<AlarmPoint> alarmPoint = alarmPointService.selectPointTypeAndPointId(AlarmPointTypeEnum.设备.getCode(),
eqpId);
if (alarmPoint != null && alarmPoint.size() > 0) {
......@@ -353,10 +365,10 @@ public class EquipmentListener extends EmqxListener implements InitializingBean
alarmPoint1.setPointType(AlarmPointTypeEnum.设备.getCode());
alarmPoint1.setUpdateDate(new Date());
alarmPoint1.setIsAlarm(1);// 不合格
alarmPoint1.setContent(eqpName + "-" + ipAddress + "-" + metricKey);
alarmPoint1.setCode(orgCode);
alarmPoint1.setContent(eqpName + "-" + ipAddress + "," + ALARM_CAUSE);
alarmPoint1.setPointName(eqpName);
alarmPoint1.setAuthOrg(authOrgTemp);
alarmPoint1.setAuthOrg(orgCode);
Map<String, Object> map = new HashMap<>();
map.put("position", sanwei);
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;
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Map;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.yeejoin.amos.bank.dao.entity.Alarm;
import com.yeejoin.amos.op.core.jpa.IBaseRepository;
import org.springframework.transaction.annotation.Transactional;
@Repository("iAlarmDao")
public interface IAlarmRepository extends IBaseRepository<Alarm, String> {
@Query(value="select * from spc_alarm where query_column =?1 AND current_state in ('未确认未清除','已确认未清除','异常')",nativeQuery=true )
public List<Alarm> selectbyqueryColumn(String type);
@Query(value="select * from spc_alarm where query_column =?1 AND current_state in ('未确认未清除','已确认未清除','异常','告警')",nativeQuery=true )
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 )
public List<Object[]> countnum(String code);
}
......@@ -43,7 +43,7 @@ public class spcAlarmServiceImpl extends GenericManagerImpl<Alarm, String> impl
@Override
public List<Alarm> findByQueryColumn(String queryColumn) {
return iAlarmDao.selectbyqueryColumn(queryColumn);
return iAlarmDao.selectByQueryColumn(queryColumn);
}
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