首页-预警查询
parent
45cdc1d20a
commit
271b236a6f
|
|
@ -2,6 +2,7 @@ package com.gunshi.project.xyt.controller;
|
|||
|
||||
import com.gunshi.core.result.R;
|
||||
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.service.StQxWarnRService;
|
||||
import com.gunshi.project.xyt.validate.markers.Insert;
|
||||
|
|
@ -62,4 +63,10 @@ public class StQxWarnRController {
|
|||
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;
|
||||
|
||||
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 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
|
||||
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();
|
||||
|
||||
@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;
|
||||
|
||||
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.model.StImgWarnR;
|
||||
import com.gunshi.project.xyt.model.StQxWarnR;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
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>
|
||||
{
|
||||
|
||||
@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 java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -56,7 +57,10 @@ public class StStbprpBService extends ServiceImpl<StStbprpBMapper, StStbprpB>
|
|||
List<StStatusVo> rainList = baseMapper.realRainList();
|
||||
//水位站
|
||||
List<StStatusVo> rzList = baseMapper.rzList();
|
||||
//图像站
|
||||
List<StStatusVo> imgList = baseMapper.imgList();
|
||||
rainList.addAll(rzList);
|
||||
rainList.addAll(imgList);
|
||||
rainList.stream().collect(Collectors.toMap(obj->obj.getStcd(),obj-> obj,(obj1,obj2)->
|
||||
DateUtil.convertStringToDate(obj1.getTm()).after(DateUtil.convertStringToDate(obj2.getTm())) ? obj1 : obj2
|
||||
)).values().stream().collect(Collectors.toList());
|
||||
|
|
@ -101,8 +105,8 @@ public class StStbprpBService extends ServiceImpl<StStbprpBMapper, StStbprpB>
|
|||
onLineList.add(vo);
|
||||
}
|
||||
}
|
||||
res.setOnline(onLineList);
|
||||
res.setOffLine(offLineList);
|
||||
res.setOnline(onLineList.stream().sorted(Comparator.comparing(StStatusVo::getTm).reversed()).collect(Collectors.toList()));
|
||||
res.setOffLine(offLineList.stream().sorted(Comparator.comparing(StStatusVo::getTm).reversed()).collect(Collectors.toList()));
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue