水情告警定时任务修改
parent
3207fc225f
commit
309e1d8d92
|
|
@ -52,4 +52,13 @@ ORDER BY
|
|||
alarm_type ASC;
|
||||
""")
|
||||
List<WaterAlarmTypeCount> countTypeByYear(@Param("year") Integer year);
|
||||
|
||||
|
||||
@Select("""
|
||||
select t.* from water_alarm t
|
||||
where t.stcd = #{stcd}
|
||||
order by t.alarm_time desc
|
||||
limit 1
|
||||
""")
|
||||
WaterAlarm selectByStcdNew(@Param("stcd") String stcd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,6 @@ public class WaterAlarm {
|
|||
*/
|
||||
@Schema(description = "告警时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime alarmTime;
|
||||
private Date alarmTime;
|
||||
|
||||
}
|
||||
|
|
@ -20,10 +20,13 @@ import org.springframework.scheduling.annotation.Async;
|
|||
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.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
|
@ -32,16 +35,13 @@ import java.util.concurrent.TimeUnit;
|
|||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
//@EnableScheduling
|
||||
//@Profile({"prod","dev","local"})
|
||||
@EnableScheduling
|
||||
@Profile({"prod","dev","local"})
|
||||
public class AlarmTask {
|
||||
|
||||
@Autowired
|
||||
private AlarmSetMapper alarmSetMapper;
|
||||
|
||||
@Autowired
|
||||
private StRsvrRRealMapper stRsvrRRealMapper;
|
||||
|
||||
@Autowired
|
||||
private AttResBaseMapper attResBaseMapper;
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ public class AlarmTask {
|
|||
private StRiverRRealService stRiverRRealService;
|
||||
|
||||
// @Async
|
||||
// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES)
|
||||
@Scheduled(fixedRate = 10, timeUnit = TimeUnit.SECONDS)
|
||||
public void updateAlarmSet(){
|
||||
//查询告警设置中所有的配置的站点
|
||||
List<AlarmSet> alarmSets = alarmSetMapper.selectList(null);
|
||||
|
|
@ -64,7 +64,7 @@ public class AlarmTask {
|
|||
}
|
||||
|
||||
// @Async
|
||||
// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES)
|
||||
//@Scheduled(fixedRate = 30, timeUnit = TimeUnit.SECONDS)
|
||||
public void updateWaterAlarm(){
|
||||
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList();
|
||||
AttResBaseVo attResBaseVo = attResBaseVos.get(0);
|
||||
|
|
@ -83,7 +83,7 @@ public class AlarmTask {
|
|||
WaterAlarm waterAlarm = new WaterAlarm();
|
||||
waterAlarm.setStcd(entity.getStcd());
|
||||
waterAlarm.setStnm(entity.getStnm());
|
||||
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
||||
waterAlarm.setAlarmTime(entity.getTm());
|
||||
waterAlarm.setCurValue(entity.getRz());
|
||||
waterAlarm.setAlarmValue(entity.getCalFloodLev());
|
||||
waterAlarm.setOverValue(entity.getRz().subtract(entity.getCalFloodLev()));
|
||||
|
|
@ -95,7 +95,7 @@ public class AlarmTask {
|
|||
WaterAlarm waterAlarm = new WaterAlarm();
|
||||
waterAlarm.setStcd(entity.getStcd());
|
||||
waterAlarm.setStnm(entity.getStnm());
|
||||
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
||||
waterAlarm.setAlarmTime(entity.getTm());
|
||||
waterAlarm.setCurValue(entity.getRz());
|
||||
waterAlarm.setAlarmValue(entity.getDesFloodLev());
|
||||
waterAlarm.setOverValue(entity.getRz().subtract(entity.getDesFloodLev()));
|
||||
|
|
@ -107,7 +107,7 @@ public class AlarmTask {
|
|||
WaterAlarm waterAlarm = new WaterAlarm();
|
||||
waterAlarm.setStcd(entity.getStcd());
|
||||
waterAlarm.setStnm(entity.getStnm());
|
||||
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
||||
waterAlarm.setAlarmTime(entity.getTm());
|
||||
waterAlarm.setCurValue(entity.getRz());
|
||||
waterAlarm.setAlarmValue(entity.getFlLowLimLev());
|
||||
waterAlarm.setOverValue(entity.getRz().subtract(entity.getFlLowLimLev()));
|
||||
|
|
@ -117,9 +117,20 @@ public class AlarmTask {
|
|||
}
|
||||
|
||||
private void saveRiverData(String stcd){
|
||||
//StRsvrRReal stRsvrRReal = stRsvrRRealMapper.queryRzByStcd(stcd);
|
||||
//根据站点编码查询真实水位数据
|
||||
StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().queryQByStcd(stcd);
|
||||
//查询该站点最新一条数据
|
||||
WaterAlarm waterAlarmNew = waterAlarmService.getBaseMapper().selectByStcdNew(stcd);
|
||||
|
||||
|
||||
if(stRiverRReal != null){
|
||||
Instant newDateInstant = stRiverRReal.getTm().toInstant();
|
||||
Instant curDateInstant = waterAlarmNew.getAlarmTime().toInstant();
|
||||
if(newDateInstant.compareTo(curDateInstant) <= 0){
|
||||
//如果要插入数据的时间与当前告警表中数据相同,则直接跳过本条数据
|
||||
return;
|
||||
}
|
||||
|
||||
AlarmSet alarmSet = alarmSetMapper.queryByStcd(stcd);
|
||||
//警告水位
|
||||
BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel();
|
||||
|
|
@ -129,27 +140,27 @@ public class AlarmTask {
|
|||
return;
|
||||
}else{
|
||||
BigDecimal rz =stRiverRReal.getZ();
|
||||
if(rz.compareTo(warnWaterLevel) >=0 && rz.compareTo(promiseWaterLevel) <0){
|
||||
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(stRiverRReal.getStcd());
|
||||
waterAlarm.setStnm(stRiverRReal.getStnm());
|
||||
waterAlarm.setAlarmTime(stRiverRReal.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
||||
waterAlarm.setAlarmTime(stRiverRReal.getTm());
|
||||
waterAlarm.setCurValue(stRiverRReal.getZ());
|
||||
waterAlarm.setAlarmValue(warnWaterLevel);
|
||||
waterAlarm.setOverValue(gap);
|
||||
waterAlarm.setAlarmType(level);
|
||||
waterAlarmService.save(waterAlarm);
|
||||
}else if(rz.compareTo(promiseWaterLevel) >=0){
|
||||
}else if(rz.compareTo(promiseWaterLevel) >0){
|
||||
BigDecimal gap = rz.subtract(promiseWaterLevel);
|
||||
//河道超保证
|
||||
Integer level = AlarmTypeEnum.RIVER_OVER_GUARANTEE.getLevel();
|
||||
WaterAlarm waterAlarm = new WaterAlarm();
|
||||
waterAlarm.setStcd(stRiverRReal.getStcd());
|
||||
waterAlarm.setStnm(stRiverRReal.getStnm());
|
||||
waterAlarm.setAlarmTime(stRiverRReal.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
||||
waterAlarm.setAlarmTime(stRiverRReal.getTm());
|
||||
waterAlarm.setCurValue(stRiverRReal.getZ());
|
||||
waterAlarm.setAlarmValue(promiseWaterLevel);
|
||||
waterAlarm.setOverValue(gap);
|
||||
|
|
|
|||
Loading…
Reference in New Issue