水情告警定时任务修改

master
yangzhe123 2025-09-08 09:56:44 +08:00
parent 3207fc225f
commit 309e1d8d92
3 changed files with 36 additions and 16 deletions

View File

@ -52,4 +52,13 @@ ORDER BY
alarm_type ASC; alarm_type ASC;
""") """)
List<WaterAlarmTypeCount> countTypeByYear(@Param("year") Integer year); 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);
} }

View File

@ -71,6 +71,6 @@ public class WaterAlarm {
*/ */
@Schema(description = "告警时间") @Schema(description = "告警时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime alarmTime; private Date alarmTime;
} }

View File

@ -20,10 +20,13 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -32,16 +35,13 @@ import java.util.concurrent.TimeUnit;
*/ */
@Component @Component
@Slf4j @Slf4j
//@EnableScheduling @EnableScheduling
//@Profile({"prod","dev","local"}) @Profile({"prod","dev","local"})
public class AlarmTask { public class AlarmTask {
@Autowired @Autowired
private AlarmSetMapper alarmSetMapper; private AlarmSetMapper alarmSetMapper;
@Autowired
private StRsvrRRealMapper stRsvrRRealMapper;
@Autowired @Autowired
private AttResBaseMapper attResBaseMapper; private AttResBaseMapper attResBaseMapper;
@ -52,7 +52,7 @@ public class AlarmTask {
private StRiverRRealService stRiverRRealService; private StRiverRRealService stRiverRRealService;
// @Async // @Async
// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES) @Scheduled(fixedRate = 10, timeUnit = TimeUnit.SECONDS)
public void updateAlarmSet(){ public void updateAlarmSet(){
//查询告警设置中所有的配置的站点 //查询告警设置中所有的配置的站点
List<AlarmSet> alarmSets = alarmSetMapper.selectList(null); List<AlarmSet> alarmSets = alarmSetMapper.selectList(null);
@ -64,7 +64,7 @@ public class AlarmTask {
} }
// @Async // @Async
// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES) //@Scheduled(fixedRate = 30, timeUnit = TimeUnit.SECONDS)
public void updateWaterAlarm(){ public void updateWaterAlarm(){
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList(); List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList();
AttResBaseVo attResBaseVo = attResBaseVos.get(0); AttResBaseVo attResBaseVo = attResBaseVos.get(0);
@ -83,7 +83,7 @@ public class AlarmTask {
WaterAlarm waterAlarm = new WaterAlarm(); WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(entity.getStcd()); waterAlarm.setStcd(entity.getStcd());
waterAlarm.setStnm(entity.getStnm()); waterAlarm.setStnm(entity.getStnm());
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); waterAlarm.setAlarmTime(entity.getTm());
waterAlarm.setCurValue(entity.getRz()); waterAlarm.setCurValue(entity.getRz());
waterAlarm.setAlarmValue(entity.getCalFloodLev()); waterAlarm.setAlarmValue(entity.getCalFloodLev());
waterAlarm.setOverValue(entity.getRz().subtract(entity.getCalFloodLev())); waterAlarm.setOverValue(entity.getRz().subtract(entity.getCalFloodLev()));
@ -95,7 +95,7 @@ public class AlarmTask {
WaterAlarm waterAlarm = new WaterAlarm(); WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(entity.getStcd()); waterAlarm.setStcd(entity.getStcd());
waterAlarm.setStnm(entity.getStnm()); waterAlarm.setStnm(entity.getStnm());
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); waterAlarm.setAlarmTime(entity.getTm());
waterAlarm.setCurValue(entity.getRz()); waterAlarm.setCurValue(entity.getRz());
waterAlarm.setAlarmValue(entity.getDesFloodLev()); waterAlarm.setAlarmValue(entity.getDesFloodLev());
waterAlarm.setOverValue(entity.getRz().subtract(entity.getDesFloodLev())); waterAlarm.setOverValue(entity.getRz().subtract(entity.getDesFloodLev()));
@ -107,7 +107,7 @@ public class AlarmTask {
WaterAlarm waterAlarm = new WaterAlarm(); WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(entity.getStcd()); waterAlarm.setStcd(entity.getStcd());
waterAlarm.setStnm(entity.getStnm()); waterAlarm.setStnm(entity.getStnm());
waterAlarm.setAlarmTime(entity.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); waterAlarm.setAlarmTime(entity.getTm());
waterAlarm.setCurValue(entity.getRz()); waterAlarm.setCurValue(entity.getRz());
waterAlarm.setAlarmValue(entity.getFlLowLimLev()); waterAlarm.setAlarmValue(entity.getFlLowLimLev());
waterAlarm.setOverValue(entity.getRz().subtract(entity.getFlLowLimLev())); waterAlarm.setOverValue(entity.getRz().subtract(entity.getFlLowLimLev()));
@ -117,9 +117,20 @@ public class AlarmTask {
} }
private void saveRiverData(String stcd){ private void saveRiverData(String stcd){
//StRsvrRReal stRsvrRReal = stRsvrRRealMapper.queryRzByStcd(stcd); //根据站点编码查询真实水位数据
StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().queryQByStcd(stcd); StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().queryQByStcd(stcd);
//查询该站点最新一条数据
WaterAlarm waterAlarmNew = waterAlarmService.getBaseMapper().selectByStcdNew(stcd);
if(stRiverRReal != null){ if(stRiverRReal != null){
Instant newDateInstant = stRiverRReal.getTm().toInstant();
Instant curDateInstant = waterAlarmNew.getAlarmTime().toInstant();
if(newDateInstant.compareTo(curDateInstant) <= 0){
//如果要插入数据的时间与当前告警表中数据相同,则直接跳过本条数据
return;
}
AlarmSet alarmSet = alarmSetMapper.queryByStcd(stcd); AlarmSet alarmSet = alarmSetMapper.queryByStcd(stcd);
//警告水位 //警告水位
BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel(); BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel();
@ -129,27 +140,27 @@ public class AlarmTask {
return; return;
}else{ }else{
BigDecimal rz =stRiverRReal.getZ(); 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); BigDecimal gap = rz.subtract(warnWaterLevel);
//河道超警戒 //河道超警戒
Integer level = AlarmTypeEnum.RIVER_OVER_WARNING.getLevel(); Integer level = AlarmTypeEnum.RIVER_OVER_WARNING.getLevel();
WaterAlarm waterAlarm = new WaterAlarm(); WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(stRiverRReal.getStcd()); waterAlarm.setStcd(stRiverRReal.getStcd());
waterAlarm.setStnm(stRiverRReal.getStnm()); waterAlarm.setStnm(stRiverRReal.getStnm());
waterAlarm.setAlarmTime(stRiverRReal.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); waterAlarm.setAlarmTime(stRiverRReal.getTm());
waterAlarm.setCurValue(stRiverRReal.getZ()); waterAlarm.setCurValue(stRiverRReal.getZ());
waterAlarm.setAlarmValue(warnWaterLevel); waterAlarm.setAlarmValue(warnWaterLevel);
waterAlarm.setOverValue(gap); waterAlarm.setOverValue(gap);
waterAlarm.setAlarmType(level); waterAlarm.setAlarmType(level);
waterAlarmService.save(waterAlarm); waterAlarmService.save(waterAlarm);
}else if(rz.compareTo(promiseWaterLevel) >=0){ }else if(rz.compareTo(promiseWaterLevel) >0){
BigDecimal gap = rz.subtract(promiseWaterLevel); BigDecimal gap = rz.subtract(promiseWaterLevel);
//河道超保证 //河道超保证
Integer level = AlarmTypeEnum.RIVER_OVER_GUARANTEE.getLevel(); Integer level = AlarmTypeEnum.RIVER_OVER_GUARANTEE.getLevel();
WaterAlarm waterAlarm = new WaterAlarm(); WaterAlarm waterAlarm = new WaterAlarm();
waterAlarm.setStcd(stRiverRReal.getStcd()); waterAlarm.setStcd(stRiverRReal.getStcd());
waterAlarm.setStnm(stRiverRReal.getStnm()); waterAlarm.setStnm(stRiverRReal.getStnm());
waterAlarm.setAlarmTime(stRiverRReal.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); waterAlarm.setAlarmTime(stRiverRReal.getTm());
waterAlarm.setCurValue(stRiverRReal.getZ()); waterAlarm.setCurValue(stRiverRReal.getZ());
waterAlarm.setAlarmValue(promiseWaterLevel); waterAlarm.setAlarmValue(promiseWaterLevel);
waterAlarm.setOverValue(gap); waterAlarm.setOverValue(gap);