src/main/java/com/whyc/mapper/AlarmInspectionIdMapper.java
New file @@ -0,0 +1,6 @@ package com.whyc.mapper; import com.whyc.pojo.web_site.AlarmInspectionId; public interface AlarmInspectionIdMapper extends CustomMapper<AlarmInspectionId>{ } src/main/java/com/whyc/mapper/BattalarmDataMapper.java
@@ -2,10 +2,14 @@ import com.whyc.dto.Real.AlmDto; import com.whyc.pojo.db_alarm.BattalarmData; import com.whyc.pojo.web_site.AlarmInspection; import java.util.List; public interface BattalarmDataMapper extends CustomMapper<BattalarmData>{ //获取电池组实时告警信息 List<BattalarmData> getBattAlmReal(AlmDto almDto); List<AlarmInspection> getListGreatThan(Long battAlarmId); } src/main/java/com/whyc/mapper/DevalarmDataMapper.java
@@ -3,10 +3,13 @@ import com.whyc.dto.Real.AlmDto; import com.whyc.pojo.db_alarm.BattalarmData; import com.whyc.pojo.db_alarm.DevalarmData; import com.whyc.pojo.web_site.AlarmInspection; import java.util.List; public interface DevalarmDataMapper extends CustomMapper<DevalarmData>{ //获取设备实时告警信息 List<DevalarmData> getDevAlmReal(AlmDto almDto); List<AlarmInspection> getListGreatThan(Long devAlarmId); } src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java
@@ -2,10 +2,14 @@ import com.whyc.dto.Real.AlmDto; import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarm; import com.whyc.pojo.web_site.AlarmInspection; import java.util.List; public interface PwrdevAlarmMapper extends CustomMapper<PwrdevAlarm>{ //获取电源实时告警信息 List<PwrdevAlarm> getPwrAlmReal(AlmDto almDto); List<AlarmInspection> getListGreatThan(Long id); } src/main/java/com/whyc/pojo/web_site/AlarmInspectionId.java
New file @@ -0,0 +1,22 @@ package com.whyc.pojo.web_site; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.ToString; /** * 告警巡检模块的告警实时id表,记录已经存入的告警id最大值 * 必须注意: 初始化1条记录,1,0,0,0 */ @ToString @Data @TableName(schema = "web_site",value ="tb_alarm_inspection_id") @ApiModel("告警巡检的告警id标记表") public class AlarmInspectionId { private Integer id; private Long powerAlarmId; private Long devAlarmId; private Long battAlarmId; } src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java
New file @@ -0,0 +1,135 @@ package com.whyc.schedule; import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarm; import com.whyc.pojo.web_site.AlarmInspection; import com.whyc.pojo.web_site.AlarmInspectionId; import com.whyc.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 有两个定时任务:1.告警产生,加入到巡检实时表,2.告警是否消失,同步到巡检实时表 */ @EnableScheduling @Component public class AlarmInspectionSchedule { @Autowired private AlarmInspectionService inspectionService; @Autowired private AlarmInspectionIdService alarmIdService; @Autowired private PwrdevAlarmService powerAlarmService; @Autowired private DevalarmDataService devAlarmService; @Autowired private BattalarmDataService battAlarmService; /** * 数据4秒钟获取一次 * 告警产生,加入到巡检实时表 * */ @Scheduled(cron = "0/4 * * * * ? ") @Transactional public void getAndRecord(){ AlarmInspectionId alarmInspectionId = alarmIdService.get(); List<AlarmInspection> inspectionList = new ArrayList<>(); //查询新的电源告警 List<AlarmInspection> powerAlarmList = powerAlarmService.getListGreatThan(alarmInspectionId.getPowerAlarmId()); //查询新的设备告警 List<AlarmInspection> devAlarmList = devAlarmService.getListGreatThan(alarmInspectionId.getDevAlarmId()); //查询新的电池告警 List<AlarmInspection> battAlarmList = battAlarmService.getListGreatThan(alarmInspectionId.getBattAlarmId()); inspectionList.addAll(powerAlarmList); inspectionList.addAll(devAlarmList); inspectionList.addAll(battAlarmList); if(inspectionList.size() != 0) { //插入到巡检实时表 inspectionService.addBatch(inspectionList); //获取本次截止的告警id,并更新巡检告警的告警id Long powerAlmId = powerAlarmList.get(powerAlarmList.size() - 1).getAlmNum(); Long devAlmId = devAlarmList.get(devAlarmList.size() - 1).getAlmNum(); Long battAlmId = battAlarmList.get(battAlarmList.size() - 1).getAlmNum(); alarmInspectionId.setPowerAlarmId(powerAlmId); alarmInspectionId.setDevAlarmId(devAlmId); alarmInspectionId.setBattAlarmId(battAlmId); alarmIdService.update(alarmInspectionId); } } /** * 数据4秒钟获取一次 * 告警是否消失,同步到巡检实时表 * */ @Scheduled(cron = "0/4 * * * * ? ") public void checkAlarm(){ List<AlarmInspection> alarmExistList =inspectionService.getAlarmExistList(); //按电源,设备,电池告警进行分类,再分别进行查询 List<AlarmInspection> powerAlarmInspectionList = alarmExistList.stream().filter(alarmInspection -> alarmInspection.getType() == 1).collect(Collectors.toList()); List<Long> powerAlarmNumList = powerAlarmInspectionList.stream().map(AlarmInspection::getAlmNum).collect(Collectors.toList()); List<AlarmInspection> devAlarmInspectionList = alarmExistList.stream().filter(alarmInspection -> alarmInspection.getType() == 2).collect(Collectors.toList()); List<Long> devAlarmNumList = devAlarmInspectionList.stream().map(AlarmInspection::getAlmNum).collect(Collectors.toList()); List<AlarmInspection> battAlarmInspectionList = alarmExistList.stream().filter(alarmInspection -> alarmInspection.getType() == 3).collect(Collectors.toList()); List<Long> battAlarmNumList = battAlarmInspectionList.stream().map(AlarmInspection::getAlmNum).collect(Collectors.toList()); //告警消失了的巡检实时表id List<Long> notExistIdList = new ArrayList<>(); if(powerAlarmNumList.size() != 0){ //查询id是否还存在 List<Long> powerNumListInDB = powerAlarmService.getNumListInDB(powerAlarmNumList); for (AlarmInspection alarm : powerAlarmInspectionList) { Long almNum = alarm.getAlmNum(); if(!powerNumListInDB.contains(almNum)){ notExistIdList.add(alarm.getId()); } } } if(devAlarmNumList.size() != 0){ //查询id是否还存在 List<Long> devNumListInDB = devAlarmService.getNumListInDB(devAlarmNumList); for (AlarmInspection alarm : devAlarmInspectionList) { Long almNum = alarm.getAlmNum(); if(!devNumListInDB.contains(almNum)){ notExistIdList.add(alarm.getId()); } } } if(battAlarmNumList.size() != 0){ //查询id是否还存在 List<Long> battNumListInDB = battAlarmService.getNumListInDB(battAlarmNumList); for (AlarmInspection alarm : battAlarmInspectionList) { Long almNum = alarm.getAlmNum(); if(!battNumListInDB.contains(almNum)){ notExistIdList.add(alarm.getId()); } } } if(notExistIdList.size() != 0){ //更新巡检实时表 inspectionService.updateIsExist(notExistIdList); } } } src/main/java/com/whyc/service/AlarmInspectionIdService.java
New file @@ -0,0 +1,23 @@ package com.whyc.service; import com.whyc.mapper.AlarmInspectionIdMapper; import com.whyc.pojo.web_site.AlarmInspectionId; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class AlarmInspectionIdService { @Resource private AlarmInspectionIdMapper mapper; public AlarmInspectionId get(){ return mapper.selectById(1); } public void update(AlarmInspectionId inspectionId){ mapper.updateById(inspectionId); } } src/main/java/com/whyc/service/AlarmInspectionService.java
@@ -1,5 +1,7 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.whyc.constant.BattSingalIdEnum; import com.whyc.constant.DevAlarmEnum; import com.whyc.constant.PowerAlarmEnum; @@ -121,4 +123,22 @@ return new Response().set(1,true,"提交完成"); } public void addBatch(List<AlarmInspection> inspectionList) { mapper.insertBatchSomeColumn(inspectionList); } public List<AlarmInspection> getAlarmExistList() { QueryWrapper<AlarmInspection> query = Wrappers.query(); query.eq("is_exist",1); return mapper.selectList(query); } public void updateIsExist(List<Long> notExistIdList) { QueryWrapper<AlarmInspection> query = Wrappers.query(); query.in("id",notExistIdList); AlarmInspection alarmInspection = new AlarmInspection(); alarmInspection.setIsExist(0); mapper.update(alarmInspection,query); } } src/main/java/com/whyc/service/BattalarmDataService.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.constant.BattAlarmIdEnum; @@ -11,6 +12,7 @@ import com.whyc.dto.Response; import com.whyc.mapper.BattalarmDataMapper; import com.whyc.pojo.db_alarm.BattalarmData; import com.whyc.pojo.web_site.AlarmInspection; import com.whyc.util.ActionUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,6 +21,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class BattalarmDataService { @@ -58,4 +61,22 @@ Map<Integer,String> map= BattAlarmIdEnum.getOpInfo(); return new Response().setII(1,true,map,"获取电池告警类型(下拉)"); } public List<AlarmInspection> getListGreatThan(Long battAlarmId) { List<AlarmInspection> listGreatThan = mapper.getListGreatThan(battAlarmId); Date now = new Date(); listGreatThan.forEach(data->{ data.setType(3); data.setIsExist(1); data.setCreateTime(now); }); return listGreatThan; } public List<Long> getNumListInDB(List<Long> battAlarmNumList) { QueryWrapper<BattalarmData> query = Wrappers.query(); query.select("num"); query.in("num",battAlarmNumList); return mapper.selectList(query).stream().map(BattalarmData::getNum).collect(Collectors.toList()); } } src/main/java/com/whyc/service/DevalarmDataService.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.constant.BattAlarmIdEnum; @@ -11,6 +12,7 @@ import com.whyc.dto.Response; import com.whyc.mapper.DevalarmDataMapper; import com.whyc.pojo.db_alarm.DevalarmData; import com.whyc.pojo.web_site.AlarmInspection; import com.whyc.util.ActionUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,6 +21,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class DevalarmDataService { @@ -58,4 +61,22 @@ Map<Integer,String> map= DevAlarmEnum.getOpInfo(); return new Response().setII(1,true,map,"获取设备告警类型(下拉)"); } public List<AlarmInspection> getListGreatThan(Long devAlarmId) { List<AlarmInspection> listGreatThan = mapper.getListGreatThan(devAlarmId); Date now = new Date(); listGreatThan.forEach(data->{ data.setType(2); data.setIsExist(1); data.setCreateTime(now); }); return listGreatThan; } public List<Long> getNumListInDB(List<Long> devAlarmNumList) { QueryWrapper<DevalarmData> query = Wrappers.query(); query.select("num"); query.in("num",devAlarmNumList); return mapper.selectList(query).stream().map(DevalarmData::getNum).collect(Collectors.toList()); } } src/main/java/com/whyc/service/PwrdevAlarmService.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.constant.DevAlarmEnum; @@ -11,6 +12,7 @@ import com.whyc.mapper.PwrdevAlarmMapper; import com.whyc.pojo.db_alarm.DevalarmData; import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarm; import com.whyc.pojo.web_site.AlarmInspection; import com.whyc.util.ActionUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,6 +21,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class PwrdevAlarmService { @@ -58,4 +61,22 @@ Map<String,Map<Integer,String>> map= PowerAlarmEnum.getOpInfo(); return new Response().setII(1,true,map,"获取电源告警类型(下拉)"); } public List<AlarmInspection> getListGreatThan(Long id) { List<AlarmInspection> listGreatThan = mapper.getListGreatThan(id); Date now = new Date(); listGreatThan.forEach(data->{ data.setType(1); data.setIsExist(1); data.setCreateTime(now); }); return listGreatThan; } public List<Long> getNumListInDB(List<Long> powerAlarmNumList) { QueryWrapper<PwrdevAlarm> query = Wrappers.query(); query.select("num"); query.in("num",powerAlarmNumList); return mapper.selectList(query).stream().map(PwrdevAlarm::getNum).collect(Collectors.toList()); } } src/main/resources/mapper/BattalarmDataMapper.xml
@@ -44,4 +44,11 @@ </where> </select> <select id="getListGreatThan" resultType="com.whyc.pojo.web_site.AlarmInspection"> select bd.mon_num,bd.alm_signal_id as alm_id,bd.alm_id as alm_id_origin,bd.alm_level,bd.alm_start_time, bd.num as alm_num,bi.battgroup_id,bi.battgroup_name,bi.dev_id,bi.dev_name,si.station_id,si.station_name from db_alarm.tb_battalarm_data bd,db_station.tb_batt_inf bi,db_station.tb_station_inf si where bd.battgroup_id=bi.battgroup_id and bi.station_id=si.station_id and bd.num>#{id} </select> </mapper> src/main/resources/mapper/DevalarmDataMapper.xml
@@ -43,4 +43,10 @@ </where> </select> <select id="getListGreatThan" resultType="com.whyc.pojo.web_site.AlarmInspection"> select distinct dd.*,dd.num as alm_num,bi.dev_id,bi.dev_name,si.station_id,si.station_name from db_alarm.tb_devalarm_data dd,db_station.tb_batt_inf bi,db_station.tb_station_inf si where dd.dev_id=bi.dev_id and bi.station_id=si.station_id and dd.num>#{id} </select> </mapper> src/main/resources/mapper/PwrdevAlarmMapper.xml
@@ -44,4 +44,10 @@ </where> </select> <select id="getListGreatThan" resultType="com.whyc.pojo.web_site.AlarmInspection"> select pa.*,pa.num as alm_num,pi.power_name,pi.power_id,si.station_id,si.station_name from db_pwrdev_alarm.tb_pwrdev_alarm pa,db_station.tb_power_inf pi,db_station.tb_station_inf si where pa.power_id=pi.power_id and pi.station_id=si.station_id and pa.num>#{id} </select> </mapper>