feat: 根据条件查询电站页水温基础站点列表

This commit is contained in:
tangwei 2026-06-26 10:59:53 +08:00
parent dd9ca6df75
commit c0499f93dc
4 changed files with 127 additions and 21 deletions

View File

@ -197,6 +197,12 @@ public class SdWTMonitorController {
return ResponseResult.successData(sdWtMonitorService.getMsstbprptList(dataSourceRequest));
}
@PostMapping("/msstbprpt/eng/GetKendoList")
@Operation(summary = "根据条件查询电站页水温基础站点列表")
public ResponseResult getMsstbprptEngList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(sdWtMonitorService.getMsstbprptEngList(dataSourceRequest));
}
@GetMapping("/msstbprpt/getStcdInfo")
@Operation(summary = "根据站码查询单条水温基础数据")
public ResponseResult getStcdInfo(@RequestParam String stcd) {

View File

@ -74,6 +74,15 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "所属电站编码")
private String rstcd;
@Schema(description = "设备类型")
private Integer wtDeviceType;
@Schema(description = "接入类型")
private Integer dtinType;
@Schema(description = "监测方式")
private Integer mway;
@Schema(description = "所属测站编码")
private String stCode;

View File

@ -22,6 +22,8 @@ public interface SdWtMonitorService {
DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest);
DataSourceResult getMsstbprptEngList(DataSourceRequest dataSourceRequest);
WtBaseInfoVo getStcdInfo(String stcd);
DataSourceResult getCxDetailList(DataSourceRequest dataSourceRequest);

View File

@ -856,14 +856,31 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ").append(selectSql).append(" ")
.append("FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = wt.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTRV_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) rvRecent ON rvRecent.STCD = wt.STCD ")
.append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTVT_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) vtRecent ON vtRecent.STCD = wt.STCD ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 AND NVL(wt.DTIN_TYPE, 0) = 0 ");
.append(buildWtMsstbprptFromSql());
Map<String, Object> paramMap = new HashMap<>();
appendWtMsstbprptFilters(sql, paramMap, dataSourceRequest == null ? null : dataSourceRequest.getFilter());
sql.append(buildVmsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
Page<?> page = QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
List<SdWtBaseInfoVO> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdWtBaseInfoVO.class);
DataSourceResult<SdWtBaseInfoVO> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page != null ? page.getTotal() : list.size());
result.setAggregates(new HashMap<>());
return result;
}
@Override
public DataSourceResult getMsstbprptEngList(DataSourceRequest dataSourceRequest) {
List<String> selectFields = dataSourceRequest == null ? null : dataSourceRequest.getSelect();
String selectSql = buildWtMsstbprptEngSelectSql(selectFields);
StringBuilder sql = new StringBuilder();
sql.append("SELECT ").append(selectSql).append(" ")
.append(buildWtMsstbprptFromSql());
Map<String, Object> paramMap = new HashMap<>();
appendWtMsstbprptFilters(sql, paramMap, dataSourceRequest == null ? null : dataSourceRequest.getFilter());
@ -1980,6 +1997,16 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
orderColumns.add("NVL(dtin, -1) " + dir + " NULLS LAST");
} else if ("dtinName".equals(field)) {
orderColumns.add("CASE WHEN NVL(dtin, 0) = 1 THEN '已接入' ELSE '未接入' END " + dir + " NULLS LAST");
} else if ("wtDeviceType".equals(field)) {
orderColumns.add("NVL(wtDeviceType, -1) " + dir + " NULLS LAST");
} else if ("dtinType".equals(field)) {
orderColumns.add("NVL(dtinType, -1) " + dir + " NULLS LAST");
} else if ("mway".equals(field)) {
orderColumns.add("NVL(mway, -1) " + dir + " NULLS LAST");
} else if ("lgtd".equals(field)) {
orderColumns.add("lgtd " + dir + " NULLS LAST");
} else if ("lttd".equals(field)) {
orderColumns.add("lttd " + dir + " NULLS LAST");
}
}
}
@ -1991,6 +2018,54 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
}
private String buildWtMsstbprptSelectSql(List<String> selectFields) {
Map<String, String> columnMap = buildWtMsstbprptColumnMap();
List<String> actualColumns = new ArrayList<>();
if (selectFields != null && !selectFields.isEmpty()) {
for (String field : selectFields) {
String column = columnMap.get(field);
if (StrUtil.isNotBlank(column)) {
actualColumns.add(column);
}
}
}
if (actualColumns.isEmpty()) {
actualColumns.addAll(columnMap.values());
}
return String.join(", ", actualColumns);
}
private String buildWtMsstbprptEngSelectSql(List<String> selectFields) {
Map<String, String> columnMap = buildWtMsstbprptColumnMap();
List<String> actualColumns = new ArrayList<>();
if (selectFields == null || selectFields.isEmpty()) {
actualColumns.add(columnMap.get("stcd"));
actualColumns.add(columnMap.get("stnm"));
actualColumns.add(columnMap.get("wtDeviceType"));
actualColumns.add(columnMap.get("dtinType"));
actualColumns.add(columnMap.get("mway"));
actualColumns.add(columnMap.get("lgtd"));
actualColumns.add(columnMap.get("lttd"));
actualColumns.add(columnMap.get("baseId"));
actualColumns.add(columnMap.get("baseName"));
} else {
for (String field : selectFields) {
String column = columnMap.get(field);
if (StrUtil.isNotBlank(column)) {
actualColumns.add(column);
}
}
}
ensureWtMsstbprptColumn(actualColumns, columnMap, "stcd");
ensureWtMsstbprptColumn(actualColumns, columnMap, "stnm");
ensureWtMsstbprptColumn(actualColumns, columnMap, "lgtd");
ensureWtMsstbprptColumn(actualColumns, columnMap, "lttd");
ensureWtMsstbprptColumn(actualColumns, columnMap, "baseId");
ensureWtMsstbprptColumn(actualColumns, columnMap, "baseName");
return String.join(", ", actualColumns);
}
private Map<String, String> buildWtMsstbprptColumnMap() {
Map<String, String> columnMap = new LinkedHashMap<>();
columnMap.put("baseName", "hb.BASENAME AS baseName");
columnMap.put("baseId", "hb.BASEID AS baseId");
@ -2009,31 +2084,43 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
columnMap.put("stcd", "wt.STCD AS stcd");
columnMap.put("fhstcd", "wt.FHSTCD AS fhstcd");
columnMap.put("rstcd", "wt.RSTCD AS rstcd");
// columnMap.put("bldsttCcodeName", "CASE WHEN wt.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' WHEN wt.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName");
columnMap.put("bldsttCcodeName",
"CASE WHEN wt.BLDSTT_CODE = 0 THEN '未建/规划' " +
"WHEN wt.BLDSTT_CODE = 1 THEN '在建' " +
"WHEN wt.BLDSTT_CODE = 2 THEN '已建' " +
"ELSE '未知' END");
"ELSE '未知' END AS bldsttCcodeName");
columnMap.put("bldsttCcode", "wt.BLDSTT_CODE AS bldsttCcode");
columnMap.put("stCode", "NULL AS stCode");
columnMap.put("stName", "NULL AS stName");
columnMap.put("dvtp", "eng.DVTP AS dvtp");
columnMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd");
columnMap.put("lgtd", "wt.LGTD AS lgtd");
columnMap.put("lttd", "wt.LTTD AS lttd");
columnMap.put("wtDeviceType", "wt.WT_DEVICE_TYPE AS wtDeviceType");
columnMap.put("dtinType", "wt.DTIN_TYPE AS dtinType");
columnMap.put("mway", "wt.MWAY AS mway");
return columnMap;
}
List<String> actualColumns = new ArrayList<>();
if (selectFields != null && !selectFields.isEmpty()) {
for (String field : selectFields) {
private void ensureWtMsstbprptColumn(List<String> actualColumns, Map<String, String> columnMap, String field) {
String column = columnMap.get(field);
if (StrUtil.isNotBlank(column)) {
if (StrUtil.isBlank(column)) {
return;
}
if (!actualColumns.contains(column)) {
actualColumns.add(column);
}
}
}
if (actualColumns.isEmpty()) {
actualColumns.addAll(columnMap.values());
}
return String.join(", ", actualColumns);
private String buildWtMsstbprptFromSql() {
return "FROM SD_WT_B_H wt " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = wt.STTP AND NVL(sttp.IS_DELETED, 0) = 0 " +
"LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTRV_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) rvRecent ON rvRecent.STCD = wt.STCD " +
"LEFT JOIN (SELECT DISTINCT STCD FROM SD_WTVT_R WHERE IS_DELETED = 0 AND TM >= SYSDATE - 1) vtRecent ON vtRecent.STCD = wt.STCD " +
"WHERE NVL(wt.IS_DELETED, 0) = 0 AND NVL(wt.DTIN_TYPE, 0) = 0 ";
}
private void appendWtMsstbprptFilters(StringBuilder sql,
@ -2061,6 +2148,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.RSTCD", operator, value);
} else if ("baseId".equals(field)) {
appendWtMsstbprptLeaf(sql, paramMap, paramKey, "eng.BASE_ID", operator, value);
} else if ("sttpFullPath".equals(field)) {
appendWtMsstbprptLeaf(sql, paramMap, paramKey, "sttp.FULL_PATH", operator, value);
} else if ("mway".equals(field)) {
appendWtMsstbprptLeaf(sql, paramMap, paramKey, "wt.MWAY", operator, value);
} else if ("dtin".equals(field)) {