水情告警/告警设置 定时任务
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