修正水库溢洪查询不正确,主要是查询参数的dto的时间字段格式化没有时分秒

master
李一帆 2025-04-15 13:49:43 +08:00
parent 090d0a1a1d
commit e11c920fe9
2 changed files with 56 additions and 28 deletions

View File

@ -2,6 +2,7 @@ package com.gunshi.project.xyt.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.gunshi.db.dto.DateRangeSo; import com.gunshi.db.dto.DateRangeSo;
import com.gunshi.db.dto.DateTimeRangeSo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -20,6 +21,6 @@ public class StZqrlBDto {
private String stcd; private String stcd;
@Schema(description = "时间范围") @Schema(description = "时间范围")
private DateRangeSo dateSo; private DateTimeRangeSo dateSo;
} }

View File

@ -193,36 +193,63 @@ public class StStbprpBService extends ServiceImpl<StStbprpBMapper, StStbprpB> {
public StZqrlBCountVo count(Serializable stcd) { public StZqrlBCountVo count(Serializable stcd) {
StZqrlBCountVo vo = new StZqrlBCountVo(); StZqrlBCountVo vo = new StZqrlBCountVo();
vo.setStcd(stcd.toString()); 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<StRsvrR> rsvrList = rsvrRService.lambdaQuery()
.eq(StRsvrR::getStcd, stcd)
.between(StRsvrR::getTm, calendar.getTime(), now)
.orderByAsc(true, StRsvrR::getTm)
.list();
List<StZqrlB> zqrlList = stZqrlBService.list();
List<RsvrComplexVo> 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))));
} }
String stcdstr = stcd.toString();
LambdaQueryWrapper<StZqrlB> qw = new LambdaQueryWrapper(); complexList.add(complex);
qw.eq(StZqrlB::getStcd, stcdstr).orderByDesc(StZqrlB::getModitime).last(" limit 1"); idx++;
StZqrlB bean = stZqrlBService.getOne(qw); }
vo.setVal(bean.getQ());
vo.setCreateTime(bean.getModitime());
// 获取今天开始时间 (00:00:00) //当前流量
LocalDateTime todayStart = LocalDate.now().atStartOfDay(); vo.setVal(complexList.getLast().getQ());
// 获取当前时间 (带时分秒) vo.setCreateTime(complexList.getLast().getTm());
LocalDateTime now = LocalDateTime.now();
vo.setCurrDayValSum(sumVal(stcdstr, todayStart, now));
// 获取本月1号0点 calendar.setTime(now);
LocalDateTime firstDayOfMonth = LocalDate.now().withDayOfMonth(1).atStartOfDay(); calendar.set(Calendar.HOUR_OF_DAY, 0);
vo.setCurrMonthSum(sumVal(stcdstr, firstDayOfMonth, now)); calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
// 获取本年第一天 00:00:00 calendar.set(Calendar.MILLISECOND, 0);
LocalDateTime firstDayOfYear = LocalDate.now().withDayOfYear(1).atStartOfDay(); Date today = calendar.getTime();
vo.setCurrYearSum(sumVal(stcdstr, firstDayOfYear, now)); //今日sv的和
BigDecimal sumToday = complexList.stream().filter(complex -> complex.getTm().after(today))
//年次数 .map(RsvrComplexVo::getSv)
vo.setCurrYearCount(countVal(stcdstr, firstDayOfYear, now)); .reduce(BigDecimal.ZERO, BigDecimal::add);
vo.setCurrDayValSum(sumToday);
//本年最大 //当月sv的和
vo.setCurrYearMaxVal(maxVal(stcdstr, firstDayOfYear, now)); BigDecimal sumMonth = complexList.stream().map(RsvrComplexVo::getSv)
.reduce(BigDecimal.ZERO, BigDecimal::add);
vo.setCurrMonthSum(sumMonth);
return vo; return vo;
} }