From de347f8f093fcba00789d5fd4f6d1aa448606701 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 1 Jun 2026 10:24:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E7=AB=99=E6=9C=80=E6=96=B0=E4=B8=80=E6=9D=A1=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vd/controller/VdMonitorController.java | 6 ++ .../qgc_env/vd/service/VdMonitorService.java | 2 + .../vd/service/impl/VdMonitorServiceImpl.java | 91 ++++++++++++++++++- 3 files changed, 95 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java index 8dd04bf2..a341cb51 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/controller/VdMonitorController.java @@ -41,6 +41,12 @@ public class VdMonitorController { 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") @Operation(summary = "查询视频监控运行数据") public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java index 59730582..4fa8d933 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/VdMonitorService.java @@ -11,5 +11,7 @@ public interface VdMonitorService { VdVmsstbprptVo getStcdInfo(String stcd); + DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest); + DataSourceResult getRunDataKendoListCust(DataSourceRequest dataSourceRequest); } 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 1748774d..220eb699 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 @@ -109,6 +109,15 @@ public class VdMonitorServiceImpl implements VdMonitorService { return list.get(0); } + @Override + public DataSourceResult 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 public DataSourceResult getRunDataKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -236,11 +245,22 @@ public class VdMonitorServiceImpl implements VdMonitorService { private DataSourceResult queryRunDataDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { + return queryRunDataDetailList(dataSourceRequest, loadOptions, buildRunDataCoreSql()); + } + + private DataSourceResult queryLatestRunDataDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + return queryRunDataDetailList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql()); + } + + private DataSourceResult queryRunDataDetailList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions, + String coreSql) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ") .append(buildRunDataSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) .append(" FROM (") - .append(buildRunDataCoreSql()) + .append(coreSql) .append(") t WHERE 1 = 1 "); Map paramMap = new HashMap<>(); @@ -261,6 +281,17 @@ public class VdMonitorServiceImpl implements VdMonitorService { private DataSourceResult queryRunDataGroupList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { + return queryRunDataGroupList(dataSourceRequest, loadOptions, buildRunDataCoreSql()); + } + + private DataSourceResult queryLatestRunDataGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions) { + return queryRunDataGroupList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql()); + } + + private DataSourceResult queryRunDataGroupList(DataSourceRequest dataSourceRequest, + DataSourceLoadOptionsBase loadOptions, + String coreSql) { List groups = dataSourceRequest.getGroup(); GroupingInfo[] groupInfos = loadOptions == null ? new GroupingInfo[0] : loadOptions.getGroup(); List selectItems = new ArrayList<>(); @@ -293,7 +324,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { sql.append("SELECT ") .append(String.join(", ", selectItems)) .append(" FROM (") - .append(buildRunDataCoreSql()) + .append(coreSql) .append(") t WHERE 1 = 1 "); Map 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 (" + 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 "; + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLED, 1) = 1 "; } 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 (" + 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.ENABLED, 1) = 1 " + + " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + "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() { 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 " +