fix: 优化逻辑

This commit is contained in:
tangwei 2026-09-04 10:45:32 +08:00
parent 59ff341aa0
commit eb9fe31b31
6 changed files with 120 additions and 45 deletions

View File

@ -25,7 +25,7 @@ public class SdEngMonitorController {
private ISdEngInfoBHService engInfoBHService; private ISdEngInfoBHService engInfoBHService;
@GetMapping("/msstbprpt/getStInfoByStcd") @GetMapping("/msstbprpt/getStInfoByStcd")
@Operation(summary = "根据站码查询单条电站基础数据") @Operation(summary = "根据站码查询电站基础数据及关联站点列表")
public ResponseResult getStInfoByStcd(@RequestParam String stcd) { public ResponseResult getStInfoByStcd(@RequestParam String stcd) {
return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd)); return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd));
} }

View File

@ -19,7 +19,7 @@ public class EngStInfoResultVo {
private List<Object> stcdValVoList = new ArrayList<>(); private List<Object> stcdValVoList = new ArrayList<>();
@Schema(description = "关联列表") @Schema(description = "关联列表")
private List<Object> relList = new ArrayList<>(); private List<EngStBaseInfoVo> relList = new ArrayList<>();
@Schema(description = "站点基础信息") @Schema(description = "站点基础信息")
private EngStBaseInfoVo stBaseInfo; private EngStBaseInfoVo stBaseInfo;

View File

@ -6,7 +6,9 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
@Schema(description = "电站统计查询") @Schema(description = "电站统计查询")
@ -246,4 +248,8 @@ public class EngVmsstbprptVo implements Serializable {
private String bhhl; private String bhhl;
/** 保护核心长度 */ /** 保护核心长度 */
private BigDecimal qxdbhhxcd; private BigDecimal qxdbhhxcd;
@Schema(description = "关联列表")
private List<EngStBaseInfoVo> relList = new ArrayList<>();
} }

View File

@ -84,6 +84,8 @@ public interface ISdEngInfoBHService extends IService<SdEngInfoBH> {
EngVmsstbprptVo getStInfoByStcd(String stcd); EngVmsstbprptVo getStInfoByStcd(String stcd);
EngStInfoResultVo getStInfoResultByStcd(String stcd);
EngStInfoResultVo getStcdInfo(String stcd); EngStInfoResultVo getStcdInfo(String stcd);
DataSourceResult<EngEiaapprovalVo> getEiaapprovalKendoList(DataSourceRequest dataSourceRequest); DataSourceResult<EngEiaapprovalVo> getEiaapprovalKendoList(DataSourceRequest dataSourceRequest);

View File

@ -1023,9 +1023,41 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
String sttpCode = checkResult != null ? (String) checkResult.get("STTP_CODE") : null; String sttpCode = checkResult != null ? (String) checkResult.get("STTP_CODE") : null;
if (!"ENG".equals(sttpCode)) { if (!"ENG".equals(sttpCode)) {
// 关联站点列表站类全路径包含当前站点的其他站点
Map<String, Object> 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<EngStBaseInfoVo> 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 视图返回 // ENG直接从 V_MS_STBPRP_T 视图返回
String viewSql = "SELECT *,SWDT STSTDT FROM V_MS_STBPRP_T WHERE STCD = #{map.stcd} AND IS_DELETED = 0"; 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 走原有逻辑 // ENG 走原有逻辑
@ -1037,6 +1069,43 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
return microservicDynamicSQLMapper.getOneBySqlWithResultType(sql.toString(), Collections.singletonMap("stcd", stcd), EngVmsstbprptVo.class); return microservicDynamicSQLMapper.getOneBySqlWithResultType(sql.toString(), Collections.singletonMap("stcd", stcd), EngVmsstbprptVo.class);
} }
@Override
public EngStInfoResultVo getStInfoResultByStcd(String stcd) {
if (StrUtil.isBlank(stcd)) {
throw new BizException("站点编码(stcd)不能为空!");
}
Map<String, Object> 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<EngStBaseInfoVo> 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() { private String buildVmsstbprptViewSqlNew() {

View File

@ -625,19 +625,19 @@ public class VdMonitorServiceImpl implements VdMonitorService {
"src.STNM AS stnm, " + "src.STNM AS stnm, " +
"src.MNTP AS mntp, " + "src.MNTP AS mntp, " +
"src.STTP AS sttpCode, " + "src.STTP AS sttpCode, " +
"sttp.STTP_NAME AS sttpName, " + "src.STTP_NAME AS sttpName, " +
"sttp.FULL_PATH AS sttpFullPath, " + "src.STTP_FULL_PATH AS sttpFullPath, " +
"src.RSTCD AS rstcd, " + "src.RSTCD AS rstcd, " +
"eng.ENNM AS ennm, " + "src.ENNM AS ennm, " +
"src.FHSTCD AS fhstcd, " + "src.FHSTCD AS fhstcd, " +
"fh.STNM AS fhstnm, " + "src.FHSTNM AS fhstnm, " +
"src.CSTCD AS stCode, " + "src.STCODE AS stCode, " +
"cst.STNM AS stName, " + "src.STNAME AS stName, " +
"NVL(eng.BASE_ID, src.BASE_ID) AS baseId, " + "src.BASE_ID AS baseId, " +
"hb.BASENAME AS baseName, " + "src.BASE_NAME AS baseName, " +
"NVL(eng.HBRVCD, src.HBRVCD) AS hbrvcd, " + "src.HBRVCD AS hbrvcd, " +
"NVL(eng.RVCD, src.RVCD) AS rvcd, " + "src.RVCD AS rvcd, " +
"NVL(eng.ADDVCD, src.ADDVCD) AS addvcd, " + "src.ADDVCD AS addvcd, " +
"src.STLC AS stlc, " + "src.STLC AS stlc, " +
"src.LGTD AS lgtd, " + "src.LGTD AS lgtd, " +
"src.LTTD AS lttd, " + "src.LTTD AS lttd, " +
@ -656,20 +656,12 @@ public class VdMonitorServiceImpl implements VdMonitorService {
"src.VLSR AS vlsr, " + "src.VLSR AS vlsr, " +
"src.VLSR_TM AS vlsrTm, " + "src.VLSR_TM AS vlsrTm, " +
"src.URL AS url, " + "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, " + "src.PLAYWAY AS playWay, " +
"NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + "NVL(src.BASESTEPSORT, 999999) AS baseStepSort, " +
"NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + "NVL(src.RSTCDSTEPSORT, 999999) AS rstcdStepSort, " +
"NVL(src.ORDER_INDEX, 999999) AS siteStepSort, " + "NVL(src.SITESTEPSORT, 999999) AS siteStepSort, " +
"src.SOURCE_TABLE AS sourceTable " + "src.SOURCE_TABLE AS sourceTable " +
"FROM (" + "FROM V_MS_STBPRP_T src ";
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 ";
} }
private String buildVdTreeCoreSql() { private String buildVdTreeCoreSql() {
@ -716,26 +708,32 @@ public class VdMonitorServiceImpl implements VdMonitorService {
"WHERE base.STTP LIKE 'VD_%' "; "WHERE base.STTP LIKE 'VD_%' ";
} }
private String buildVdDeviceBaseSql() { private String buildVdDeviceBaseSql() {
return "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " + return "SELECT * FROM V_MS_STBPRP_T";
" 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 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() { private String buildVdPointCoreSql() {
return "SELECT " + return "SELECT " +