From 3c01a787afa2f3125086a2ff501719b87d7915e7 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 27 May 2026 19:00:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=B0=B4=E6=B8=A9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wt/controller/SdWTMonitorController.java | 2 +- .../env/wt/entity/vo/SdWtBaseInfoVO.java | 21 ++ .../env/wt/service/SdWtMonitorService.java | 2 +- .../service/impl/AlongDetailServiceImpl.java | 7 + .../wt/service/impl/AlongListServiceImpl.java | 4 + .../impl/SdDzChuiXiangListServiceImpl.java | 28 +++ .../service/impl/SdWtMonitorServiceImpl.java | 191 ++++++++++++++++-- .../wt/service/impl/SdWtvtRServiceImpl.java | 27 +++ 8 files changed, 260 insertions(+), 22 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java index df94029..ebad618 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/controller/SdWTMonitorController.java @@ -170,7 +170,7 @@ public class SdWTMonitorController { @PostMapping("/evnmAutoMonitor/GetKendoListCust") @Operation(summary = "查询水温监测数量") public ResponseResult getWTDataCount(@RequestBody(required = false) DataSourceRequest dataSourceRequest) { - return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList()); + return ResponseResult.successData(sdWtMonitorService.getEvnmAutoMonitorList(dataSourceRequest)); } @PostMapping("/dwInfo/GetKendoListCust") diff --git a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java index 4100526..4965624 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/entity/vo/SdWtBaseInfoVO.java @@ -17,6 +17,18 @@ public class SdWtBaseInfoVO implements Serializable { @Schema(description = "基地名称") private String baseName; + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "流域排序") + private Integer rvcdStepSort; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; + @Schema(description = "站名") private String stnm; @@ -35,6 +47,12 @@ public class SdWtBaseInfoVO implements Serializable { @Schema(description = "站类") private String sttpCode; + @Schema(description = "站类名称") + private String sttpName; + + @Schema(description = "站类全路径") + private String sttpFullPath; + @Schema(description = "站码") private String stcd; @@ -49,4 +67,7 @@ public class SdWtBaseInfoVO implements Serializable { @Schema(description = "开发方式") private String dvtp; + + @Schema(description = "基地流域编码") + private String hbrvcd; } diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java b/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java index 7f6c164..804d4a2 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/SdWtMonitorService.java @@ -15,7 +15,7 @@ import java.util.List; public interface SdWtMonitorService { - DataSourceResult getEvnmAutoMonitorList(); + DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest); DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java index 5b356d3..c52dff2 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongDetailServiceImpl.java @@ -52,6 +52,7 @@ public class AlongDetailServiceImpl extends ServiceImpl list = this.microservicDynamicSQLMapper.pageAllListWithResultType(currentPage, sql.toString(), map, SdAlongDetailVO.class); diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongListServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongListServiceImpl.java index d3e9b21..aa5e216 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongListServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/AlongListServiceImpl.java @@ -311,6 +311,7 @@ public class AlongListServiceImpl extends ServiceImpl paramMap = new HashMap<>(); paramMap.put("stcd", stcd); paramMap.put("year", year); + paramMap.put("baseId", baseId); Page page = buildPage(loadOptions); List voList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdYearListVO.class); for (SdYearListVO vo : voList) { diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdDzChuiXiangListServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdDzChuiXiangListServiceImpl.java index 8fc876e..9ee64c9 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdDzChuiXiangListServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdDzChuiXiangListServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.env.wt.entity.vo.SdDzChuiXiangListVO; import com.yfd.platform.env.wt.mapper.SdDzChuiXiangListMapper; import com.yfd.platform.env.wt.service.SdDzChuiXiangListService; @@ -14,6 +15,7 @@ import org.springframework.stereotype.Service; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.HashMap; /** * 电站专题垂向水温一级面板Service实现类 @@ -27,12 +29,23 @@ public class SdDzChuiXiangListServiceImpl extends ServiceImpl(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String year = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year"); + String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); + + if (baseId != null && !baseId.isBlank() && !matchWtvtBaseId(stcd, baseId)) { + dataSourceResult.setData(null); + dataSourceResult.setTotal(0); + dataSourceResult.setAggregates(new LinkedHashMap<>()); + return dataSourceResult; + } int m = 12; Map> map = new LinkedHashMap<>(); @@ -45,4 +58,19 @@ public class SdDzChuiXiangListServiceImpl extends ServiceImpl paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + paramMap.put("baseId", baseId); + List> result = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + return result != null && !result.isEmpty(); + } } diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java index 324e338..6a0467b 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -45,8 +45,32 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; @Override - public DataSourceResult getEvnmAutoMonitorList() { - List list = sdWtMonitorMapper.getMonitorCountList(); + public DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); + + StringBuilder sql = new StringBuilder(); + Map paramMap = new HashMap<>(); + sql.append("SELECT COUNT(1) AS cnt, 26 AS orderInx, '26' AS orderInxName, ") + .append("'ENV,ENVM,WT,' AS sttpFullPath, NULL AS sttpCode, '表层水温监测' AS sttpName ") + .append("FROM SD_WT_B_H wt ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") + .append("WHERE NVL(wt.IS_DELETED, 0) = 0 AND wt.STTP = 'WTRV' AND wt.DTIN_TYPE = 0 "); + if (StrUtil.isNotBlank(baseId)) { + sql.append("AND eng.BASE_ID = #{map.baseId} "); + paramMap.put("baseId", baseId); + } + sql.append("UNION ALL ") + .append("SELECT COUNT(1) AS cnt, 27 AS orderInx, '27' AS orderInxName, ") + .append("'ENV,ENVM,WT,' AS sttpFullPath, NULL AS sttpCode, '垂向水温监测' AS sttpName ") + .append("FROM SD_WT_B_H wt ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") + .append("WHERE NVL(wt.IS_DELETED, 0) = 0 AND wt.STTP = 'WTVT' AND wt.DTIN_TYPE = 0 "); + if (StrUtil.isNotBlank(baseId)) { + sql.append("AND eng.BASE_ID = #{map.baseId} "); + } + + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, SdWtMonitorCountVO.class); DataSourceResult result = new DataSourceResult<>(); result.setData(list); result.setTotal(list == null ? 0 : list.size()); @@ -58,6 +82,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { public DataSourceResult getWbsbList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); String wbsType = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "wbsType"); + String objId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "objId"); if (!"PSB_RVCD".equalsIgnoreCase(wbsType) && !"PSB".equalsIgnoreCase(wbsType)) { DataSourceResult emptyResult = new DataSourceResult<>(); emptyResult.setData(new ArrayList<>()); @@ -67,6 +92,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } StringBuilder sql = new StringBuilder(); + Map paramMap = new HashMap<>(); if ("PSB".equalsIgnoreCase(wbsType)) { sql.append("SELECT ") .append("t.BASEID AS id, ") @@ -119,6 +145,10 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("NULL AS displayDepartment ") .append("FROM SD_HYDROBASE t ") .append("WHERE NVL(t.IS_DELETED, 0) = 0 "); + if (StrUtil.isNotBlank(objId)) { + sql.append("AND t.BASEID = #{map.objId} "); + paramMap.put("objId", objId); + } sql.append("ORDER BY NVL(t.ORDER_INDEX, 999999), t.BASENAME ASC"); } else { sql.append("SELECT ") @@ -173,9 +203,13 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("NULL AS displayDepartment ") .append("FROM SD_HBRV_DIC t ") .append("WHERE NVL(t.IS_DELETED, 0) = 0 "); + if (StrUtil.isNotBlank(objId)) { + sql.append("AND t.BASEID = #{map.objId} "); + paramMap.put("objId", objId); + } sql.append("ORDER BY NVL(t.ORDER_INDEX, 999999), t.HBRVNM ASC"); } - List list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), new HashMap<>(), WbsbVo.class); + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, WbsbVo.class); DataSourceResult result = new DataSourceResult<>(); result.setData(list); result.setTotal((long) list.size()); @@ -185,6 +219,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { @Override public DataSourceResult getDfltkwFacilityCount(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); String sql = """ SELECT c.dwtp AS dwtp, c.name AS name, @@ -213,7 +249,11 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { SUM(CASE WHEN NVL(t.BLDSTT_CODE, 0) = 2 THEN 1 ELSE 0 END) AS buildNum, SUM(CASE WHEN NVL(t.BLDSTT_CODE, 0) = 1 THEN 1 ELSE 0 END) AS zjNum FROM SD_DFLTKW_B_H t + LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD WHERE NVL(t.IS_DELETED, 0) = 0 + """ + (StrUtil.isNotBlank(baseId) ? """ + AND eng.BASE_ID LIKE #{map.baseId} + """ : "") + """ GROUP BY CASE WHEN t.STTP = 'DW_2' THEN '1' WHEN t.STTP = 'DW_5' THEN '2' @@ -224,7 +264,11 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { ON s.dwtp = c.dwtp ORDER BY c.sortOrder """; - List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, new HashMap<>(), DfltkwFacilityCountVo.class); + Map paramMap = new HashMap<>(); + if (StrUtil.isNotBlank(baseId)) { + paramMap.put("baseId", "%" + baseId + "%"); + } + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, DfltkwFacilityCountVo.class); DataSourceResult result = new DataSourceResult<>(); result.setData(list); result.setTotal((long) list.size()); @@ -389,6 +433,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { String startTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "startTime"); String endTime = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "endTime"); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); + String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); DataSourceResult result = new DataSourceResult<>(); if (StrUtil.isBlank(stcd) || StrUtil.isBlank(startTime) || StrUtil.isBlank(endTime)) { result.setData(new ArrayList<>()); @@ -421,13 +466,19 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("LEFT JOIN SD_WT_B_H wt ON wt.STCD = #{map.stcd} AND wt.IS_DELETED = 0 AND wt.STTP = 'WTRV' ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") .append("WHERE (t2.WT IS NOT NULL OR t3.WT IS NOT NULL) ") - .append(" AND t1.DT <= SYSDATE ") - .append("ORDER BY t1.DT DESC"); + .append(" AND t1.DT <= SYSDATE "); + if (StrUtil.isNotBlank(baseId)) { + sql.append(" AND eng.BASE_ID = #{map.baseId} "); + } + sql.append("ORDER BY t1.DT DESC"); Map paramMap = new HashMap<>(); paramMap.put("stcd", stcd); paramMap.put("startTime", startTime); paramMap.put("endTime", endTime); + if (StrUtil.isNotBlank(baseId)) { + paramMap.put("baseId", baseId); + } Page page = buildPage(dataSourceRequest.toDevRequest()); List wtFishVoList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WtFishVo.class); @@ -463,6 +514,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { DataSourceResult result = new DataSourceResult<>(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); String stcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); + String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); if (StrUtil.isBlank(stcd)) { result.setData(new ArrayList<>()); result.setTotal(0L); @@ -482,11 +534,15 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { "WHERE NVL(t1.IS_DELETED, 0) = 0 " + " AND t1.STCD = #{map.stcd} " + " AND t1.STTP = 'WTRV' " + + (StrUtil.isNotBlank(baseId) ? " AND eng.BASE_ID = #{map.baseId} " : "") + " AND t2.PRETEMP IS NOT NULL " + " AND t2.SPAWN_MONTH IS NOT NULL " + "ORDER BY NVL(t3.ORDER_INDEX, 999999), NVL(t2.ORDER_INDEX, 999999), t2.NAME"; Map paramMap = new HashMap<>(); paramMap.put("stcd", stcd); + if (StrUtil.isNotBlank(baseId)) { + paramMap.put("baseId", baseId); + } List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, FishSpawnVo.class); fillFishSpawnInfo(list); result.setData(list); @@ -500,6 +556,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); String mway = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "mway"); String sttpCode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode"); + String sttpFullPath = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpFullPath"); + String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd"); String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm"); @@ -507,6 +565,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { String dtin = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtin"); StringBuilder sql = new StringBuilder(); boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode); + boolean queryDwDirectly = StrUtil.isNotBlank(sttpCode) && sttpCode.toUpperCase().startsWith("DW_"); if (queryEngDirectly) { sql.append("SELECT ") .append("hb.BASENAME AS baseName, ") @@ -529,10 +588,42 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("FROM SD_ENGINFO_B_H eng ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ") .append("WHERE 1=1 "); + } else if (queryDwDirectly) { + sql.append("SELECT ") + .append("hb.BASENAME AS baseName, ") + .append("hb.BASEID AS baseId, ") + .append("hb.ORDER_INDEX AS baseStepSort, ") +// .append("NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, ") + .append("eng.ORDER_INDEX AS rstcdStepSort, ") + .append("dw.ORDER_INDEX AS siteStepSort, ") + .append("dw.STNM AS stnm, ") + .append("eng.ENNM AS ennm, ") + .append("dw.JCDT AS jcdt, ") + .append("NULL AS stindx, ") + .append("CASE WHEN NVL(dw.DTIN, 0) = 1 THEN 1 ELSE 0 END AS coenvwState, ") + .append("dw.STTP AS sttpCode, ") + .append("sttp.STTP_NAME AS sttpName, ") + .append("sttp.FULL_PATH AS sttpFullPath, ") + .append("dw.STCD AS stcd, ") + .append("dw.RSTCD AS rstcd, ") + .append("NULL AS stCode, ") + .append("NULL AS stName, ") + .append("eng.DVTP AS dvtp, ") + .append("eng.HBRVCD AS hbrvcd ") + .append("FROM SD_DFLTKW_B_H dw ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = dw.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 = dw.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ") + .append("WHERE NVL(dw.IS_DELETED, 0) = 0 "); } else { sql.append("SELECT ") .append("hb.BASENAME AS baseName, ") .append("hb.BASEID AS baseId, ") + .append("hb.ORDER_INDEX AS baseStepSort, ") + .append("NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, ") + .append("eng.ORDER_INDEX AS rstcdStepSort, ") + .append("wt.ORDER_INDEX AS siteStepSort, ") .append("wt.STNM AS stnm, ") .append("eng.ENNM AS ennm, ") .append("wt.JCDT AS jcdt, ") @@ -542,44 +633,61 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("WHEN wt.STTP = 'WTVT' AND vtRecent.STCD IS NOT NULL THEN 1 ") .append("ELSE 0 END AS coenvwState, ") .append("wt.STTP AS sttpCode, ") + .append("sttp.STTP_NAME AS sttpName, ") + .append("sttp.FULL_PATH AS sttpFullPath, ") .append("wt.STCD AS stcd, ") .append("wt.RSTCD AS rstcd, ") .append("NULL AS stCode, ") .append("NULL AS stName, ") .append("eng.DVTP AS dvtp, ") - .append("hb.ORDER_INDEX AS baseStepSort, ") - .append("eng.HBRVCD AS hbrvcd, ") - .append("eng.ORDER_INDEX AS rstcdStepSort ") -// .append("wt.ORDER_INDEX AS siteStepSort ") + .append("eng.HBRVCD AS hbrvcd ") .append("FROM SD_WT_B_H wt ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID ") + .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 wt.IS_DELETED = 0 AND wt.DTIN_TYPE = 0 "); } Map paramMap = new HashMap<>(); - if (!queryEngDirectly && mway != null && !mway.isBlank()) { + if (!queryEngDirectly && !queryDwDirectly && mway != null && !mway.isBlank()) { paramMap.put("mway", mway); sql.append("AND wt.MWAY = #{map.mway} "); } - if (!queryEngDirectly && sttpCode != null && !sttpCode.isBlank()) { + if (!queryEngDirectly && !queryDwDirectly && sttpCode != null && !sttpCode.isBlank()) { paramMap.put("sttpCode", sttpCode); sql.append("AND wt.STTP = #{map.sttpCode} "); } + if (queryDwDirectly && sttpCode != null && !sttpCode.isBlank()) { + paramMap.put("sttpCode", sttpCode); + sql.append("AND dw.STTP = #{map.sttpCode} "); + } if (rstcd != null && !rstcd.isBlank()) { paramMap.put("rstcd", rstcd); if (queryEngDirectly) { sql.append("AND eng.STCD = #{map.rstcd} "); + } else if (queryDwDirectly) { + sql.append("AND dw.RSTCD = #{map.rstcd} "); } else { sql.append("AND wt.RSTCD = #{map.rstcd} "); } } + if (baseId != null && !baseId.isBlank()) { + paramMap.put("baseId", baseId); + sql.append("AND eng.BASE_ID = #{map.baseId} "); + } + if (!queryEngDirectly && StrUtil.isNotBlank(sttpFullPath)) { + paramMap.put("sttpFullPath", "%" + sttpFullPath + "%"); + sql.append("AND sttp.FULL_PATH LIKE #{map.sttpFullPath} "); + } if (stcd != null && !stcd.isBlank()) { paramMap.put("stcd", stcd); if (queryEngDirectly) { sql.append("AND eng.STCD = #{map.stcd} "); + } else if (queryDwDirectly) { + sql.append("AND dw.STCD = #{map.stcd} "); } else { sql.append("AND wt.STCD = #{map.stcd} "); } @@ -588,6 +696,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { paramMap.put("stnm", "%" + stnm + "%"); if (queryEngDirectly) { sql.append("AND eng.ENNM LIKE #{map.stnm} "); + } else if (queryDwDirectly) { + sql.append("AND dw.STNM LIKE #{map.stnm} "); } else { sql.append("AND wt.STNM LIKE #{map.stnm} "); } @@ -597,6 +707,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { paramMap.put("dtin", dtin); if (queryEngDirectly) { sql.append("AND NVL(eng.DTIN, 0) = #{map.dtin} "); + } else if (queryDwDirectly) { + sql.append("AND NVL(dw.DTIN, 0) = #{map.dtin} "); } else { sql.append("AND wt.DTIN = #{map.dtin} "); } @@ -605,6 +717,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { paramMap.put("coenvwState", coenvwState); if (queryEngDirectly) { sql.append("AND CASE WHEN NVL(eng.DTIN, 0) = 1 THEN 1 ELSE 0 END = #{map.coenvwState} "); + } else if (queryDwDirectly) { + sql.append("AND CASE WHEN NVL(dw.DTIN, 0) = 1 THEN 1 ELSE 0 END = #{map.coenvwState} "); } else { sql.append("AND CASE ") .append("WHEN wt.STTP = 'WTRV' AND rvRecent.STCD IS NOT NULL THEN 1 ") @@ -630,6 +744,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { collectFilters(dataSourceRequest.getFilter(), filters); String stcd = null; + String baseId = null; String drtp = null; Object startTime = null; Object endTime = null; @@ -643,6 +758,8 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { for (DataSourceRequest.FilterDescriptor filter : filters) { if ("stcd".equals(filter.getField())) { stcd = toStringValue(filter.getValue()); + } else if ("baseId".equals(filter.getField())) { + baseId = toStringValue(filter.getValue()); } else if ("drtp".equals(filter.getField())) { drtp = toStringValue(filter.getValue()); } else if ("tm".equals(filter.getField()) && "gte".equals(filter.getOperator())) { @@ -669,6 +786,9 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } Integer wtDeviceType = sdWtMonitorMapper.getWtDeviceTypeByStcd(stcd); + if (StrUtil.isNotBlank(baseId) && !matchWtStationBaseId(stcd, baseId, "WTVT")) { + return emptyCxDetailResult(wtDeviceType, drtp); + } StringBuilder sql = new StringBuilder(); Map paramMap = new HashMap<>(); paramMap.put("stcd", stcd); @@ -1170,6 +1290,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { "t.WT AS wt, " + "t.STTP AS sttp, " + "t.STTPCODE AS sttpCode, " + + "t.BASEID AS baseId, " + "t.BEFOREWT AS beforeWt, " + "t.ACTUALTEMP AS actualTemp " + "FROM ( " + @@ -1177,6 +1298,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { " t2.WT AS wt, " + " 'WT' AS sttp, " + " wt.STTP AS sttpCode, " + + " eng.BASE_ID AS baseId, " + " wt.STCD AS stcd, " + " wt.STNM AS stnm, " + " t3.WT AS beforeWt, " + @@ -1202,6 +1324,9 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { " ON wt.STCD = #{map.stcd} " + " AND wt.STTP = 'WTRV' " + " AND NVL(wt.IS_DELETED, 0) = 0 " + + " LEFT JOIN SD_ENGINFO_B_H eng " + + " ON eng.STCD = wt.RSTCD " + +// " AND NVL(eng.IS_DELETED, 0) = 0 " + " LEFT JOIN (SELECT STCD, WT " + " FROM SD_WTNP_B " + " WHERE NVL(IS_DELETED, 0) = 0 " + @@ -1220,6 +1345,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("t.DT AS dt, ") .append("t.WT AS wt, ") .append("t.STTP AS sttp, ") + .append("t.BASEID AS baseId, ") .append("t.SUMVAL AS sumVal, ") .append("t.SUMCOUNT AS sumCount, ") .append("t.BEFOREWT AS beforeWt, ") @@ -1228,6 +1354,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append(" SELECT dayData.STCD, ") .append(" wt.STNM, ") .append(" wt.RSTCD, ") + .append(" eng.BASE_ID AS baseId, ") .append(" dayData.DT, ") .append(" dayData.WT, ") .append(" np.WT AS naturalTemp, ") @@ -1246,6 +1373,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append(" INNER JOIN SD_WT_B_H wt ON wt.STCD = dayData.STCD ") .append(" AND wt.STTP = 'WTRV' ") .append(" AND NVL(wt.IS_DELETED, 0) = 0 ") + .append(" LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") .append(" LEFT JOIN ("); if (hasMonth) { sql.append("SELECT STCD, WT FROM SD_WTNP_B ") @@ -1394,6 +1522,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { return switch (field) { case "stcd" -> "t.STCD"; case "stnm" -> "t.STNM"; + case "baseId" -> "t.BASEID"; case "dt" -> "t.DT"; case "wt", "actualTemp" -> "t.WT"; case "sttp" -> "t.STTP"; @@ -1506,6 +1635,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { case "sttp" -> "t.STTP"; case "sttpCode" -> "t.STTPCODE"; case "stnm" -> "t.STNM"; + case "baseId" -> "t.BASEID"; default -> null; }; } @@ -1656,24 +1786,26 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { String field = sortDescriptor.getField(); String dir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"; if ("baseStepSort".equals(field)) { - orderColumns.add("NVL(hb.ORDER_INDEX, 999999) " + dir); + orderColumns.add("NVL(baseStepSort, 999999) " + dir); + } else if ("rvcdStepSort".equals(field)) { +// orderColumns.add("NVL(rvcdStepSort, 999999) " + dir); } else if ("hbrvcd".equals(field)) { - orderColumns.add("NVL(eng.HBRVCD, '~') " + dir); + orderColumns.add("NVL(hbrvcd, '~') " + dir); } else if ("rstcdStepSort".equals(field)) { - orderColumns.add("NVL(eng.ORDER_INDEX, 999999) " + dir); + orderColumns.add("NVL(rstcdStepSort, 999999) " + dir); } else if ("siteStepSort".equals(field)) { -// orderColumns.add("NVL(wt.ORDER_INDEX, 999999) " + dir); + orderColumns.add("NVL(siteStepSort, 999999) " + dir); } else if ("stnm".equals(field)) { - orderColumns.add("wt.STNM " + dir); + orderColumns.add("NVL(stnm, '~') " + dir); } else if ("ennm".equals(field)) { - orderColumns.add("eng.ENNM " + dir); + orderColumns.add("NVL(ennm, '~') " + dir); } else if ("stcd".equals(field)) { - orderColumns.add("wt.STCD " + dir); + orderColumns.add("NVL(stcd, '~') " + dir); } } } if (orderColumns.isEmpty()) { - return " ORDER BY NVL(hb.ORDER_INDEX, 999999) ASC, NVL(eng.HBRVCD, '~') ASC, NVL(eng.ORDER_INDEX, 999999) ASC"; + return " ORDER BY NVL(baseStepSort, 999999) ASC, NVL(rstcdStepSort, 999999) ASC"; } return " ORDER BY " + String.join(", ", orderColumns); } @@ -1798,6 +1930,25 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .collect(Collectors.toList()); } + private boolean matchWtStationBaseId(String stcd, String baseId, String sttp) { + if (StrUtil.isBlank(stcd) || StrUtil.isBlank(baseId)) { + return true; + } + String sql = "SELECT 1 AS flag " + + "FROM SD_WT_B_H wt " + + "INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD " + + "WHERE NVL(wt.IS_DELETED, 0) = 0 " + + " AND wt.STCD = #{map.stcd} " + + " AND wt.STTP = #{map.sttp} " + + " AND eng.BASE_ID = #{map.baseId}"; + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + paramMap.put("sttp", sttp); + paramMap.put("baseId", baseId); + List> list = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + return list != null && !list.isEmpty(); + } + private void fillFishList(List wtFishVoList, List fishSpawnVoList) { if (wtFishVoList == null || wtFishVoList.isEmpty() || fishSpawnVoList == null || fishSpawnVoList.isEmpty()) { return; diff --git a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtvtRServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtvtRServiceImpl.java index 04b05ad..22d2868 100644 --- a/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtvtRServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wt/service/impl/SdWtvtRServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.env.wt.entity.vo.SdWtvtYearVo; import com.yfd.platform.env.wt.mapper.SdWtvtRMapper; import com.yfd.platform.env.wt.service.SdWtvtRService; @@ -12,7 +13,9 @@ import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 垂向水温Service实现类 @@ -26,21 +29,45 @@ public class SdWtvtRServiceImpl extends ServiceImpl @Resource private SdWtvtRMapper sdWtvtRMapper; + @Resource + private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + @Override public DataSourceResult getWtrvDefaultYear(DataSourceRequest dataSourceRequest) { DataSourceResult dataSourceResult = new DataSourceResult<>(); DataSourceLoadOptionsBase loadOptionsBase = dataSourceRequest.toDevRequest(); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "stcd"); + String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptionsBase, "baseId"); if (StringUtils.isNotBlank(stcd)) { stcd = stcd.replaceAll("\\[", "") .replaceAll("]", "") .replaceAll("\"", ""); } + if (StringUtils.isNotBlank(baseId) && !matchWtvtBaseId(stcd, baseId)) { + dataSourceResult.setTotal(0L); + dataSourceResult.setData(List.of()); + return dataSourceResult; + } List result = sdWtvtRMapper.getWtrvDefaultYear(stcd); dataSourceResult.setTotal(result.size()); dataSourceResult.setData(result); return dataSourceResult; } + + private boolean matchWtvtBaseId(String stcd, String baseId) { + String sql = "SELECT 1 AS flag " + + "FROM SD_WT_B_H wt " + + "INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD " + + "WHERE NVL(wt.IS_DELETED, 0) = 0 " + + " AND wt.STTP = 'WTVT' " + + " AND wt.STCD = #{map.stcd} " + + " AND eng.BASE_ID = #{map.baseId}"; + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + paramMap.put("baseId", baseId); + List> result = microservicDynamicSQLMapper.pageAllList(null, sql, paramMap); + return result != null && !result.isEmpty(); + } }