feat: 根据条件查询视频监控设备基础数据

This commit is contained in:
tangwei 2026-06-01 10:03:52 +08:00
parent ef1a76223d
commit 6fc80d7199
3 changed files with 110 additions and 43 deletions

View File

@ -29,6 +29,12 @@ public class VdMonitorController {
return ResponseResult.successData(vdMonitorService.getVmsstbprptList(dataSourceRequest));
}
@PostMapping("/msstbprpt/GetKendoList")
@Operation(summary = "根据条件查询视频监控设备基础数据")
public ResponseResult getMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(vdMonitorService.getVmsstbprptList(dataSourceRequest));
}
@GetMapping("/msstbprpt/getStcdInfo")
@Operation(summary = "根据站码查询单条视频监控设备详情")
public ResponseResult getStcdInfo(@RequestParam String stcd) {

View File

@ -46,6 +46,18 @@ public class VdVmsstbprptVo implements Serializable {
@Schema(description = "所属电站名称")
private String ennm;
@Schema(description = "所属栖息地编码")
private String fhstcd;
@Schema(description = "所属栖息地名称")
private String fhstnm;
@Schema(description = "所属测站编码")
private String stCode;
@Schema(description = "所属测站名称")
private String stName;
@Schema(description = "基地编码")
private String baseId;
@ -118,6 +130,12 @@ public class VdVmsstbprptVo implements Serializable {
@Schema(description = "数据来源时间")
private Date vlsrTm;
@Schema(description = "视频播放地址")
private String url;
@Schema(description = "播放方式")
private Integer playWay;
@Schema(description = "基地排序")
private Integer baseStepSort;

View File

@ -58,6 +58,10 @@ public class VdMonitorServiceImpl implements VdMonitorService {
.append("t.sttpFullPath AS sttpFullPath, ")
.append("t.rstcd AS rstcd, ")
.append("t.ennm AS ennm, ")
.append("t.fhstcd AS fhstcd, ")
.append("t.fhstnm AS fhstnm, ")
.append("t.stCode AS stCode, ")
.append("t.stName AS stName, ")
.append("t.baseId AS baseId, ")
.append("t.baseName AS baseName, ")
.append("t.hbrvcd AS hbrvcd, ")
@ -85,6 +89,8 @@ public class VdMonitorServiceImpl implements VdMonitorService {
.append("t.remark AS remark, ")
.append("t.vlsr AS vlsr, ")
.append("t.vlsrTm AS vlsrTm, ")
.append("t.url AS url, ")
.append("t.playWay AS playWay, ")
.append("t.baseStepSort AS baseStepSort, ")
.append("t.rstcdStepSort AS rstcdStepSort, ")
.append("t.siteStepSort AS siteStepSort, ")
@ -149,45 +155,7 @@ public class VdMonitorServiceImpl implements VdMonitorService {
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("t.stcd AS stcd, ")
.append("t.stnm AS stnm, ")
.append("t.mntp AS mntp, ")
.append("t.sttpCode AS sttpCode, ")
.append("t.sttpName AS sttpName, ")
.append("t.sttpFullPath AS sttpFullPath, ")
.append("t.rstcd AS rstcd, ")
.append("t.ennm AS ennm, ")
.append("t.baseId AS baseId, ")
.append("t.baseName AS baseName, ")
.append("t.hbrvcd AS hbrvcd, ")
.append("t.rvcd AS rvcd, ")
.append("t.addvcd AS addvcd, ")
.append("t.stlc AS stlc, ")
.append("t.lgtd AS lgtd, ")
.append("t.lttd AS lttd, ")
.append("t.elev AS elev, ")
.append("t.jcdt AS jcdt, ")
.append("t.wddt AS wddt, ")
.append("t.dtin AS dtin, ")
.append("CASE WHEN NVL(t.dtin, 0) = 1 THEN '已接入' ELSE '未接入' END AS dtinName, ")
.append("t.usfl AS usfl, ")
.append("t.bldsttCcode AS bldsttCcode, ")
.append("CASE ")
.append("WHEN t.bldsttCcode IN (1, 10, 11) THEN '已建' ")
.append("WHEN t.bldsttCcode IN (2, 7, 8) THEN '在建' ")
.append("ELSE '未建/规划' END AS bldsttCcodeName, ")
.append("t.stindx AS stindx, ")
.append("t.introduce AS introduce, ")
.append("t.logo AS logo, ")
.append("t.inffile AS inffile, ")
.append("t.dtfrqcy AS dtfrqcy, ")
.append("t.remark AS remark, ")
.append("t.vlsr AS vlsr, ")
.append("t.vlsrTm AS vlsrTm, ")
.append("t.baseStepSort AS baseStepSort, ")
.append("t.rstcdStepSort AS rstcdStepSort, ")
.append("t.siteStepSort AS siteStepSort, ")
.append("t.sourceTable AS sourceTable ")
.append(buildVmsstbprptDetailSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
.append("FROM (")
.append(buildVmsstbprptViewSql())
.append(") t WHERE 1 = 1 ");
@ -205,6 +173,67 @@ public class VdMonitorServiceImpl implements VdMonitorService {
return result;
}
private String buildVmsstbprptDetailSelectSql(List<String> selectFields) {
Map<String, String> selectMap = new LinkedHashMap<>();
selectMap.put("stcd", "t.stcd AS stcd");
selectMap.put("stnm", "t.stnm AS stnm");
selectMap.put("mntp", "t.mntp AS mntp");
selectMap.put("sttpCode", "t.sttpCode AS sttpCode");
selectMap.put("sttpName", "t.sttpName AS sttpName");
selectMap.put("sttpFullPath", "t.sttpFullPath AS sttpFullPath");
selectMap.put("rstcd", "t.rstcd AS rstcd");
selectMap.put("ennm", "t.ennm AS ennm");
selectMap.put("fhstcd", "t.fhstcd AS fhstcd");
selectMap.put("fhstnm", "t.fhstnm AS fhstnm");
selectMap.put("stCode", "t.stCode AS stCode");
selectMap.put("stName", "t.stName AS stName");
selectMap.put("baseId", "t.baseId AS baseId");
selectMap.put("baseName", "t.baseName AS baseName");
selectMap.put("hbrvcd", "t.hbrvcd AS hbrvcd");
selectMap.put("rvcd", "t.rvcd AS rvcd");
selectMap.put("addvcd", "t.addvcd AS addvcd");
selectMap.put("stlc", "t.stlc AS stlc");
selectMap.put("lgtd", "t.lgtd AS lgtd");
selectMap.put("lttd", "t.lttd AS lttd");
selectMap.put("elev", "t.elev AS elev");
selectMap.put("jcdt", "t.jcdt AS jcdt");
selectMap.put("wddt", "t.wddt AS wddt");
selectMap.put("dtin", "t.dtin AS dtin");
selectMap.put("dtinName", "CASE WHEN NVL(t.dtin, 0) = 1 THEN '已接入' ELSE '未接入' END AS dtinName");
selectMap.put("usfl", "t.usfl AS usfl");
selectMap.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode");
selectMap.put("bldsttCcodeName", "CASE WHEN t.bldsttCcode IN (1, 10, 11) THEN '已建' WHEN t.bldsttCcode IN (2, 7, 8) THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName");
selectMap.put("stindx", "t.stindx AS stindx");
selectMap.put("introduce", "t.introduce AS introduce");
selectMap.put("logo", "t.logo AS logo");
selectMap.put("inffile", "t.inffile AS inffile");
selectMap.put("dtfrqcy", "t.dtfrqcy AS dtfrqcy");
selectMap.put("remark", "t.remark AS remark");
selectMap.put("vlsr", "t.vlsr AS vlsr");
selectMap.put("vlsrTm", "t.vlsrTm AS vlsrTm");
selectMap.put("url", "t.url AS url");
selectMap.put("playWay", "t.playWay AS playWay");
selectMap.put("baseStepSort", "t.baseStepSort AS baseStepSort");
selectMap.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort");
selectMap.put("siteStepSort", "t.siteStepSort AS siteStepSort");
selectMap.put("sourceTable", "t.sourceTable AS sourceTable");
if (CollUtil.isEmpty(selectFields)) {
return String.join(", ", selectMap.values()) + " ";
}
List<String> actualColumns = new ArrayList<>();
for (String selectField : selectFields) {
String column = selectMap.get(selectField);
if (StrUtil.isNotBlank(column)) {
actualColumns.add(column);
}
}
if (actualColumns.isEmpty()) {
actualColumns.addAll(selectMap.values());
}
return String.join(", ", actualColumns) + " ";
}
private DataSourceResult<VdRunDataVo> queryRunDataDetailList(DataSourceRequest dataSourceRequest,
DataSourceLoadOptionsBase loadOptions) {
StringBuilder sql = new StringBuilder();
@ -310,6 +339,10 @@ public class VdMonitorServiceImpl implements VdMonitorService {
"sttp.FULL_PATH AS sttpFullPath, " +
"src.RSTCD AS rstcd, " +
"eng.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, " +
@ -332,6 +365,8 @@ public class VdMonitorServiceImpl implements VdMonitorService {
"src.REMARK AS remark, " +
"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, " +
@ -341,8 +376,10 @@ public class VdMonitorServiceImpl implements VdMonitorService {
") 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.ENABLED, 1) = 1 ";
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ";
}
private String buildVdDeviceBaseSql() {
@ -350,14 +387,14 @@ public class VdMonitorServiceImpl implements VdMonitorService {
" 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, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " +
" vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, vd.URL AS URL, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " +
" 'SD_VDINFO_B' AS SOURCE_TABLE " +
"FROM SD_VDINFO_B vd WHERE 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, sonar.ORDER_INDEX, " +
" sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, CAST(NULL AS VARCHAR2(512)) AS URL, 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') ";
}
@ -403,7 +440,7 @@ public class VdMonitorServiceImpl implements VdMonitorService {
"LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " +
"LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " +
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " +
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " +
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 " +
"WHERE NVL(run.IS_DELETED, 0) = 0 ";
}
@ -725,6 +762,10 @@ public class VdMonitorServiceImpl implements VdMonitorService {
case "stnm" -> "t.stnm";
case "rstcd" -> "t.rstcd";
case "ennm" -> "t.ennm";
case "fhstcd" -> "t.fhstcd";
case "fhstnm" -> "t.fhstnm";
case "stCode" -> "t.stCode";
case "stName" -> "t.stName";
case "baseId" -> "t.baseId";
case "baseName" -> "t.baseName";
case "hbrvcd" -> "t.hbrvcd";
@ -733,6 +774,8 @@ public class VdMonitorServiceImpl implements VdMonitorService {
case "dtin" -> "t.dtin";
case "usfl" -> "t.usfl";
case "bldsttCcode" -> "t.bldsttCcode";
case "url" -> "t.url";
case "playWay" -> "t.playWay";
case "sourceTable" -> "t.sourceTable";
default -> null;
};