首页-预警查询
parent
45cdc1d20a
commit
271b236a6f
|
|
@ -2,6 +2,7 @@ package com.gunshi.project.xyt.controller;
|
||||||
|
|
||||||
import com.gunshi.core.result.R;
|
import com.gunshi.core.result.R;
|
||||||
import com.gunshi.db.dto.DateTimeRangeSo;
|
import com.gunshi.db.dto.DateTimeRangeSo;
|
||||||
|
import com.gunshi.project.xyt.entity.vo.HomeWarnVo;
|
||||||
import com.gunshi.project.xyt.model.StQxWarnR;
|
import com.gunshi.project.xyt.model.StQxWarnR;
|
||||||
import com.gunshi.project.xyt.service.StQxWarnRService;
|
import com.gunshi.project.xyt.service.StQxWarnRService;
|
||||||
import com.gunshi.project.xyt.validate.markers.Insert;
|
import com.gunshi.project.xyt.validate.markers.Insert;
|
||||||
|
|
@ -62,4 +63,10 @@ public class StQxWarnRController {
|
||||||
return R.ok(service.page(null,null));
|
return R.ok(service.page(null,null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(summary = "首页-告警")
|
||||||
|
@PostMapping("/home/warn")
|
||||||
|
public R<HomeWarnVo> homeWarn(@RequestBody DateTimeRangeSo dateTimeRangeSo) {
|
||||||
|
return R.ok(service.homeWarn(dateTimeRangeSo));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.gunshi.project.xyt.entity.vo;
|
||||||
|
|
||||||
|
import com.gunshi.project.xyt.model.StQxWarnR;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description:
|
||||||
|
* Created by wanyan on 2024/7/17
|
||||||
|
*
|
||||||
|
* @author wanyan
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class HomeWarnVo {
|
||||||
|
|
||||||
|
@Schema(description = "水位告警")
|
||||||
|
private String rzWarn;
|
||||||
|
|
||||||
|
@Schema(description="气象告警")
|
||||||
|
private List<StQxWarnR> qxWarn;
|
||||||
|
|
||||||
|
@Schema(description="位移告警")
|
||||||
|
private List<OsmoticWarnVo> shiftWarn;
|
||||||
|
|
||||||
|
@Schema(description="渗压告警")
|
||||||
|
private List<OsmoticWarnVo> pressWarn;
|
||||||
|
|
||||||
|
@Schema(description="渗流告警")
|
||||||
|
private List<OsmoticWarnVo> flowWarn;
|
||||||
|
|
||||||
|
@Schema(description="AI告警个数")
|
||||||
|
private Long aiWarnCount;
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
package com.gunshi.project.xyt.mapper;
|
package com.gunshi.project.xyt.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.gunshi.db.dto.DateTimeRangeSo;
|
||||||
|
import com.gunshi.project.xyt.entity.vo.OsmoticWarnVo;
|
||||||
import com.gunshi.project.xyt.model.StQxWarnR;
|
import com.gunshi.project.xyt.model.StQxWarnR;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述: 气象预警表
|
* 描述: 气象预警表
|
||||||
|
|
@ -12,4 +18,16 @@ import org.apache.ibatis.annotations.Mapper;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface StQxWarnRMapper extends BaseMapper<StQxWarnR> {
|
public interface StQxWarnRMapper extends BaseMapper<StQxWarnR> {
|
||||||
|
|
||||||
|
@Select("""
|
||||||
|
<script>
|
||||||
|
select t.*,s.*
|
||||||
|
from public.osmotic_warn_r t
|
||||||
|
left join public.osmotic_warn_rule s
|
||||||
|
on t.rule_id = s.id
|
||||||
|
where t.tm <![CDATA[>=]]> #{obj.start}
|
||||||
|
and t.tm <![CDATA[<=]]> #{obj.end}
|
||||||
|
order by t.tm,t.station_code desc
|
||||||
|
</script>
|
||||||
|
""")
|
||||||
|
List<OsmoticWarnVo> queryOsmoticWarn(@Param("obj") DateTimeRangeSo dateTimeRangeSo);
|
||||||
}
|
}
|
||||||
|
|
@ -68,4 +68,12 @@ public interface StStbprpBMapper extends BaseMapper<StStbprpB> {
|
||||||
""")
|
""")
|
||||||
List<StStatusVo> rzList();
|
List<StStatusVo> rzList();
|
||||||
|
|
||||||
|
@Select("""
|
||||||
|
<script>
|
||||||
|
SELECT st.stcd,st.stnm,r.tm FROM st_stbprp_b st
|
||||||
|
LEFT JOIN st_img_r_real r ON st.stcd = r.stcd
|
||||||
|
WHERE st.stcd in (select distinct(stcd) from st_stbprp_b_elem where elem ='img')
|
||||||
|
</script>
|
||||||
|
""")
|
||||||
|
List<StStatusVo> imgList();
|
||||||
}
|
}
|
||||||
|
|
@ -1,13 +1,23 @@
|
||||||
package com.gunshi.project.xyt.service;
|
package com.gunshi.project.xyt.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.gunshi.db.dto.DateTimeRangeSo;
|
||||||
|
import com.gunshi.project.xyt.entity.vo.AttResBaseVo;
|
||||||
|
import com.gunshi.project.xyt.entity.vo.HomeWarnVo;
|
||||||
|
import com.gunshi.project.xyt.entity.vo.OsmoticWarnVo;
|
||||||
|
import com.gunshi.project.xyt.mapper.AttResBaseMapper;
|
||||||
import com.gunshi.project.xyt.mapper.StQxWarnRMapper;
|
import com.gunshi.project.xyt.mapper.StQxWarnRMapper;
|
||||||
|
import com.gunshi.project.xyt.model.StImgWarnR;
|
||||||
import com.gunshi.project.xyt.model.StQxWarnR;
|
import com.gunshi.project.xyt.model.StQxWarnR;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述: 气象预警表
|
* 描述: 气象预警表
|
||||||
|
|
@ -20,6 +30,57 @@ import java.util.Date;
|
||||||
public class StQxWarnRService extends ServiceImpl<StQxWarnRMapper, StQxWarnR>
|
public class StQxWarnRService extends ServiceImpl<StQxWarnRMapper, StQxWarnR>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private StImgWarnRService imgWarnRService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AttResBaseMapper attResBaseMapper;
|
||||||
|
|
||||||
|
public HomeWarnVo homeWarn(DateTimeRangeSo dateTimeRangeSo) {
|
||||||
|
HomeWarnVo vo = new HomeWarnVo();
|
||||||
|
|
||||||
|
List<AttResBaseVo> attResBaseVos = attResBaseMapper.queryList();
|
||||||
|
AttResBaseVo attResBaseVo = attResBaseVos.get(0);
|
||||||
|
Date tm = attResBaseVo.getTm();
|
||||||
|
//水位的最新采集时间不在24小时内
|
||||||
|
if(tm.before(dateTimeRangeSo.getStart())){
|
||||||
|
vo.setRzWarn("-");
|
||||||
|
}else{
|
||||||
|
BigDecimal rz = attResBaseVo.getRz();
|
||||||
|
if(attResBaseVo.getCalState() == 1){
|
||||||
|
BigDecimal aboveCal = rz.subtract(attResBaseVo.getCalFloodLev());
|
||||||
|
vo.setRzWarn("超校核("+aboveCal+")");
|
||||||
|
attResBaseVo.setDesState(0);
|
||||||
|
attResBaseVo.setFlState(0);
|
||||||
|
}else if(attResBaseVo.getDesState() == 1){
|
||||||
|
BigDecimal aboveDes = rz.subtract(attResBaseVo.getDesFloodLev());
|
||||||
|
vo.setRzWarn("超设计("+aboveDes+")");
|
||||||
|
attResBaseVo.setFlState(0);
|
||||||
|
}else if(attResBaseVo.getFlState() == 1){
|
||||||
|
vo.setRzWarn("超汛限("+attResBaseVo.getAFsltdz()+")");
|
||||||
|
}else if(rz.compareTo(attResBaseVo.getDeadLev()) < 0){
|
||||||
|
BigDecimal aboveDead = rz.subtract(attResBaseVo.getDeadLev());
|
||||||
|
vo.setRzWarn("低水位("+aboveDead+")");
|
||||||
|
}else {
|
||||||
|
vo.setRzWarn("正常("+attResBaseVo.getAFsltdz()+")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<StQxWarnR> qxWarn = this.lambdaQuery()
|
||||||
|
.ge(StQxWarnR::getTm, dateTimeRangeSo.getStart()).lt(StQxWarnR::getTm, dateTimeRangeSo.getEnd()).list();
|
||||||
|
vo.setQxWarn(qxWarn);
|
||||||
|
|
||||||
|
List<OsmoticWarnVo> warnVos = baseMapper.queryOsmoticWarn(dateTimeRangeSo);
|
||||||
|
|
||||||
|
vo.setPressWarn(warnVos.stream().filter(o->o.getType() == 1).collect(Collectors.toList()));
|
||||||
|
vo.setFlowWarn(warnVos.stream().filter(o->o.getType() == 2).collect(Collectors.toList()));
|
||||||
|
vo.setShiftWarn(warnVos.stream().filter(o->o.getType() == 3).collect(Collectors.toList()));
|
||||||
|
|
||||||
|
Long aiWarnCount = imgWarnRService.lambdaQuery()
|
||||||
|
.ge(StImgWarnR::getTm, dateTimeRangeSo.getStart()).lt(StImgWarnR::getTm, dateTimeRangeSo.getEnd()).count();
|
||||||
|
vo.setAiWarnCount(aiWarnCount);
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -56,7 +57,10 @@ public class StStbprpBService extends ServiceImpl<StStbprpBMapper, StStbprpB>
|
||||||
List<StStatusVo> rainList = baseMapper.realRainList();
|
List<StStatusVo> rainList = baseMapper.realRainList();
|
||||||
//水位站
|
//水位站
|
||||||
List<StStatusVo> rzList = baseMapper.rzList();
|
List<StStatusVo> rzList = baseMapper.rzList();
|
||||||
|
//图像站
|
||||||
|
List<StStatusVo> imgList = baseMapper.imgList();
|
||||||
rainList.addAll(rzList);
|
rainList.addAll(rzList);
|
||||||
|
rainList.addAll(imgList);
|
||||||
rainList.stream().collect(Collectors.toMap(obj->obj.getStcd(),obj-> obj,(obj1,obj2)->
|
rainList.stream().collect(Collectors.toMap(obj->obj.getStcd(),obj-> obj,(obj1,obj2)->
|
||||||
DateUtil.convertStringToDate(obj1.getTm()).after(DateUtil.convertStringToDate(obj2.getTm())) ? obj1 : obj2
|
DateUtil.convertStringToDate(obj1.getTm()).after(DateUtil.convertStringToDate(obj2.getTm())) ? obj1 : obj2
|
||||||
)).values().stream().collect(Collectors.toList());
|
)).values().stream().collect(Collectors.toList());
|
||||||
|
|
@ -101,8 +105,8 @@ public class StStbprpBService extends ServiceImpl<StStbprpBMapper, StStbprpB>
|
||||||
onLineList.add(vo);
|
onLineList.add(vo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res.setOnline(onLineList);
|
res.setOnline(onLineList.stream().sorted(Comparator.comparing(StStatusVo::getTm).reversed()).collect(Collectors.toList()));
|
||||||
res.setOffLine(offLineList);
|
res.setOffLine(offLineList.stream().sorted(Comparator.comparing(StStatusVo::getTm).reversed()).collect(Collectors.toList()));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue