From c0499f93dcc3fc877a407b95d62e58c1cb3b05d3 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 26 Jun 2026 10:59:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=94=B5=E7=AB=99=E9=A1=B5=E6=B0=B4=E6=B8=A9?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=AB=99=E7=82=B9=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wt/controller/SdWTMonitorController.java | 6 + .../qgc_env/wt/entity/vo/SdWtBaseInfoVO.java | 9 ++ .../wt/service/SdWtMonitorService.java | 2 + .../service/impl/SdWtMonitorServiceImpl.java | 131 +++++++++++++++--- 4 files changed, 127 insertions(+), 21 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java index e1bc5b59..f1c2c15c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java @@ -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) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java index 034e0633..f88daf2f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java @@ -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; diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java index e8aab7ec..a6fd35f2 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java @@ -22,6 +22,8 @@ public interface SdWtMonitorService { DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); + DataSourceResult getMsstbprptEngList(DataSourceRequest dataSourceRequest); + WtBaseInfoVo getStcdInfo(String stcd); DataSourceResult getCxDetailList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index c34f1641..5e05c91b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -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 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 list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdWtBaseInfoVO.class); + + DataSourceResult 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 selectFields = dataSourceRequest == null ? null : dataSourceRequest.getSelect(); + String selectSql = buildWtMsstbprptEngSelectSql(selectFields); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ").append(selectSql).append(" ") + .append(buildWtMsstbprptFromSql()); Map 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 selectFields) { + Map columnMap = buildWtMsstbprptColumnMap(); + + List 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 selectFields) { + Map columnMap = buildWtMsstbprptColumnMap(); + List 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 buildWtMsstbprptColumnMap() { Map 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 actualColumns = new ArrayList<>(); - if (selectFields != null && !selectFields.isEmpty()) { - for (String field : selectFields) { - String column = columnMap.get(field); - if (StrUtil.isNotBlank(column)) { - actualColumns.add(column); - } - } + private void ensureWtMsstbprptColumn(List actualColumns, Map columnMap, String field) { + String column = columnMap.get(field); + if (StrUtil.isBlank(column)) { + return; } - if (actualColumns.isEmpty()) { - actualColumns.addAll(columnMap.values()); + if (!actualColumns.contains(column)) { + actualColumns.add(column); } - 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)) {