From eb9fe31b319946d0dfe055c557158bfcd7674d1d Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 4 Sep 2026 10:45:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SdEngMonitorController.java | 2 +- .../qgc_base/domain/vo/EngStInfoResultVo.java | 2 +- .../qgc_base/domain/vo/EngVmsstbprptVo.java | 6 ++ .../qgc_base/service/ISdEngInfoBHService.java | 2 + .../service/impl/SdEngInfoBHServiceImpl.java | 71 +++++++++++++++- .../vd/service/impl/VdMonitorServiceImpl.java | 82 +++++++++---------- 6 files changed, 120 insertions(+), 45 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java index 82432c41..35a71734 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngMonitorController.java @@ -25,7 +25,7 @@ public class SdEngMonitorController { private ISdEngInfoBHService engInfoBHService; @GetMapping("/msstbprpt/getStInfoByStcd") - @Operation(summary = "根据站码查询单条电站基础数据") + @Operation(summary = "根据站码查询电站基础数据及关联站点列表") public ResponseResult getStInfoByStcd(@RequestParam String stcd) { return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd)); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java index a409c84a..3e9c7928 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java @@ -19,7 +19,7 @@ public class EngStInfoResultVo { private List stcdValVoList = new ArrayList<>(); @Schema(description = "关联列表") - private List relList = new ArrayList<>(); + private List relList = new ArrayList<>(); @Schema(description = "站点基础信息") private EngStBaseInfoVo stBaseInfo; diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java index e92d5a90..c05664ae 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java @@ -6,7 +6,9 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; +import java.util.List; @Data @Schema(description = "电站统计查询") @@ -246,4 +248,8 @@ public class EngVmsstbprptVo implements Serializable { private String bhhl; /** 保护核心长度 */ private BigDecimal qxdbhhxcd; + + @Schema(description = "关联列表") + private List relList = new ArrayList<>(); + } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java index d0247d7b..985cbee0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java @@ -84,6 +84,8 @@ public interface ISdEngInfoBHService extends IService { EngVmsstbprptVo getStInfoByStcd(String stcd); + EngStInfoResultVo getStInfoResultByStcd(String stcd); + EngStInfoResultVo getStcdInfo(String stcd); DataSourceResult getEiaapprovalKendoList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index b0a27793..3b5e04fc 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -1023,9 +1023,41 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + + String selectCols = "STCD AS stcd, STNM AS stnm, STTP_CODE AS sttpCode, STTP_NAME AS sttpName, " + + "STTP_FULL_PATH AS sttpFullPath, STTP_TREE_LEVEL AS sttpTreeLevel, " + + "BASE_ID AS baseId, BASE_NAME AS baseName, HBRVCD AS hbrvcd, " + + "HBRVCD_NAME AS hbrvcdName, RVCD AS rvcd, RVCD_NAME AS rvcdName "; + + EngStInfoResultVo vo = new EngStInfoResultVo(); + + // 主站点基础信息 + vo.setStBaseInfo(microservicDynamicSQLMapper.getOneBySqlWithResultType( + "SELECT " + selectCols + + "FROM V_MS_STBPRP_T " + + "WHERE STCD = #{map.stcd} AND NVL(IS_DELETED, 0) = 0", + paramMap, + EngStBaseInfoVo.class)); + + // 关联站点列表(站类全路径包含当前站点的其他站点) + List relList = microservicDynamicSQLMapper.getAllListWithResultType( + "SELECT " + selectCols + + "FROM V_MS_STBPRP_T " + + "WHERE NVL(IS_DELETED, 0) = 0 " + + "AND ST_FULL_PATH LIKE CONCAT(CONCAT('%', #{map.stcd}), '%')", + paramMap, + EngStBaseInfoVo.class); + if (relList != null) { + vo.setRelList(relList); + } // 非 ENG:直接从 V_MS_STBPRP_T 视图返回 String viewSql = "SELECT *,SWDT STSTDT FROM V_MS_STBPRP_T WHERE STCD = #{map.stcd} AND IS_DELETED = 0"; - return microservicDynamicSQLMapper.getOneBySqlWithResultType(viewSql, Collections.singletonMap("stcd", stcd), EngVmsstbprptVo.class); + EngVmsstbprptVo engVmsstbprptVo= microservicDynamicSQLMapper.getOneBySqlWithResultType(viewSql, Collections.singletonMap("stcd", stcd), EngVmsstbprptVo.class); + engVmsstbprptVo.setRelList(relList); + return engVmsstbprptVo; } // ENG 走原有逻辑 @@ -1037,6 +1069,43 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + + String selectCols = "STCD AS stcd, STNM AS stnm, STTP_CODE AS sttpCode, STTP_NAME AS sttpName, " + + "STTP_FULL_PATH AS sttpFullPath, STTP_TREE_LEVEL AS sttpTreeLevel, " + + "BASE_ID AS baseId, BASE_NAME AS baseName, HBRVCD AS hbrvcd, " + + "HBRVCD_NAME AS hbrvcdName, RVCD AS rvcd, RVCD_NAME AS rvcdName "; + + EngStInfoResultVo vo = new EngStInfoResultVo(); + + // 主站点基础信息 + vo.setStBaseInfo(microservicDynamicSQLMapper.getOneBySqlWithResultType( + "SELECT " + selectCols + + "FROM V_MS_STBPRP_T " + + "WHERE STCD = #{map.stcd} AND NVL(IS_DELETED, 0) = 0", + paramMap, + EngStBaseInfoVo.class)); + + // 关联站点列表(站类全路径包含当前站点的其他站点) + List relList = microservicDynamicSQLMapper.getAllListWithResultType( + "SELECT " + selectCols + + "FROM V_MS_STBPRP_T " + + "WHERE NVL(IS_DELETED, 0) = 0 " + + "AND ST_FULL_PATH LIKE CONCAT(CONCAT('%', #{map.stcd}), '%')", + paramMap, + EngStBaseInfoVo.class); + if (relList != null) { + vo.setRelList(relList); + } + return vo; + } + private String buildVmsstbprptViewSqlNew() { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index a49616a6..65399238 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -625,19 +625,19 @@ public class VdMonitorServiceImpl implements VdMonitorService { "src.STNM AS stnm, " + "src.MNTP AS mntp, " + "src.STTP AS sttpCode, " + - "sttp.STTP_NAME AS sttpName, " + - "sttp.FULL_PATH AS sttpFullPath, " + + "src.STTP_NAME AS sttpName, " + + "src.STTP_FULL_PATH AS sttpFullPath, " + "src.RSTCD AS rstcd, " + - "eng.ENNM AS ennm, " + + "src.ENNM AS ennm, " + "src.FHSTCD AS fhstcd, " + - "fh.STNM AS fhstnm, " + - "src.CSTCD AS stCode, " + - "cst.STNM AS stName, " + - "NVL(eng.BASE_ID, src.BASE_ID) AS baseId, " + - "hb.BASENAME AS baseName, " + - "NVL(eng.HBRVCD, src.HBRVCD) AS hbrvcd, " + - "NVL(eng.RVCD, src.RVCD) AS rvcd, " + - "NVL(eng.ADDVCD, src.ADDVCD) AS addvcd, " + + "src.FHSTNM AS fhstnm, " + + "src.STCODE AS stCode, " + + "src.STNAME AS stName, " + + "src.BASE_ID AS baseId, " + + "src.BASE_NAME AS baseName, " + + "src.HBRVCD AS hbrvcd, " + + "src.RVCD AS rvcd, " + + "src.ADDVCD AS addvcd, " + "src.STLC AS stlc, " + "src.LGTD AS lgtd, " + "src.LTTD AS lttd, " + @@ -656,20 +656,12 @@ public class VdMonitorServiceImpl implements VdMonitorService { "src.VLSR AS vlsr, " + "src.VLSR_TM AS vlsrTm, " + "src.URL AS url, " + - "CASE WHEN src.URL IS NULL THEN NULL WHEN INSTR(src.URL, 'm3u8') > 0 THEN 1 ELSE 0 END AS playWay, " + - "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + - "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + - "NVL(src.ORDER_INDEX, 999999) AS siteStepSort, " + + "src.PLAYWAY AS playWay, " + + "NVL(src.BASESTEPSORT, 999999) AS baseStepSort, " + + "NVL(src.RSTCDSTEPSORT, 999999) AS rstcdStepSort, " + + "NVL(src.SITESTEPSORT, 999999) AS siteStepSort, " + "src.SOURCE_TABLE AS sourceTable " + - "FROM (" + - buildVdDeviceBaseSql() + - ") src " + - "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + - "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, src.BASE_ID) AND NVL(hb.IS_DELETED, 0) = 0 " + - "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = src.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + - "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = src.CSTCD " + - "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; + "FROM V_MS_STBPRP_T src "; } private String buildVdTreeCoreSql() { @@ -716,26 +708,32 @@ public class VdMonitorServiceImpl implements VdMonitorService { "WHERE base.STTP LIKE 'VD_%' "; } + + private String buildVdDeviceBaseSql() { - return "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " + - " vd.JCDT, vd.WDDT, vd.BLDSTT_CODE, vd.USFL, vd.DTIN, vd.STINDX, vd.RSTCD, vd.BASE_ID, " + - " vd.HBRVCD, vd.RVCD, vd.ADDVCD, vd.CSTCD, vd.FHSTCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " + - " CAST(NULL AS VARCHAR2(255)) AS LOGO, CAST(NULL AS VARCHAR2(1000)) AS INFFILE, " + - " vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, vd.URL AS URL, vd.DEVICE_SERIAL, vd.ACCESS_WAY, " + - " vd.PROTOCOL, vd.QUALITY, vd.CONTROL_MODE, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " + - " 'SD_VDINFO_B' AS SOURCE_TABLE " + - "FROM SD_VDINFO_B vd WHERE 1=1 " + -// " AND vd.STTP = 'VD_FP' "+ - "UNION ALL " + - "SELECT sonar.STCD, sonar.STNM, sonar.MNTP, sonar.STTP, sonar.LGTD, sonar.LTTD, sonar.ELEV, sonar.STLC, " + - " sonar.JCDT, sonar.WDDT, sonar.BLDSTT_CODE, sonar.USFL, sonar.DTIN, sonar.STINDX, sonar.RSTCD, sonar.BASE_ID, " + - " sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, CAST(NULL AS VARCHAR2(36)) AS CSTCD, CAST(NULL AS VARCHAR2(36)) AS FHSTCD, " + - " sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, CAST(NULL AS VARCHAR2(512)) AS URL, " + - " CAST(NULL AS VARCHAR2(255)) AS DEVICE_SERIAL, CAST(NULL AS VARCHAR2(10)) AS ACCESS_WAY, " + - " CAST(NULL AS VARCHAR2(50)) AS PROTOCOL, CAST(NULL AS VARCHAR2(50)) AS QUALITY, CAST(NULL AS VARCHAR2(2048)) AS CONTROL_MODE, sonar.ORDER_INDEX, " + - " 'SD_SONAR_B_H' AS SOURCE_TABLE " + - "FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') "; + return "SELECT * FROM V_MS_STBPRP_T"; } +// +// private String buildVdDeviceBaseSql() { +// return "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " + +// " vd.JCDT, vd.WDDT, vd.BLDSTT_CODE, vd.USFL, vd.DTIN, vd.STINDX, vd.RSTCD, vd.BASE_ID, " + +// " vd.HBRVCD, vd.RVCD, vd.ADDVCD, vd.CSTCD, vd.FHSTCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " + +// " CAST(NULL AS VARCHAR2(255)) AS LOGO, CAST(NULL AS VARCHAR2(1000)) AS INFFILE, " + +// " vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, vd.URL AS URL, vd.DEVICE_SERIAL, vd.ACCESS_WAY, " + +// " vd.PROTOCOL, vd.QUALITY, vd.CONTROL_MODE, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " + +// " 'SD_VDINFO_B' AS SOURCE_TABLE " + +// "FROM SD_VDINFO_B vd WHERE 1=1 " + +//// " AND vd.STTP = 'VD_FP' "+ +// "UNION ALL " + +// "SELECT sonar.STCD, sonar.STNM, sonar.MNTP, sonar.STTP, sonar.LGTD, sonar.LTTD, sonar.ELEV, sonar.STLC, " + +// " sonar.JCDT, sonar.WDDT, sonar.BLDSTT_CODE, sonar.USFL, sonar.DTIN, sonar.STINDX, sonar.RSTCD, sonar.BASE_ID, " + +// " sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, CAST(NULL AS VARCHAR2(36)) AS CSTCD, CAST(NULL AS VARCHAR2(36)) AS FHSTCD, " + +// " sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, CAST(NULL AS VARCHAR2(512)) AS URL, " + +// " CAST(NULL AS VARCHAR2(255)) AS DEVICE_SERIAL, CAST(NULL AS VARCHAR2(10)) AS ACCESS_WAY, " + +// " CAST(NULL AS VARCHAR2(50)) AS PROTOCOL, CAST(NULL AS VARCHAR2(50)) AS QUALITY, CAST(NULL AS VARCHAR2(2048)) AS CONTROL_MODE, sonar.ORDER_INDEX, " + +// " 'SD_SONAR_B_H' AS SOURCE_TABLE " + +// "FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') "; +// } private String buildVdPointCoreSql() { return "SELECT " +