From 1757c698bc9f37844d27e6e8f1eaa5232d2d670c Mon Sep 17 00:00:00 2001 From: whycxzp <glperry@163.com> Date: 星期四, 12 六月 2025 18:29:52 +0800 Subject: [PATCH] 告警产生,加入到巡检实时表;告警是否消失,同步到巡检实时表 --- src/main/java/com/whyc/mapper/DevalarmDataMapper.java | 3 src/main/java/com/whyc/service/BattalarmDataService.java | 21 ++++ src/main/resources/mapper/BattalarmDataMapper.xml | 7 + src/main/java/com/whyc/pojo/web_site/AlarmInspectionId.java | 22 ++++ src/main/java/com/whyc/mapper/AlarmInspectionIdMapper.java | 6 + src/main/resources/mapper/PwrdevAlarmMapper.xml | 6 + src/main/java/com/whyc/mapper/BattalarmDataMapper.java | 4 src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java | 4 src/main/java/com/whyc/service/AlarmInspectionService.java | 20 ++++ src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java | 135 +++++++++++++++++++++++++++ src/main/java/com/whyc/service/DevalarmDataService.java | 21 ++++ src/main/java/com/whyc/service/AlarmInspectionIdService.java | 23 ++++ src/main/resources/mapper/DevalarmDataMapper.xml | 6 + src/main/java/com/whyc/service/PwrdevAlarmService.java | 21 ++++ 14 files changed, 299 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/whyc/mapper/AlarmInspectionIdMapper.java b/src/main/java/com/whyc/mapper/AlarmInspectionIdMapper.java new file mode 100644 index 0000000..c78d496 --- /dev/null +++ b/src/main/java/com/whyc/mapper/AlarmInspectionIdMapper.java @@ -0,0 +1,6 @@ +package com.whyc.mapper; + +import com.whyc.pojo.web_site.AlarmInspectionId; + +public interface AlarmInspectionIdMapper extends CustomMapper<AlarmInspectionId>{ +} diff --git a/src/main/java/com/whyc/mapper/BattalarmDataMapper.java b/src/main/java/com/whyc/mapper/BattalarmDataMapper.java index e5e062c..e7bbdc3 100644 --- a/src/main/java/com/whyc/mapper/BattalarmDataMapper.java +++ b/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); + } \ No newline at end of file diff --git a/src/main/java/com/whyc/mapper/DevalarmDataMapper.java b/src/main/java/com/whyc/mapper/DevalarmDataMapper.java index 6a234af..e444652 100644 --- a/src/main/java/com/whyc/mapper/DevalarmDataMapper.java +++ b/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); } \ No newline at end of file diff --git a/src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java b/src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java index 516f0ba..2c8353b 100644 --- a/src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java +++ b/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); + } \ No newline at end of file diff --git a/src/main/java/com/whyc/pojo/web_site/AlarmInspectionId.java b/src/main/java/com/whyc/pojo/web_site/AlarmInspectionId.java new file mode 100644 index 0000000..7361746 --- /dev/null +++ b/src/main/java/com/whyc/pojo/web_site/AlarmInspectionId.java @@ -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; + +/** + * 鍛婅宸℃妯″潡鐨勫憡璀﹀疄鏃秈d琛�,璁板綍宸茬粡瀛樺叆鐨勫憡璀d鏈�澶у�� + * 蹇呴』娉ㄦ剰: 鍒濆鍖�1鏉¤褰�,1,0,0,0 + */ +@ToString +@Data +@TableName(schema = "web_site",value ="tb_alarm_inspection_id") +@ApiModel("鍛婅宸℃鐨勫憡璀d鏍囪琛�") +public class AlarmInspectionId { + + private Integer id; + private Long powerAlarmId; + private Long devAlarmId; + private Long battAlarmId; +} diff --git a/src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java b/src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java new file mode 100644 index 0000000..a2e1373 --- /dev/null +++ b/src/main/java/com/whyc/schedule/AlarmInspectionSchedule.java @@ -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); + + //鑾峰彇鏈鎴鐨勫憡璀d,骞舵洿鏂板贰妫�鍛婅鐨勫憡璀d + 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()); + + //鍛婅娑堝け浜嗙殑宸℃瀹炴椂琛╥d + 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); + } + + } + + +} diff --git a/src/main/java/com/whyc/service/AlarmInspectionIdService.java b/src/main/java/com/whyc/service/AlarmInspectionIdService.java new file mode 100644 index 0000000..7d0df7d --- /dev/null +++ b/src/main/java/com/whyc/service/AlarmInspectionIdService.java @@ -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); + } + +} diff --git a/src/main/java/com/whyc/service/AlarmInspectionService.java b/src/main/java/com/whyc/service/AlarmInspectionService.java index c5a8307..decc0bb 100644 --- a/src/main/java/com/whyc/service/AlarmInspectionService.java +++ b/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); + } } diff --git a/src/main/java/com/whyc/service/BattalarmDataService.java b/src/main/java/com/whyc/service/BattalarmDataService.java index 47d0a79..598df7a 100644 --- a/src/main/java/com/whyc/service/BattalarmDataService.java +++ b/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()); + } } \ No newline at end of file diff --git a/src/main/java/com/whyc/service/DevalarmDataService.java b/src/main/java/com/whyc/service/DevalarmDataService.java index 9dab506..430861d 100644 --- a/src/main/java/com/whyc/service/DevalarmDataService.java +++ b/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()); + } } \ No newline at end of file diff --git a/src/main/java/com/whyc/service/PwrdevAlarmService.java b/src/main/java/com/whyc/service/PwrdevAlarmService.java index f4c93c5..ef3d881 100644 --- a/src/main/java/com/whyc/service/PwrdevAlarmService.java +++ b/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()); + } } \ No newline at end of file diff --git a/src/main/resources/mapper/BattalarmDataMapper.xml b/src/main/resources/mapper/BattalarmDataMapper.xml index 7c0ed22..b9c18af 100644 --- a/src/main/resources/mapper/BattalarmDataMapper.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/DevalarmDataMapper.xml b/src/main/resources/mapper/DevalarmDataMapper.xml index 301dc63..45a79b9 100644 --- a/src/main/resources/mapper/DevalarmDataMapper.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/PwrdevAlarmMapper.xml b/src/main/resources/mapper/PwrdevAlarmMapper.xml index 82be3f7..20e0be4 100644 --- a/src/main/resources/mapper/PwrdevAlarmMapper.xml +++ b/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> \ No newline at end of file -- Gitblit v1.9.1