From 8c2fb08efe3bb578b70d86bcd7bb721c9910dd7f Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 28 May 2026 10:15:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E6=B0=B4=E8=B4=A8?= =?UTF-8?q?=E6=B2=BF=E7=A8=8B=E5=8F=98=E5=8C=96=E9=BB=98=E8=AE=A4=E6=9C=89?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9A=84=E6=B2=B3=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/controller/EnvWqDataController.java | 6 ++ .../env/wq/service/EnvWqDataService.java | 2 + .../wq/service/impl/EnvWqDataServiceImpl.java | 72 +++++++++++++++++++ 3 files changed, 80 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java b/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java index b286931..cccb91d 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java @@ -59,6 +59,12 @@ public class EnvWqDataController { return ResponseResult.successData(envWqDataService.getAlongWqKendoListCust(dataSourceRequest)); } + @PostMapping("/along/default/rvcd") + @Operation(summary = "获取水质沿程变化默认有数据的河流") + public ResponseResult getAlongDefaultRvcd(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(envWqDataService.getAlongDefaultRvcd(dataSourceRequest)); + } + @PostMapping("/msstbprpt/GetKendoList") @Operation(summary = "查询水质基础站点分组统计") public ResponseResult getMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java b/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java index a479bd8..a2583f9 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java @@ -12,6 +12,8 @@ public interface EnvWqDataService { DataSourceResult getAlongWqKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getAlongDefaultRvcd(DataSourceRequest dataSourceRequest); + DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java index 26819e7..251334d 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java @@ -226,6 +226,44 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return result; } + @Override + public DataSourceResult getAlongDefaultRvcd(DataSourceRequest dataSourceRequest) { + String baseId = findFilterFieldValue(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "baseId"); + String tm = findFilterFieldValue(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "tm"); + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + if (StrUtil.isBlank(baseId) && loadOptions != null) { + baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); + } + if (StrUtil.isBlank(tm) && loadOptions != null) { + tm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm"); + } + if (StrUtil.isBlank(baseId)) { + return emptyResult(); + } + + Map paramMap = new HashMap<>(); + paramMap.put("baseId", baseId); + String sql; + if (StrUtil.isBlank(tm)) { + sql = buildAlongDefaultRvcdLatestSql(); + } else { + String[] tmRange = normalizeTmRange(tm); + if (tmRange == null) { + throw new BizException("时间(tm)格式错误."); + } + paramMap.put("startTime", tmRange[0]); + paramMap.put("endTime", tmRange[1]); + sql = buildAlongDefaultRvcdByRangeSql(); + } + + List> list = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + DataSourceResult> result = new DataSourceResult<>(); + result.setData(list); + result.setTotal((long) list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + private String[] normalizeTmRange(String tm) { if (StrUtil.isBlank(tm)) { return null; @@ -242,6 +280,40 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return first.compareTo(second) <= 0 ? new String[]{first, second} : new String[]{second, first}; } + private String buildAlongDefaultRvcdByRangeSql() { + return "SELECT rvcd FROM ( " + + "SELECT mab.RVCD AS rvcd " + + "FROM MS_ALONG_B mab " + + "INNER JOIN MS_ALONGDET_B sab ON sab.ALONG_ID = mab.ID " + + "INNER JOIN SD_WQ_B_H wq ON wq.STCD = sab.STCD AND wq.STTP = 'WQ' AND NVL(wq.IS_DELETED, 0) = 0 " + + "INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "INNER JOIN SD_WQ_R r ON r.STCD = sab.STCD AND NVL(r.IS_DELETED, 0) = 0 " + + "WHERE NVL(mab.IS_DELETED, 0) = 0 " + + " AND NVL(sab.IS_DELETED, 0) = 0 " + + " AND mab.CODE = 'common' " + + " AND eng.BASE_ID = #{map.baseId} " + + " AND r.TM >= TO_DATE(#{map.startTime}, 'YYYY-MM-DD HH24:MI:SS') " + + " AND r.TM <= TO_DATE(#{map.endTime}, 'YYYY-MM-DD HH24:MI:SS') " + + "ORDER BY NVL(mab.ORDER_INDEX, 999999) ASC, NVL(sab.SORT, 999999) ASC " + + ") WHERE ROWNUM = 1"; + } + + private String buildAlongDefaultRvcdLatestSql() { + return "SELECT rvcd, tm FROM ( " + + "SELECT mab.RVCD AS rvcd, TRUNC(r.TM, 'HH24') AS tm " + + "FROM MS_ALONG_B mab " + + "INNER JOIN MS_ALONGDET_B sab ON sab.ALONG_ID = mab.ID " + + "INNER JOIN SD_WQ_B_H wq ON wq.STCD = sab.STCD AND sab.STTP = 'WQ' AND NVL(wq.IS_DELETED, 0) = 0 " + + "INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "INNER JOIN SD_WQ_R r ON r.STCD = sab.STCD AND NVL(r.IS_DELETED, 0) = 0 " + + "WHERE NVL(mab.IS_DELETED, 0) = 0 " + + " AND NVL(sab.IS_DELETED, 0) = 0 " + + " AND mab.CODE = 'common' " + + " AND eng.BASE_ID = #{map.baseId} " + + "ORDER BY r.TM DESC " + + ") WHERE ROWNUM = 1"; + } + private String buildAlongWqMaxTmSql(String rvcd, String baseId, boolean hasTmRange) { StringBuilder sql = new StringBuilder(); sql.append("SELECT TM FROM (")