feat: 监测点水温变化(当前时段 + 去年同期对比)
This commit is contained in:
parent
9d1da55f93
commit
9608b91f92
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;//关联的电站是否有垂向水温站
|
||||
}
|
||||
|
||||
@ -62,4 +62,9 @@ public interface SdWtMonitorService {
|
||||
* 获取监测点水温变化默认有数据的断面
|
||||
*/
|
||||
DataSourceResult getDefaultStcd(DataSourceRequest dataSourceRequest);
|
||||
|
||||
/**
|
||||
* 获取监测点水温变化数据(当前时段 + 去年同期对比)
|
||||
*/
|
||||
DataSourceResult getWtRV(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user