feat: 查询视频站最新一条数据

This commit is contained in:
tangwei 2026-06-01 10:24:52 +08:00
parent 6fc80d7199
commit de347f8f09
3 changed files with 95 additions and 4 deletions

View File

@ -41,6 +41,12 @@ public class VdMonitorController {
return ResponseResult.successData(vdMonitorService.getStcdInfo(stcd)); return ResponseResult.successData(vdMonitorService.getStcdInfo(stcd));
} }
@PostMapping("/GetKendoListCust")
@Operation(summary = "查询视频站最新一条数据")
public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(vdMonitorService.getKendoListCust(dataSourceRequest));
}
@PostMapping("/runData/GetKendoListCust") @PostMapping("/runData/GetKendoListCust")
@Operation(summary = "查询视频监控运行数据") @Operation(summary = "查询视频监控运行数据")
public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {

View File

@ -11,5 +11,7 @@ public interface VdMonitorService {
VdVmsstbprptVo getStcdInfo(String stcd); VdVmsstbprptVo getStcdInfo(String stcd);
DataSourceResult<VdRunDataVo> getKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest);
} }

View File

@ -109,6 +109,15 @@ public class VdMonitorServiceImpl implements VdMonitorService {
return list.get(0); return list.get(0);
} }
@Override
public DataSourceResult<VdRunDataVo> getKendoListCust(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
if (CollUtil.isEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) {
return queryLatestRunDataDetailList(dataSourceRequest, loadOptions);
}
return queryLatestRunDataGroupList(dataSourceRequest, loadOptions);
}
@Override @Override
public DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest) { public DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
@ -236,11 +245,22 @@ public class VdMonitorServiceImpl implements VdMonitorService {
private DataSourceResult<VdRunDataVo> queryRunDataDetailList(DataSourceRequest dataSourceRequest, private DataSourceResult<VdRunDataVo> queryRunDataDetailList(DataSourceRequest dataSourceRequest,
DataSourceLoadOptionsBase loadOptions) { DataSourceLoadOptionsBase loadOptions) {
return queryRunDataDetailList(dataSourceRequest, loadOptions, buildRunDataCoreSql());
}
private DataSourceResult<VdRunDataVo> queryLatestRunDataDetailList(DataSourceRequest dataSourceRequest,
DataSourceLoadOptionsBase loadOptions) {
return queryRunDataDetailList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql());
}
private DataSourceResult<VdRunDataVo> queryRunDataDetailList(DataSourceRequest dataSourceRequest,
DataSourceLoadOptionsBase loadOptions,
String coreSql) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ") sql.append("SELECT ")
.append(buildRunDataSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) .append(buildRunDataSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect()))
.append(" FROM (") .append(" FROM (")
.append(buildRunDataCoreSql()) .append(coreSql)
.append(") t WHERE 1 = 1 "); .append(") t WHERE 1 = 1 ");
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
@ -261,6 +281,17 @@ public class VdMonitorServiceImpl implements VdMonitorService {
private DataSourceResult<VdRunDataVo> queryRunDataGroupList(DataSourceRequest dataSourceRequest, private DataSourceResult<VdRunDataVo> queryRunDataGroupList(DataSourceRequest dataSourceRequest,
DataSourceLoadOptionsBase loadOptions) { DataSourceLoadOptionsBase loadOptions) {
return queryRunDataGroupList(dataSourceRequest, loadOptions, buildRunDataCoreSql());
}
private DataSourceResult<VdRunDataVo> queryLatestRunDataGroupList(DataSourceRequest dataSourceRequest,
DataSourceLoadOptionsBase loadOptions) {
return queryRunDataGroupList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql());
}
private DataSourceResult<VdRunDataVo> queryRunDataGroupList(DataSourceRequest dataSourceRequest,
DataSourceLoadOptionsBase loadOptions,
String coreSql) {
List<DataSourceRequest.GroupDescriptor> groups = dataSourceRequest.getGroup(); List<DataSourceRequest.GroupDescriptor> groups = dataSourceRequest.getGroup();
GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup();
List<String> selectItems = new ArrayList<>(); List<String> selectItems = new ArrayList<>();
@ -293,7 +324,7 @@ public class VdMonitorServiceImpl implements VdMonitorService {
sql.append("SELECT ") sql.append("SELECT ")
.append(String.join(", ", selectItems)) .append(String.join(", ", selectItems))
.append(" FROM (") .append(" FROM (")
.append(buildRunDataCoreSql()) .append(coreSql)
.append(") t WHERE 1 = 1 "); .append(") t WHERE 1 = 1 ");
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
@ -379,7 +410,7 @@ public class VdMonitorServiceImpl implements VdMonitorService {
"LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = src.FHSTCD AND NVL(fh.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 (" + buildStationBaseSql() + ") cst ON cst.STCD = src.CSTCD " +
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + "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 "; " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 ";
} }
private String buildVdDeviceBaseSql() { private String buildVdDeviceBaseSql() {
@ -440,10 +471,62 @@ 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 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 (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " +
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.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 " +
"WHERE NVL(run.IS_DELETED, 0) = 0 "; "WHERE NVL(run.IS_DELETED, 0) = 0 ";
} }
private String buildLatestRunDataCoreSql() {
return "SELECT " +
"run.ID AS id, " +
"run.STCD AS stcd, " +
"run.TM AS tm, " +
"NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " +
"run.IMG_PATH AS imgPath, " +
"run.FLPTH AS flpth, " +
"run.DEVICEINFO AS deviceinfo, " +
"run.DESCRIBE AS describe, " +
"run.FID AS fid, " +
"run.THUMBNAIL AS thumbnail, " +
"base.RSTCD AS rstcd, " +
"base.STNM AS stnm, " +
"eng.ENNM AS ennm, " +
"base.FHSTCD AS fhstcd, " +
"fh.STNM AS fhstnm, " +
"base.CSTCD AS stCode, " +
"cst.STNM AS stName, " +
"NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " +
"hb.BASENAME AS baseName, " +
"base.STTP AS sttpCode, " +
"sttp.STTP_NAME AS sttpName, " +
"base.STNM AS titleName, " +
"NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " +
"NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " +
"NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " +
"NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " +
"NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " +
"hbrv.HBRVNM AS hbrvcdName " +
"FROM ( " +
"SELECT detail.ID, detail.STCD, detail.TM, detail.FLNM, detail.IMG_PATH, detail.FLPTH, detail.DEVICEINFO, " +
"detail.DESCRIBE, detail.FID, detail.THUMBNAIL " +
"FROM SD_VDINFO_R detail " +
"INNER JOIN ( " +
"SELECT STCD, MAX(TM) AS TM FROM SD_VDINFO_R WHERE NVL(IS_DELETED, 0) = 0 GROUP BY STCD " +
") latest ON detail.STCD = latest.STCD AND detail.TM = latest.TM " +
"WHERE NVL(detail.IS_DELETED, 0) = 0 " +
") run " +
"INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " +
" AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " +
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " +
" AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " +
" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
"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 ";
}
private String buildStationBaseSql() { private String buildStationBaseSql() {
return "SELECT river.STCD AS STCD, river.STNM AS STNM FROM SD_RIVER_B_H river WHERE NVL(river.IS_DELETED, 0) = 0 " + return "SELECT river.STCD AS STCD, river.STNM AS STNM FROM SD_RIVER_B_H river WHERE NVL(river.IS_DELETED, 0) = 0 " +
"UNION ALL " + "UNION ALL " +