From f2d432d1ee3373c08876314f330c0d3cc951cbd1 Mon Sep 17 00:00:00 2001 From: cxw <1520264117@qq.com> Date: Mon, 14 Oct 2024 13:28:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=8E=89=E6=BD=AD=E6=B4=AA=E6=B0=B4?= =?UTF-8?q?=E9=A2=84=E6=8A=A5=E6=A8=A1=E5=9E=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 06d10a70865c7561888e7e0d9f24598e298a9c9e) --- .../xyt/entity/vo/ForecastResultVo.java | 6 +++ .../xyt/service/ForecastResultsService.java | 43 +++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gunshi/project/xyt/entity/vo/ForecastResultVo.java b/src/main/java/com/gunshi/project/xyt/entity/vo/ForecastResultVo.java index ca9ef7e..1b14ef7 100644 --- a/src/main/java/com/gunshi/project/xyt/entity/vo/ForecastResultVo.java +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/ForecastResultVo.java @@ -99,4 +99,10 @@ public class ForecastResultVo { */ @Schema(description="土壤含水量") private BigDecimal pa; + + /** + * 水库当前库容 + */ + @Schema(description = "水库当前库容") + private BigDecimal nowCap; } diff --git a/src/main/java/com/gunshi/project/xyt/service/ForecastResultsService.java b/src/main/java/com/gunshi/project/xyt/service/ForecastResultsService.java index 69133a0..c16b8c0 100644 --- a/src/main/java/com/gunshi/project/xyt/service/ForecastResultsService.java +++ b/src/main/java/com/gunshi/project/xyt/service/ForecastResultsService.java @@ -25,6 +25,7 @@ import com.gunshi.project.xyt.model.StPptnRAverage; import com.gunshi.project.xyt.model.StRsvrR; import com.gunshi.project.xyt.model.StStbprpB; import com.gunshi.project.xyt.model.StZqrlB; +import com.gunshi.project.xyt.model.StZvarlB; import com.gunshi.project.xyt.util.DataHandleUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -92,6 +93,9 @@ public class ForecastResultsService extends ServiceImpl paramMap = paramList.stream().collect(Collectors.toMap(ForecastUseparam::getParamCode, ForecastUseparam::getParamValue)); if (paramMap.get("dt").isEmpty()) { throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查时间单元△T是否缺失。"); @@ -207,6 +212,9 @@ public class ForecastResultsService extends ServiceImpl uList = forecastUService.list(); @@ -234,6 +242,8 @@ public class ForecastResultsService extends ServiceImpl stZqrlBList = stZqrlBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd())); + // 库容曲线 + List zvarlBS = stZvarlBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd())); // 水位历史数据 List rsvrRRealList = stRsvrRService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).ge("tm", startTime).le("tm", endTime)); List resultList = reorganizeRsvrRData(rsvrRRealList, dt); @@ -272,7 +282,7 @@ public class ForecastResultsService extends ServiceImpl forecastVoList = RrainfallForecast.getData(sdf.format(period[0]), forecastPa.getK().doubleValue(), forecastPa.getPa0().doubleValue(), Wm, forecastPa.getPt0().doubleValue(), H1, dt, - forecastPa.getPa().doubleValue(), PList, u, attResBase.getStcd()); + forecastPa.getPa().doubleValue(), PList, u, attResBase.getStcd(), qOther); if (CollectionUtils.isNotEmpty(forecastVoList)) { // 筛选同时段的真实水位数据 List realRsvrList = resultList.stream().filter(item -> item.getTm().compareTo(period[0]) >= 0 && item.getTm().compareTo(period[1]) <= 0).collect(Collectors.toList()); @@ -291,13 +301,15 @@ public class ForecastResultsService extends ServiceImpl zvarlBS, ForecastResultVo resultVo, BigDecimal rz){ + if(CollectionUtils.isNotEmpty(zvarlBS)){ + BigDecimal maxRz = zvarlBS.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); + BigDecimal minRz = zvarlBS.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); + if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ + return; + } + Map stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW)); + List list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList()); + resultVo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list)); + } + } + /** * 计算时间的小时差值 */