fix: 查询水温指定时间有数据的站点
This commit is contained in:
parent
13d0c52a84
commit
5073285d73
@ -334,6 +334,12 @@ public class SdWTMonitorController {
|
||||
return ResponseResult.successData(sdWtMonitorService.getEngTempPointListKendoListCust(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/sdrvwts/default/stcd")
|
||||
@Operation(summary = "查询水温指定时间有数据的站点(垂向水温)")
|
||||
public ResponseResult getSdrvwtsDefaultStcd(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(sdWtMonitorService.getWtvtDefaultStcd(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/wtrv/default/stcd")
|
||||
@Operation(summary = "获取监测点水温变化默认有数据的断面")
|
||||
public ResponseResult getWtrvDefaultStcd(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
package com.yfd.platform.qgc_env.wt.entity.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 垂向水温默认有数据的站点 VO
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "垂向水温默认站点信息")
|
||||
public class WtvtDefaultStcdVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "站码")
|
||||
private String stcd;
|
||||
|
||||
@Schema(description = "站名")
|
||||
private String stnm;
|
||||
|
||||
@Schema(description = "经度")
|
||||
private BigDecimal lgtd;
|
||||
|
||||
@Schema(description = "纬度")
|
||||
private BigDecimal lttd;
|
||||
|
||||
@Schema(description = "水温监测断面设备类型:1=浮动式 2=固定式")
|
||||
private Integer wtDeviceType;
|
||||
|
||||
@Schema(description = "所属基地编码")
|
||||
private String baseId;
|
||||
|
||||
@Schema(description = "基地排序")
|
||||
private Integer baseStepSort;
|
||||
|
||||
@Schema(description = "站点排序")
|
||||
private Integer siteStepSort;
|
||||
|
||||
@Schema(description = "电站排序")
|
||||
private Integer rstcdStepSort;
|
||||
}
|
||||
@ -9,6 +9,7 @@ import com.yfd.platform.qgc_env.wt.entity.vo.SdMonthDetailVO;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.SdYearDetailVO;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.SttpInfoVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WbsbVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtvtDefaultStcdVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtBaseInfoVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendSaveVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo;
|
||||
@ -58,6 +59,11 @@ public interface SdWtMonitorService {
|
||||
|
||||
DataSourceResult<WaterTempMapVO> getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
/**
|
||||
* 查询水温指定时间有数据的站点(垂向水温)
|
||||
*/
|
||||
List<WtvtDefaultStcdVo> getWtvtDefaultStcd(DataSourceRequest dataSourceRequest);
|
||||
|
||||
/**
|
||||
* 获取监测点水温变化默认有数据的断面
|
||||
*/
|
||||
|
||||
@ -3101,6 +3101,133 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WtvtDefaultStcdVo> getWtvtDefaultStcd(DataSourceRequest dataSourceRequest) {
|
||||
if (dataSourceRequest == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||
String tm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm");
|
||||
String mway = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "mway");
|
||||
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
|
||||
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
|
||||
String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
StringBuilder sql = new StringBuilder();
|
||||
|
||||
if (StrUtil.isNotBlank(year)) {
|
||||
// ==================== 电站专题-垂向水温 ====================
|
||||
sql.append("SELECT t1.STCD AS stcd, t1.STNM AS stnm, ")
|
||||
.append("t1.LGTD AS lgtd, t1.LTTD AS lttd, ")
|
||||
.append("sb.WT_DEVICE_TYPE AS wtDeviceType ")
|
||||
.append("FROM V_MS_STBPRP_T t1 ")
|
||||
.append("INNER JOIN SD_WTVTDRTP_S t2 ON t1.STCD = t2.STCD ")
|
||||
.append("LEFT JOIN SD_WT_B_H sb ON t1.STCD = sb.STCD ")
|
||||
.append("WHERE t1.STTP_CODE = 'WTVT' AND t1.USFL = 1 ")
|
||||
.append("AND t2.WTHG IS NOT NULL AND t2.VWT IS NOT NULL ")
|
||||
.append("AND NVL(t2.IS_DELETED, 0) = 0 ")
|
||||
.append("AND t2.DRTP = 'YEAR' ")
|
||||
.append("AND t2.YEAR = #{map.year} ");
|
||||
paramMap.put("year", year);
|
||||
|
||||
if (StrUtil.isNotBlank(mway)) {
|
||||
sql.append("AND t1.MWAY = #{map.mway} ");
|
||||
paramMap.put("mway", mway);
|
||||
}
|
||||
if (StrUtil.isNotBlank(baseId)) {
|
||||
sql.append("AND t1.BASE_ID = #{map.baseId} ");
|
||||
paramMap.put("baseId", baseId);
|
||||
}
|
||||
if (StrUtil.isNotBlank(rstcd)) {
|
||||
sql.append("AND t1.RSTCD = #{map.rstcd} ");
|
||||
paramMap.put("rstcd", rstcd);
|
||||
}
|
||||
|
||||
sql.append("GROUP BY t1.STCD, t1.STNM, t1.LTTD, t1.LGTD, sb.WT_DEVICE_TYPE");
|
||||
|
||||
return microservicDynamicSQLMapper.getAllListWithResultType(
|
||||
sql.toString(), paramMap, WtvtDefaultStcdVo.class);
|
||||
|
||||
} else {
|
||||
// ==================== 水温管理-垂向水温 ====================
|
||||
// 查询有数据的垂向水温测站(年度维度)
|
||||
List<String> hasDataWtvtList = new ArrayList<>();
|
||||
String dataSql = "SELECT DISTINCT STCD FROM SD_WTVTDRTP_S " +
|
||||
"WHERE DRTP = 'YEAR' AND NVL(IS_DELETED, 0) = 0 " +
|
||||
"AND VWT IS NOT NULL AND WTHG IS NOT NULL";
|
||||
List<Map<String, Object>> wtvtList = microservicDynamicSQLMapper.getAllList(dataSql, null);
|
||||
if (wtvtList != null && !wtvtList.isEmpty()) {
|
||||
for (Map<String, Object> row : wtvtList) {
|
||||
Object stcdObj = row.get("STCD");
|
||||
if (stcdObj != null) {
|
||||
hasDataWtvtList.add(String.valueOf(stcdObj));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hasDataWtvtList.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 解析时间范围
|
||||
String startTime = "";
|
||||
String endTime = "";
|
||||
if (StrUtil.isNotBlank(tm)) {
|
||||
String[] tmList = tm.split(",");
|
||||
startTime = tmList[0];
|
||||
endTime = tmList[1];
|
||||
}
|
||||
|
||||
sql.append("SELECT * FROM ( ");
|
||||
sql.append("SELECT t1.STCD AS stcd, t1.STNM AS stnm, ")
|
||||
.append("t1.LGTD AS lgtd, t1.LTTD AS lttd, ")
|
||||
.append("t1.BASE_ID AS baseId, t1.BASESTEPSORT AS baseStepSort, ")
|
||||
.append("t1.SITESTEPSORT AS siteStepSort, t1.rstcdStepSort AS rstcdStepSort, ")
|
||||
.append("sb.WT_DEVICE_TYPE AS wtDeviceType, ")
|
||||
.append("CASE WHEN t3.SORT IS NULL THEN -1 ELSE t3.SORT END AS SORT ")
|
||||
.append("FROM V_MS_STBPRP_T t1 ")
|
||||
.append("LEFT JOIN (SELECT DISTINCT STCD, 1 AS SORT FROM SD_WTVTDAY_S ");
|
||||
if (StrUtil.isNotBlank(startTime)) {
|
||||
sql.append("WHERE DT >= TO_TIMESTAMP(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') ")
|
||||
.append("AND DT <= TO_TIMESTAMP(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') ")
|
||||
.append("AND NVL(IS_DELETED, 0) = 0 ");
|
||||
paramMap.put("startTime", startTime);
|
||||
paramMap.put("endTime", endTime);
|
||||
} else {
|
||||
sql.append("WHERE NVL(IS_DELETED, 0) = 0 ");
|
||||
}
|
||||
sql.append(") t3 ON t1.STCD = t3.STCD ")
|
||||
.append("LEFT JOIN SD_WT_B_H sb ON t1.STCD = sb.STCD ")
|
||||
.append("WHERE t1.STTP_CODE = 'WTVT' AND t1.USFL = 1 ");
|
||||
|
||||
if (StrUtil.isNotBlank(mway)) {
|
||||
sql.append("AND t1.MWAY = #{map.mway} ");
|
||||
paramMap.put("mway", mway);
|
||||
}
|
||||
if (StrUtil.isNotBlank(baseId)) {
|
||||
sql.append("AND t1.BASE_ID = #{map.baseId} ");
|
||||
paramMap.put("baseId", baseId);
|
||||
}
|
||||
|
||||
sql.append("GROUP BY t1.STCD, t1.STNM, t1.LTTD, t1.LGTD, t1.BASE_ID, ")
|
||||
.append("t1.BASESTEPSORT, t1.SITESTEPSORT, t1.rstcdStepSort, t3.SORT, sb.WT_DEVICE_TYPE ");
|
||||
sql.append(") ORDER BY baseStepSort ASC, rstcdStepSort ASC, siteStepSort ASC, SORT DESC");
|
||||
|
||||
List<WtvtDefaultStcdVo> resultList = microservicDynamicSQLMapper
|
||||
.getAllListWithResultType(sql.toString(), paramMap, WtvtDefaultStcdVo.class);
|
||||
|
||||
// 用 hasDataWtvtList 过滤有数据的测站
|
||||
if (resultList != null) {
|
||||
resultList = resultList.stream()
|
||||
.filter(vo -> hasDataWtvtList.contains(vo.getStcd()))
|
||||
.collect(java.util.stream.Collectors.toList());
|
||||
}
|
||||
|
||||
return resultList != null ? resultList : new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSourceResult getWtRV(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceResult<WtrvVo> result = new DataSourceResult<>();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user