feat: 视频站AI设施锚点
This commit is contained in:
parent
0c875782d0
commit
ab084c2f7c
@ -65,6 +65,12 @@ public class VdMonitorController {
|
|||||||
return ResponseResult.successData(vdMonitorService.getVdPointKendoListCust(dataSourceRequest));
|
return ResponseResult.successData(vdMonitorService.getVdPointKendoListCust(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/aiPoint/GetKendoListCust")
|
||||||
|
@Operation(summary = "视频站AI设施锚点")
|
||||||
|
public ResponseResult getVdAiPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(vdMonitorService.getVdAiPointKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/runData/GetKendoListCust")
|
@PostMapping("/runData/GetKendoListCust")
|
||||||
@Operation(summary = "查询视频监控运行数据")
|
@Operation(summary = "查询视频监控运行数据")
|
||||||
public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -0,0 +1,107 @@
|
|||||||
|
package com.yfd.platform.qgc_env.vd.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "视频站AI设施锚点信息")
|
||||||
|
public class VdAiPointVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Schema(description = "锚点状态")
|
||||||
|
private String anchoPointState;
|
||||||
|
|
||||||
|
@Schema(description = "地图站类标识")
|
||||||
|
private String sttpMap;
|
||||||
|
|
||||||
|
@Schema(description = "锚点站类")
|
||||||
|
private String sttp;
|
||||||
|
|
||||||
|
@Schema(description = "视频站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "视频站名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "经度")
|
||||||
|
private BigDecimal lgtd;
|
||||||
|
|
||||||
|
@Schema(description = "纬度")
|
||||||
|
private BigDecimal lttd;
|
||||||
|
|
||||||
|
@Schema(description = "流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
|
||||||
|
@Schema(description = "行政区编码")
|
||||||
|
private String addvcd;
|
||||||
|
|
||||||
|
@Schema(description = "流域名称")
|
||||||
|
private String rvnm;
|
||||||
|
|
||||||
|
@Schema(description = "基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站编码")
|
||||||
|
private String rstcds;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站编码")
|
||||||
|
private String rstcd;
|
||||||
|
|
||||||
|
@Schema(description = "高程")
|
||||||
|
private BigDecimal dtmel;
|
||||||
|
|
||||||
|
@Schema(description = "标题")
|
||||||
|
private String titleName;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String ennm;
|
||||||
|
|
||||||
|
@Schema(description = "站类名称")
|
||||||
|
private String sttpName;
|
||||||
|
|
||||||
|
@Schema(description = "站点排序")
|
||||||
|
private Integer siteStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "站类编码")
|
||||||
|
private String sttpCode;
|
||||||
|
|
||||||
|
@Schema(description = "栖息地编码")
|
||||||
|
private String fhstcd;
|
||||||
|
|
||||||
|
@Schema(description = "栖息地名称")
|
||||||
|
private String fhstnm;
|
||||||
|
|
||||||
|
@Schema(description = "基地流域编码")
|
||||||
|
private String hbrvcd;
|
||||||
|
|
||||||
|
@Schema(description = "基地流域名称")
|
||||||
|
private String hbrvcdName;
|
||||||
|
|
||||||
|
@Schema(description = "播放地址")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@Schema(description = "站址")
|
||||||
|
private String stlc;
|
||||||
|
|
||||||
|
@Schema(description = "AI是否启用")
|
||||||
|
private Integer aiEnabled;
|
||||||
|
|
||||||
|
@Schema(description = "AI外部站码")
|
||||||
|
private String aiExtCode;
|
||||||
|
|
||||||
|
@Schema(description = "AI外部站名")
|
||||||
|
private String aiExtName;
|
||||||
|
|
||||||
|
@Schema(description = "AI频率")
|
||||||
|
private String aiFrequency;
|
||||||
|
|
||||||
|
@Schema(description = "AI站类编码")
|
||||||
|
private String aiSttpCode;
|
||||||
|
|
||||||
|
@Schema(description = "AI站类名称")
|
||||||
|
private String aiSttpName;
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ package com.yfd.platform.qgc_env.vd.service;
|
|||||||
|
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdAiPointVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdTreeNodeVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdTreeNodeVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo;
|
||||||
@ -20,5 +21,7 @@ public interface VdMonitorService {
|
|||||||
|
|
||||||
DataSourceResult<?> getVdPointKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<?> getVdPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<VdAiPointVo> getVdAiPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import com.yfd.platform.common.DataSourceResult;
|
|||||||
import com.yfd.platform.common.GroupHelper;
|
import com.yfd.platform.common.GroupHelper;
|
||||||
import com.yfd.platform.common.GroupingInfo;
|
import com.yfd.platform.common.GroupingInfo;
|
||||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||||
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdAiPointVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdPointVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdPointVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdTreeNodeVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdTreeNodeVo;
|
||||||
@ -229,6 +230,72 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return queryVdPointDetailList(dataSourceRequest, loadOptions);
|
return queryVdPointDetailList(dataSourceRequest, loadOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<VdAiPointVo> getVdAiPointKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
|
||||||
|
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
|
||||||
|
String hbrvcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "hbrvcd");
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append("t.stcd AS stcd, ")
|
||||||
|
.append("t.stnm AS stnm, ")
|
||||||
|
.append("t.anchoPointState AS anchoPointState, ")
|
||||||
|
.append("t.sttpMap AS sttpMap, ")
|
||||||
|
.append("t.sttp AS sttp, ")
|
||||||
|
.append("t.lgtd AS lgtd, ")
|
||||||
|
.append("t.lttd AS lttd, ")
|
||||||
|
.append("t.rvcd AS rvcd, ")
|
||||||
|
.append("t.addvcd AS addvcd, ")
|
||||||
|
.append("t.rvnm AS rvnm, ")
|
||||||
|
.append("t.baseId AS baseId, ")
|
||||||
|
.append("t.rstcds AS rstcds, ")
|
||||||
|
.append("t.rstcd AS rstcd, ")
|
||||||
|
.append("t.dtmel AS dtmel, ")
|
||||||
|
.append("t.titleName AS titleName, ")
|
||||||
|
.append("t.ennm AS ennm, ")
|
||||||
|
.append("t.sttpName AS sttpName, ")
|
||||||
|
.append("t.siteStepSort AS siteStepSort, ")
|
||||||
|
.append("t.sttpCode AS sttpCode, ")
|
||||||
|
.append("t.fhstcd AS fhstcd, ")
|
||||||
|
.append("t.fhstnm AS fhstnm, ")
|
||||||
|
.append("t.hbrvcd AS hbrvcd, ")
|
||||||
|
.append("t.hbrvcdName AS hbrvcdName, ")
|
||||||
|
.append("t.url AS url, ")
|
||||||
|
.append("t.stlc AS stlc, ")
|
||||||
|
.append("t.aiEnabled AS aiEnabled, ")
|
||||||
|
.append("t.aiExtCode AS aiExtCode, ")
|
||||||
|
.append("t.aiExtName AS aiExtName, ")
|
||||||
|
.append("t.aiFrequency AS aiFrequency, ")
|
||||||
|
.append("t.aiSttpCode AS aiSttpCode, ")
|
||||||
|
.append("t.aiSttpName AS aiSttpName ")
|
||||||
|
.append("FROM (")
|
||||||
|
.append(buildVdAiPointCoreSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
if (StrUtil.isNotBlank(baseId)) {
|
||||||
|
paramMap.put("vdAiBaseId", baseId);
|
||||||
|
sql.append(" AND t.baseId = #{map.vdAiBaseId} ");
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(hbrvcd)) {
|
||||||
|
paramMap.put("vdAiHbrvcd", hbrvcd);
|
||||||
|
sql.append(" AND t.hbrvcd = #{map.vdAiHbrvcd} ");
|
||||||
|
}
|
||||||
|
appendVdAiRstcdCondition(sql, paramMap, parseArrayLikeValues(rstcd));
|
||||||
|
sql.append(" ORDER BY t.siteStepSort ASC NULLS LAST, t.stcd ASC");
|
||||||
|
|
||||||
|
List<VdAiPointVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(
|
||||||
|
page, sql.toString(), paramMap, VdAiPointVo.class);
|
||||||
|
DataSourceResult<VdAiPointVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(list);
|
||||||
|
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@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();
|
||||||
@ -703,6 +770,68 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ";
|
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildVdAiPointCoreSql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"src.STCD AS stcd, " +
|
||||||
|
"src.STNM AS stnm, " +
|
||||||
|
"'aispjk' AS anchoPointState, " +
|
||||||
|
"'AIVD' AS sttpMap, " +
|
||||||
|
"src.STTP AS sttp, " +
|
||||||
|
"src.LGTD AS lgtd, " +
|
||||||
|
"src.LTTD AS lttd, " +
|
||||||
|
"NVL(eng.RVCD, src.RVCD) AS rvcd, " +
|
||||||
|
"NVL(eng.ADDVCD, src.ADDVCD) AS addvcd, " +
|
||||||
|
"rv.RVNM AS rvnm, " +
|
||||||
|
"NVL(eng.BASE_ID, src.BASE_ID) AS baseId, " +
|
||||||
|
"src.RSTCD AS rstcds, " +
|
||||||
|
"src.RSTCD AS rstcd, " +
|
||||||
|
"src.ELEV AS dtmel, " +
|
||||||
|
"src.STNM AS titleName, " +
|
||||||
|
"eng.ENNM AS ennm, " +
|
||||||
|
"vdSttp.STTP_NAME AS sttpName, " +
|
||||||
|
"NVL(siteSort.SORT, 999999) AS siteStepSort, " +
|
||||||
|
"'AIVD' AS sttpCode, " +
|
||||||
|
"src.FHSTCD AS fhstcd, " +
|
||||||
|
"fh.STNM AS fhstnm, " +
|
||||||
|
"NVL(eng.HBRVCD, src.HBRVCD) AS hbrvcd, " +
|
||||||
|
"hbrv.HBRVNM AS hbrvcdName, " +
|
||||||
|
"src.URL AS url, " +
|
||||||
|
"src.STLC AS stlc, " +
|
||||||
|
"src.AI_ENABLED AS aiEnabled, " +
|
||||||
|
"src.AI_EXT_CODE AS aiExtCode, " +
|
||||||
|
"src.AI_EXT_NAME AS aiExtName, " +
|
||||||
|
"src.AI_FREQUENCY AS aiFrequency, " +
|
||||||
|
"(SELECT LISTAGG(ai.STTP, ',') WITHIN GROUP (ORDER BY ai.STTP) " +
|
||||||
|
" FROM SD_AIMONITOR_B_H ai " +
|
||||||
|
" WHERE NVL(ai.IS_DELETED, 0) = 0 " +
|
||||||
|
" AND ai.STTP LIKE 'AI_%' " +
|
||||||
|
" AND INSTR(',' || src.AI_EXT_CODE || ',', ',' || ai.STCD || ',') > 0) AS aiSttpCode, " +
|
||||||
|
"(SELECT LISTAGG(sttp.STTP_NAME, ',') WITHIN GROUP (ORDER BY ai.STTP) " +
|
||||||
|
" FROM SD_AIMONITOR_B_H ai " +
|
||||||
|
" LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = ai.STTP " +
|
||||||
|
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " +
|
||||||
|
" WHERE NVL(ai.IS_DELETED, 0) = 0 " +
|
||||||
|
" AND ai.STTP LIKE 'AI_%' " +
|
||||||
|
" AND INSTR(',' || src.AI_EXT_CODE || ',', ',' || ai.STCD || ',') > 0) AS aiSttpName " +
|
||||||
|
"FROM SD_VDINFO_B src " +
|
||||||
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.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 SD_RVCD_DIC rv ON rv.RVCD = NVL(eng.RVCD, src.RVCD) " +
|
||||||
|
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, src.HBRVCD) " +
|
||||||
|
" AND hbrv.BASEID = NVL(eng.BASE_ID, src.BASE_ID) " +
|
||||||
|
" AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||||
|
"LEFT JOIN SD_STTP_B vdSttp ON vdSttp.STTP_CODE = src.STTP " +
|
||||||
|
" AND NVL(vdSttp.IS_DELETED, 0) = 0 AND NVL(vdSttp.ENABLE, 1) = 1 " +
|
||||||
|
"LEFT JOIN (SELECT det.SORT, cfg.RVCD, det.STCD FROM MS_ALONGDET_B det " +
|
||||||
|
"INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " +
|
||||||
|
"WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common') siteSort " +
|
||||||
|
"ON siteSort.RVCD = NVL(eng.HBRVCD, src.HBRVCD) AND siteSort.STCD = src.STCD " +
|
||||||
|
"WHERE src.STTP LIKE 'VD%' " +
|
||||||
|
"AND src.AI_EXT_CODE IS NOT NULL " +
|
||||||
|
"AND src.LGTD IS NOT NULL " +
|
||||||
|
"AND src.LTTD IS NOT NULL ";
|
||||||
|
}
|
||||||
|
|
||||||
private String buildRunDataCoreSql() {
|
private String buildRunDataCoreSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"run.ID AS id, " +
|
"run.ID AS id, " +
|
||||||
@ -1183,6 +1312,44 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<String> parseArrayLikeValues(String value) {
|
||||||
|
List<String> values = new ArrayList<>();
|
||||||
|
if (StrUtil.isBlank(value)) {
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
String trimmed = value.trim();
|
||||||
|
if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
||||||
|
trimmed = trimmed.substring(1, trimmed.length() - 1);
|
||||||
|
}
|
||||||
|
if (StrUtil.isBlank(trimmed)) {
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
for (String item : trimmed.split(",")) {
|
||||||
|
String normalized = StrUtil.trim(item.replace("\"", "").replace("'", ""));
|
||||||
|
if (StrUtil.isNotBlank(normalized)) {
|
||||||
|
values.add(normalized);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void appendVdAiRstcdCondition(StringBuilder sql,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
List<String> rstcdList) {
|
||||||
|
if (CollUtil.isEmpty(rstcdList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> placeholders = new ArrayList<>();
|
||||||
|
for (int i = 0; i < rstcdList.size(); i++) {
|
||||||
|
String key = "vdAiRstcd" + i;
|
||||||
|
paramMap.put(key, rstcdList.get(i));
|
||||||
|
placeholders.add("#{map." + key + "}");
|
||||||
|
}
|
||||||
|
sql.append(" AND t.rstcds IN (")
|
||||||
|
.append(String.join(", ", placeholders))
|
||||||
|
.append(") ");
|
||||||
|
}
|
||||||
|
|
||||||
private void appendNormalizedValues(List<Object> values, Object value) {
|
private void appendNormalizedValues(List<Object> values, Object value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user