水情告警/告警设置 定时任务

master
yangzhe123 2025-08-29 09:20:30 +08:00
parent bd213e239d
commit 5497a43e5c
1 changed files with 158 additions and 0 deletions

View File

@ -0,0 +1,158 @@
package com.gunshi.project.hsz.timetask;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.gunshi.project.hsz.entity.enums.AlarmTypeEnum;
import com.gunshi.project.hsz.entity.vo.AttResBaseVo;
import com.gunshi.project.hsz.mapper.AlarmSetMapper;
import com.gunshi.project.hsz.mapper.AttResBaseMapper;
import com.gunshi.project.hsz.mapper.StRsvrRRealMapper;
import com.gunshi.project.hsz.model.AlarmSet;
import com.gunshi.project.hsz.model.StRsvrRReal;
import com.gunshi.project.hsz.model.WaterAlarm;
import com.gunshi.project.hsz.service.WaterAlarmService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
*
*/
@Component
@Slf4j
//@EnableScheduling
//@Profile({"prod","dev","local"})
public class AlarmTask {
@Autowired
private AlarmSetMapper alarmSetMapper;
@Autowired
private StRsvrRRealMapper stRsvrRRealMapper;
@Autowired
private AttResBaseMapper attResBaseMapper;
@Autowired
private WaterAlarmService waterAlarmService;
// @Async
// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES)
public void updateAlarmSet(){
//查询告警设置中所有的配置的站点
List<AlarmSet> alarmSets = alarmSetMapper.selectList(null);
//去实时水情查询数据
for (AlarmSet alarmSet : alarmSets) {
String stcd = alarmSet.getStcd();//获取站点编号
saveRiverData(stcd);
}
}
// @Async
// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES)
public void updateWaterAlarm(){
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList();
AttResBaseVo attResBaseVo = attResBaseVos.get(0);
saveResStData(attResBaseVo);
}
private void saveResStData(AttResBaseVo entity){
Integer calState = entity.getCalState();//是否超校核
Integer desState = entity.getDesState();//是否超设计
Integer flState = entity.getFlState();//是否超汛限
if(calState > 0){
Integer level = AlarmTypeEnum.RESERVOIR_OVER_CHECK.getLevel();
WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(entity.getStcd());
waterAlarm.setStnm(entity.getStnm());
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
waterAlarm.setCurValue(entity.getRz());
waterAlarm.setAlarmValue(entity.getCalFloodLev());
waterAlarm.setOverValue(entity.getRz().subtract(entity.getCalFloodLev()));
waterAlarm.setAlarmType(level);
waterAlarmService.save(waterAlarm);
}
if(desState > 0){
Integer level = AlarmTypeEnum.RESERVOIR_OVER_DESIGN.getLevel();
WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(entity.getStcd());
waterAlarm.setStnm(entity.getStnm());
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
waterAlarm.setCurValue(entity.getRz());
waterAlarm.setAlarmValue(entity.getDesFloodLev());
waterAlarm.setOverValue(entity.getRz().subtract(entity.getDesFloodLev()));
waterAlarm.setAlarmType(level);
waterAlarmService.save(waterAlarm);
}
if(flState > 0){
Integer level = AlarmTypeEnum.RESERVOIR_OVER_FLOOD_LIMIT.getLevel();
WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(entity.getStcd());
waterAlarm.setStnm(entity.getStnm());
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
waterAlarm.setCurValue(entity.getRz());
waterAlarm.setAlarmValue(entity.getFlLowLimLev());
waterAlarm.setOverValue(entity.getRz().subtract(entity.getFlLowLimLev()));
waterAlarm.setAlarmType(level);
waterAlarmService.save(waterAlarm);
}
}
private void saveRiverData(String stcd){
StRsvrRReal stRsvrRReal = stRsvrRRealMapper.queryRzByStcd(stcd);
if(stRsvrRReal != null){
AlarmSet alarmSet = alarmSetMapper.queryByStcd(stcd);
//警告水位
BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel();
//保证水位
BigDecimal promiseWaterLevel = alarmSet.getPromiseWaterLevel();
if(alarmSet == null){
return;
}else{
BigDecimal rz = new BigDecimal(stRsvrRReal.getRz());
if(rz.compareTo(warnWaterLevel) >=0 && rz.compareTo(promiseWaterLevel) <0){
BigDecimal gap = rz.subtract(warnWaterLevel);
//河道超警戒
Integer level = AlarmTypeEnum.RIVER_OVER_WARNING.getLevel();
WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(stRsvrRReal.getStcd());
waterAlarm.setStnm(stRsvrRReal.getStnm());
waterAlarm.setAlarmTime(stRsvrRReal.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
waterAlarm.setCurValue(new BigDecimal(stRsvrRReal.getRz()));
waterAlarm.setAlarmValue(warnWaterLevel);
waterAlarm.setOverValue(gap);
waterAlarm.setAlarmType(level);
waterAlarmService.save(waterAlarm);
}else if(rz.compareTo(promiseWaterLevel) >=0){
BigDecimal gap = rz.subtract(promiseWaterLevel);
//河道超保证
Integer level = AlarmTypeEnum.RIVER_OVER_GUARANTEE.getLevel();
WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(stRsvrRReal.getStcd());
waterAlarm.setStnm(stRsvrRReal.getStnm());
waterAlarm.setAlarmTime(stRsvrRReal.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
waterAlarm.setCurValue(new BigDecimal(stRsvrRReal.getRz()));
waterAlarm.setAlarmValue(promiseWaterLevel);
waterAlarm.setOverValue(gap);
waterAlarm.setAlarmType(level);
waterAlarmService.save(waterAlarm);
}
}
}
}
}