feat: 监测点水温变化(当前时段 + 去年同期对比)

This commit is contained in:
tangwei 2026-08-10 14:34:38 +08:00
parent 9d1da55f93
commit 9608b91f92
4 changed files with 111 additions and 8 deletions

View File

@ -339,4 +339,10 @@ public class SdWTMonitorController {
public ResponseResult getWtrvDefaultStcd(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(sdWtMonitorService.getDefaultStcd(dataSourceRequest));
}
@PostMapping("/wtrv/GetKendoListCust")
@Operation(summary = "监测点水温变化(当前时段 + 去年同期对比)")
public ResponseResult getWtrvKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(sdWtMonitorService.getWtRV(dataSourceRequest));
}
}

View File

@ -1,28 +1,38 @@
package com.yfd.platform.qgc_env.wt.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 监测点水温变化数据 VO当前水温 + 去年同期月均/最高/最低对比
*/
@Data
@Schema(description = "监测点水温变化数据")
public class WtrvVo {
@Schema(description = "测站编码")
private String stcd;
@Schema(description = "数据时间")
private Date tm;
// private Boolean isIoWtrv;
private Boolean ioWtrv;
private Boolean hasRstcdWtvt;
@Schema(description = "水温")
private BigDecimal wt;
private BigDecimal avgwt;
@Schema(description = "去年同期最低水温")
private BigDecimal minwt;
@Schema(description = "去年同期最高水温")
private BigDecimal maxwt;
@Schema(description = "去年同期平均水温")
private BigDecimal avgwt;
@Schema(description = "是否是出入库水温站")
private boolean isIoWtrv;//是否是出入库水温站
@Schema(description = "关联的电站是否有垂向水温站")
private boolean hasRstcdWtvt;//关联的电站是否有垂向水温站
}

View File

@ -62,4 +62,9 @@ public interface SdWtMonitorService {
* 获取监测点水温变化默认有数据的断面
*/
DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest);
/**
* 获取监测点水温变化数据当前时段 + 去年同期对比
*/
DataSourceResult getWtRV(DataSourceRequest dataSourceRequest);
}

View File

@ -1,5 +1,8 @@
package com.yfd.platform.qgc_env.wt.service.impl;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -3098,6 +3101,85 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
};
}
@Override
public DataSourceResult getWtRV(DataSourceRequest dataSourceRequest) {
DataSourceResult<WtrvVo> result = new DataSourceResult<>();
result.setAggregates(new HashMap<>());
if (dataSourceRequest == null) {
result.setData(new ArrayList<>());
result.setTotal(0L);
return result;
}
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String tm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm");
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
if (StrUtil.isBlank(tm) || StrUtil.isBlank(stcd)) {
result.setData(new ArrayList<>());
result.setTotal(0L);
return result;
}
// 解析时间范围逗号分隔startTime,endTime
String[] tmList = tm.split(",");
String startTime = tmList[0];
String endTime = tmList[1];
DateTime startDate = DateUtil.parse(startTime, DatePattern.NORM_DATETIME_PATTERN);
DateTime endDate = DateUtil.parse(endTime, DatePattern.NORM_DATETIME_PATTERN);
String startTimeFormatted = DateUtil.format(startDate, DatePattern.NORM_DATETIME_PATTERN);
String endTimeFormatted = DateUtil.format(endDate, DatePattern.NORM_DATETIME_PATTERN);
// 去年同期时间范围-12个月
String lastYearStartTime = DateUtil.offset(startDate, DateField.MONTH, -12).toString();
String lastYearEndTime = DateUtil.offset(endDate, DateField.MONTH, -12).toString();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("startTime", startTimeFormatted);
paramMap.put("endTime", endTimeFormatted);
paramMap.put("lastYearStartTime", lastYearStartTime);
paramMap.put("lastYearEndTime", lastYearEndTime);
String sql = "SELECT " +
"t1.STCD AS stcd, " +
"t1.TM AS tm, " +
"t1.WT AS wt, " +
"t2.MINWT AS minwt, " +
"t2.MAXWT AS maxwt, " +
"t2.AVGWT AS avgwt " +
"FROM SD_WTRV_R t1 " +
"LEFT JOIN ( " +
" SELECT " +
" TO_CHAR(TM, 'YYYY') AS YEAR, " +
" TO_CHAR(TM, 'MM') AS MON, " +
" ROUND(AVG(WT), 2) AS AVGWT, " +
" MAX(WT) AS MAXWT, " +
" MIN(WT) AS MINWT " +
" FROM SD_WTRV_R " +
" WHERE STCD = #{map.stcd} " +
" AND NVL(IS_DELETED, 0) = 0 " +
" AND TM >= TO_TIMESTAMP(#{map.lastYearStartTime}, 'YYYY-MM-DD HH24:MI:SS') " +
" AND TM <= TO_TIMESTAMP(#{map.lastYearEndTime}, 'YYYY-MM-DD HH24:MI:SS') " +
" GROUP BY TO_CHAR(TM, 'YYYY'), TO_CHAR(TM, 'MM') " +
") t2 ON TO_CHAR(ADD_MONTHS(t1.TM, -12), 'YYYY') = t2.YEAR " +
" AND TO_CHAR(t1.TM, 'MM') = t2.MON " +
"WHERE t1.STCD = #{map.stcd} " +
" AND NVL(t1.IS_DELETED, 0) = 0 " +
" AND t1.TM >= TO_TIMESTAMP(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') " +
" AND t1.TM <= TO_TIMESTAMP(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') " +
"ORDER BY t1.TM";
List<WtrvVo> dataList = microservicDynamicSQLMapper
.pageAllListWithResultType(null, sql, paramMap, WtrvVo.class);
result.setData(dataList);
result.setTotal(dataList != null ? dataList.size() : 0L);
return result;
}
@Override
public DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest) {
DataSourceResult result = new DataSourceResult();