whycxzp
2025-06-12 1757c698bc9f37844d27e6e8f1eaa5232d2d670c
告警产生,加入到巡检实时表;告警是否消失,同步到巡检实时表
10个文件已修改
4个文件已添加
299 ■■■■■ 已修改文件
src/main/java/com/whyc/mapper/AlarmInspectionIdMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattalarmDataMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/DevalarmDataMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/web_site/AlarmInspectionId.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AlarmInspectionIdService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AlarmInspectionService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattalarmDataService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/DevalarmDataService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/PwrdevAlarmService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattalarmDataMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DevalarmDataMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/PwrdevAlarmMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>