diff --git a/src/main/java/com/gunshi/project/xyt/entity/dto/StZqrlBDto.java b/src/main/java/com/gunshi/project/xyt/entity/dto/StZqrlBDto.java index c3193c1..c4191b2 100644 --- a/src/main/java/com/gunshi/project/xyt/entity/dto/StZqrlBDto.java +++ b/src/main/java/com/gunshi/project/xyt/entity/dto/StZqrlBDto.java @@ -2,6 +2,7 @@ package com.gunshi.project.xyt.entity.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.db.dto.DateTimeRangeSo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -20,6 +21,6 @@ public class StZqrlBDto { private String stcd; @Schema(description = "时间范围") - private DateRangeSo dateSo; + private DateTimeRangeSo dateSo; } 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 900e03a..21361c0 100644 --- a/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java +++ b/src/main/java/com/gunshi/project/xyt/service/StStbprpBService.java @@ -193,36 +193,63 @@ public class StStbprpBService extends ServiceImpl { public StZqrlBCountVo count(Serializable stcd) { StZqrlBCountVo vo = new StZqrlBCountVo(); vo.setStcd(stcd.toString()); - if (Objects.isNull(stcd)) { - return vo; + + //取出当月的水位 + Calendar calendar = Calendar.getInstance(); + Date now = calendar.getTime(); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + List rsvrList = rsvrRService.lambdaQuery() + .eq(StRsvrR::getStcd, stcd) + .between(StRsvrR::getTm, calendar.getTime(), now) + .orderByAsc(true, StRsvrR::getTm) + .list(); + + List zqrlList = stZqrlBService.list(); + + List complexList = new ArrayList<>(); + int idx = 0; + for (StRsvrR rsvr : rsvrList) { + RsvrComplexVo complex = new RsvrComplexVo(); + BigDecimal rz = new BigDecimal(rsvr.getRz()); + complex.setRz(rz); + complex.setTm(rsvr.getTm()); + + BigDecimal q = stZqrlBService.getQFromZqrl(rz, zqrlList); + complex.setQ(q); + if (idx == 0) { + complex.setSv(BigDecimal.ZERO); + } else { + RsvrComplexVo complexPrev = complexList.get(idx - 1); + complex.setSv(complexPrev.getSv().add(complexPrev.getQ().multiply(BigDecimal.valueOf(60 * 60)))); + } + + complexList.add(complex); + idx++; } - String stcdstr = stcd.toString(); - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(StZqrlB::getStcd, stcdstr).orderByDesc(StZqrlB::getModitime).last(" limit 1"); - StZqrlB bean = stZqrlBService.getOne(qw); - vo.setVal(bean.getQ()); - vo.setCreateTime(bean.getModitime()); + //当前流量 + vo.setVal(complexList.getLast().getQ()); + vo.setCreateTime(complexList.getLast().getTm()); - // 获取今天开始时间 (00:00:00) - LocalDateTime todayStart = LocalDate.now().atStartOfDay(); - // 获取当前时间 (带时分秒) - LocalDateTime now = LocalDateTime.now(); - vo.setCurrDayValSum(sumVal(stcdstr, todayStart, now)); - - // 获取本月1号0点 - LocalDateTime firstDayOfMonth = LocalDate.now().withDayOfMonth(1).atStartOfDay(); - vo.setCurrMonthSum(sumVal(stcdstr, firstDayOfMonth, now)); - - // 获取本年第一天 00:00:00 - LocalDateTime firstDayOfYear = LocalDate.now().withDayOfYear(1).atStartOfDay(); - vo.setCurrYearSum(sumVal(stcdstr, firstDayOfYear, now)); - - //年次数 - vo.setCurrYearCount(countVal(stcdstr, firstDayOfYear, now)); - - //本年最大 - vo.setCurrYearMaxVal(maxVal(stcdstr, firstDayOfYear, now)); + calendar.setTime(now); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date today = calendar.getTime(); + //今日sv的和 + BigDecimal sumToday = complexList.stream().filter(complex -> complex.getTm().after(today)) + .map(RsvrComplexVo::getSv) + .reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setCurrDayValSum(sumToday); + //当月sv的和 + BigDecimal sumMonth = complexList.stream().map(RsvrComplexVo::getSv) + .reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setCurrMonthSum(sumMonth); return vo; }