diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java index e367a43..844028b 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java @@ -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 = "查询水温监测数量") diff --git a/backend/src/main/java/com/yfd/platform/env/service/AlongListService.java b/backend/src/main/java/com/yfd/platform/env/service/AlongListService.java index eb77b65..db1449f 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/AlongListService.java +++ b/backend/src/main/java/com/yfd/platform/env/service/AlongListService.java @@ -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 getYearDefaultStcd(DataSourceRequest dataSourceRequest); + DataSourceResult getYearList(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/AlongListServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/AlongListServiceImpl.java index e23470b..6256ccb 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/AlongListServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/AlongListServiceImpl.java @@ -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 getYearDefaultStcd(DataSourceRequest dataSourceRequest) { + DataSourceResult 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 paramMap = new HashMap<>(); + paramMap.put("year", year); + paramMap.put("baseId", baseId); + List resultList = microservicDynamicSQLMapper.pageAllListWithResultType(null, sql.toString(), paramMap, StcdVo.class); + dataSourceResult.setData(resultList); + dataSourceResult.setTotal(resultList.size()); + return dataSourceResult; + } + + @Override + public DataSourceResult getYearList(DataSourceRequest dataSourceRequest) { + DataSourceResult 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 paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + paramMap.put("year", year); + Page page = buildPage(loadOptions); + List 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 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())) {