水情告警/告警设置 定时任务
parent
bd213e239d
commit
5497a43e5c
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue