水情告警定时任务修改
parent
3207fc225f
commit
309e1d8d92
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue