From 271b236a6fe0211c19ef8ab11da6c5ee30274f70 Mon Sep 17 00:00:00 2001 From: wany <13995595726@qq.com> Date: Thu, 18 Jul 2024 10:24:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5-=E9=A2=84=E8=AD=A6=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xyt/controller/StQxWarnRController.java | 7 +++ .../project/xyt/entity/vo/HomeWarnVo.java | 36 +++++++++++ .../project/xyt/mapper/StQxWarnRMapper.java | 18 ++++++ .../project/xyt/mapper/StStbprpBMapper.java | 8 +++ .../project/xyt/service/StQxWarnRService.java | 61 +++++++++++++++++++ .../project/xyt/service/StStbprpBService.java | 8 ++- 6 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/gunshi/project/xyt/entity/vo/HomeWarnVo.java diff --git a/src/main/java/com/gunshi/project/xyt/controller/StQxWarnRController.java b/src/main/java/com/gunshi/project/xyt/controller/StQxWarnRController.java index a031395..1b2f72a 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/StQxWarnRController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/StQxWarnRController.java @@ -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 homeWarn(@RequestBody DateTimeRangeSo dateTimeRangeSo) { + return R.ok(service.homeWarn(dateTimeRangeSo)); + } } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/entity/vo/HomeWarnVo.java b/src/main/java/com/gunshi/project/xyt/entity/vo/HomeWarnVo.java new file mode 100644 index 0000000..bbdf0b2 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/HomeWarnVo.java @@ -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 qxWarn; + + @Schema(description="位移告警") + private List shiftWarn; + + @Schema(description="渗压告警") + private List pressWarn; + + @Schema(description="渗流告警") + private List flowWarn; + + @Schema(description="AI告警个数") + private Long aiWarnCount; +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/StQxWarnRMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/StQxWarnRMapper.java index 6649c68..b9875d4 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/StQxWarnRMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/StQxWarnRMapper.java @@ -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 { + @Select(""" + + """) + List queryOsmoticWarn(@Param("obj") DateTimeRangeSo dateTimeRangeSo); } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java index e727ffa..1715edd 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java @@ -68,4 +68,12 @@ public interface StStbprpBMapper extends BaseMapper { """) List rzList(); + @Select(""" + + """) + List imgList(); } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/service/StQxWarnRService.java b/src/main/java/com/gunshi/project/xyt/service/StQxWarnRService.java index d8dd95e..a859bf7 100644 --- a/src/main/java/com/gunshi/project/xyt/service/StQxWarnRService.java +++ b/src/main/java/com/gunshi/project/xyt/service/StQxWarnRService.java @@ -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 { + @Resource + private StImgWarnRService imgWarnRService; + + @Resource + private AttResBaseMapper attResBaseMapper; + + public HomeWarnVo homeWarn(DateTimeRangeSo dateTimeRangeSo) { + HomeWarnVo vo = new HomeWarnVo(); + + List 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 qxWarn = this.lambdaQuery() + .ge(StQxWarnR::getTm, dateTimeRangeSo.getStart()).lt(StQxWarnR::getTm, dateTimeRangeSo.getEnd()).list(); + vo.setQxWarn(qxWarn); + + List 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; + } } diff --git a/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java b/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java index c07b8db..0b38d0d 100644 --- a/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java +++ b/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java @@ -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 List rainList = baseMapper.realRainList(); //水位站 List rzList = baseMapper.rzList(); + //图像站 + List 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 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; } }