From 29d65cf8056182f8d28fd12f58d8860a02fc71c9 Mon Sep 17 00:00:00 2001 From: wany <13995595726@qq.com> Date: Wed, 25 Sep 2024 09:30:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E5=A4=A7=E9=9B=A8=E9=87=8F=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RainBasinDivisionController.java | 6 +++- .../xyt/service/RainBasinDivisionService.java | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gunshi/project/xyt/controller/RainBasinDivisionController.java b/src/main/java/com/gunshi/project/xyt/controller/RainBasinDivisionController.java index dd32e0c..90205bd 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/RainBasinDivisionController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/RainBasinDivisionController.java @@ -7,6 +7,7 @@ import com.gunshi.project.xyt.entity.so.StPptnSo; import com.gunshi.project.xyt.entity.vo.CartogramVo; import com.gunshi.project.xyt.entity.vo.StPptnDetailsVo; import com.gunshi.project.xyt.entity.vo.StPptnVo; +import com.gunshi.project.xyt.model.StPptnRReal; import com.gunshi.project.xyt.service.RainBasinDivisionService; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -54,5 +55,8 @@ public class RainBasinDivisionController { return R.ok(rainBasinDivisionService.queryStPptnDetailsByStcd(stcd)); } - + @Post(path = "/maxRain",summary = "根据测站编码查询时间段内最大小时雨量") + public R maxRain(@RequestBody @Validated StPptnSo stPptnSo){ + return R.ok(rainBasinDivisionService.maxRain(stPptnSo)); + } } diff --git a/src/main/java/com/gunshi/project/xyt/service/RainBasinDivisionService.java b/src/main/java/com/gunshi/project/xyt/service/RainBasinDivisionService.java index 4fad2cb..389fbac 100644 --- a/src/main/java/com/gunshi/project/xyt/service/RainBasinDivisionService.java +++ b/src/main/java/com/gunshi/project/xyt/service/RainBasinDivisionService.java @@ -24,6 +24,8 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.temporal.ChronoUnit; import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * Description: @@ -457,4 +459,34 @@ public class RainBasinDivisionService { return count + 1; } + public StPptnRReal maxRain(StPptnSo stPptnSo) { + StPptnRReal stPptnRReal = new StPptnRReal(); + List stPptnVos = realRainMapper.queryStPptnPerHourByStcdAndStartTimeAndEndTime(stPptnSo.getStcd(), stPptnSo.getStartTime(), stPptnSo.getEndTime()); + stPptnRReal.setH1(stPptnVos.stream().max(Comparator.comparing(StPptnVo::getSumDrp)).get().getSumDrp()); + Collections.reverse(stPptnVos); + List list = Arrays.asList(3, 6, 12); + for(Integer num : list){ + BigDecimal data = calcMaxData(num,stPptnVos); + if(num == 3){ + stPptnRReal.setH3(data); + } + if(num == 6){ + stPptnRReal.setH6(data); + } + if(num == 12){ + stPptnRReal.setH12(data); + } + } + return stPptnRReal; + } + + private BigDecimal calcMaxData(Integer num, List stPptnVos) { + List list = stPptnVos.stream().map(StPptnVo::getSumDrp).collect(Collectors.toList()); + return IntStream.range(0, list.size() - num -1) + .mapToObj(i -> list.subList(i, Math.min(i + num, list.size()))) // 获取每几个数的子列表 + .map(sublist -> sublist.stream().reduce(BigDecimal.ZERO, BigDecimal::add)) + .max(BigDecimal::compareTo) + .orElse(BigDecimal.ZERO); + } + }