feat: 水温年内分布与天然水温对比

This commit is contained in:
tangwei 2026-05-20 09:43:35 +08:00
parent 8293a2f9f5
commit c20eabc9c1
3 changed files with 111 additions and 0 deletions

View File

@ -144,6 +144,18 @@ public class SdWTMonitorController {
return ResponseResult.successData(this.alongListService.getMonthKendoListCust(dataSourceRequest));
}
@PostMapping("/yearList/default/stcd")
@Operation(summary = "获取水温年内分布默认有数据的电站")
public ResponseResult getYearDefaultStcd(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(this.alongListService.getYearDefaultStcd(dataSourceRequest));
}
@PostMapping("/yearList/GetKendoListCust")
@Operation(summary = "水温年内分布与天然水温对比")
public ResponseResult getYearList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(this.alongListService.getYearList(dataSourceRequest));
}
@PostMapping("/base/evnmAutoMonitor/GetKendoListCust")
@Operation(summary = "查询水温监测数量")

View File

@ -3,6 +3,8 @@ package com.yfd.platform.env.service;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult;
import com.yfd.platform.env.entity.vo.SdYearListVO;
import com.yfd.platform.env.entity.vo.StcdVo;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Map;
@ -19,4 +21,6 @@ public interface AlongListService {
DataSourceResult getDefaultRvcd(@RequestBody DataSourceRequest dataSourceRequest);
DataSourceResult getALongKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult getMonthKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult<StcdVo> getYearDefaultStcd(DataSourceRequest dataSourceRequest);
DataSourceResult<SdYearListVO> getYearList(DataSourceRequest dataSourceRequest);
}

View File

@ -11,6 +11,8 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper;
import com.yfd.platform.common.PageInfo;
import com.yfd.platform.common.exception.BizException;
import com.yfd.platform.env.entity.vo.SdAlongVO;
import com.yfd.platform.env.entity.vo.SdYearListVO;
import com.yfd.platform.env.entity.vo.StcdVo;
import com.yfd.platform.env.mapper.AlongListMapper;
import com.yfd.platform.env.service.AlongListService;
import com.yfd.platform.utils.QgcQueryWrapperUtil;
@ -260,6 +262,99 @@ public class AlongListServiceImpl extends ServiceImpl<AlongListMapper, SdAlongVO
return dataSourceResult;
}
@Override
public DataSourceResult<StcdVo> getYearDefaultStcd(DataSourceRequest dataSourceRequest) {
DataSourceResult<StcdVo> dataSourceResult = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
if (StrUtil.isBlank(year)) {
dataSourceResult.setData(new ArrayList<>());
dataSourceResult.setTotal(0L);
return dataSourceResult;
}
StringBuilder sql = new StringBuilder();
sql.append("SELECT t1.STCD AS stcd, t1.STNM AS stnm ")
.append("FROM (")
.append(" SELECT wt.STCD, wt.STNM ")
.append(" FROM SD_WT_B_H wt ")
.append(" LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ")
.append(" WHERE wt.STTP = 'WTRV' ")
.append(" AND wt.USFL = 1 ")
.append(" AND wt.IS_DELETED = 0 ");
if (StrUtil.isNotBlank(baseId)) {
sql.append(" AND eng.BASE_ID = #{map.baseId} ");
}
sql.append(") t1 ")
.append("INNER JOIN (")
.append(" SELECT DISTINCT STCD ")
.append(" FROM SD_WTRVDRTP_S ")
.append(" WHERE IS_DELETED = 0 ")
.append(" AND YEAR = #{map.year} ")
.append(" AND DRTP = 'MON' ")
.append(") t2 ON t1.STCD = t2.STCD ")
.append("WHERE ROWNUM = 1");
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("year", year);
paramMap.put("baseId", baseId);
List<StcdVo> resultList = microservicDynamicSQLMapper.pageAllListWithResultType(null, sql.toString(), paramMap, StcdVo.class);
dataSourceResult.setData(resultList);
dataSourceResult.setTotal(resultList.size());
return dataSourceResult;
}
@Override
public DataSourceResult<SdYearListVO> getYearList(DataSourceRequest dataSourceRequest) {
DataSourceResult<SdYearListVO> dataSourceResult = new DataSourceResult<>();
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year");
StringBuilder sql = new StringBuilder();
sql.append("SELECT t.stcd AS stcd, t.rstcd AS rstcd, t.stnm AS stnm, t.YEAR AS year, t.MONTH AS month, ")
.append("t.actualTemp AS actualTemp, t.naturalTemp AS naturalTemp, t.drtp AS drtp ")
.append("FROM (")
.append(" SELECT t1.stcd, t1.rstcd, t1.stnm, t1.YEAR, t1.MONTH, t1.WT AS actualTemp, t2.WT AS naturalTemp, t1.drtp ")
.append(" FROM (")
.append(" SELECT sms.STCD, wt.RSTCD, wt.STNM, sms.YEAR, sms.MONTH, sms.WT, sms.DRTP ")
.append(" FROM SD_WTRVDRTP_S sms ")
.append(" LEFT JOIN SD_WT_B_H wt ON wt.STCD = sms.STCD ")
.append(" AND wt.STTP = 'WTRV' AND wt.USFL = 1 AND wt.IS_DELETED = 0 ")
.append(" WHERE sms.IS_DELETED = 0 ")
.append(" ) t1 ")
.append(" LEFT JOIN (SELECT STCD, WT, MNTH FROM SD_WTNP_B WHERE IS_DELETED = 0) t2 ")
.append(" ON t2.STCD = t1.RSTCD AND t2.MNTH = t1.MONTH ")
.append(") t ")
.append("WHERE t.DRTP = 'MON' ");
if (StrUtil.isNotBlank(stcd)) {
sql.append("AND t.STCD = #{map.stcd} ");
}
if (StrUtil.isNotBlank(year)) {
sql.append("AND t.YEAR = #{map.year} ");
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("stcd", stcd);
paramMap.put("year", year);
Page<?> page = buildPage(loadOptions);
List<SdYearListVO> voList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdYearListVO.class);
for (SdYearListVO vo : voList) {
if (StrUtil.isNotBlank(vo.getMonth())) {
vo.setMonthInt(Integer.parseInt(vo.getMonth()));
vo.setMonth(vo.getMonth() + "");
}
}
List<SdYearListVO> resultList = voList.stream()
.sorted(Comparator.comparing(SdYearListVO::getMonthInt, Comparator.nullsLast(Comparator.naturalOrder())))
.collect(Collectors.toList());
dataSourceResult.setData(resultList);
dataSourceResult.setTotal(page != null ? page.getTotal() : (long) voList.size());
return dataSourceResult;
}
private Page<?> buildPage(DataSourceLoadOptionsBase loadOptions) {
PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions);
if (Boolean.TRUE.equals(pageInfo.getHasPageInfo())) {