feat: 全过程AI识别有数据的电站下拉
This commit is contained in:
parent
e8489a4f56
commit
2fbdb0cdef
@ -44,4 +44,10 @@ public class WarnDataController {
|
||||
public ResponseResult getAiComKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(warnDataService.getAiComKendoListCust(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/ai/com/qgc/aiRstcd/GetKendoListCust")
|
||||
@Operation(summary = "全过程AI识别有数据的电站下拉")
|
||||
public ResponseResult getAiRstcdListKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(warnDataService.getAiRstcdListKendoListCust(dataSourceRequest));
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(description = "全过程AI识别电站下拉")
|
||||
public class AiRstcdVo {
|
||||
|
||||
@Schema(description = "电站编码")
|
||||
private String stcd;
|
||||
|
||||
@Schema(description = "电站名称")
|
||||
private String stnm;
|
||||
}
|
||||
@ -5,6 +5,7 @@ import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiProtectVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiDmRunVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiComListVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiRstcdVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.EngWarnCountVo;
|
||||
|
||||
public interface WarnDataService {
|
||||
@ -16,4 +17,6 @@ public interface WarnDataService {
|
||||
AiProtectVo getAiProtectCount(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<AiComListVo> getAiComKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<AiRstcdVo> getAiRstcdListKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -13,6 +13,8 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiComListVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiDmRunVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiProtectVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiProtectVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.AiRstcdVo;
|
||||
import com.yfd.platform.qgc_env.warn.entity.vo.EngWarnCountVo;
|
||||
import com.yfd.platform.qgc_env.warn.service.WarnDataService;
|
||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||
@ -200,6 +202,25 @@ public class WarnDataServiceImpl implements WarnDataService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSourceResult<AiRstcdVo> getAiRstcdListKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||
String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
|
||||
String startTime = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "startTime");
|
||||
String endTime = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "endTime");
|
||||
String type = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "type");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String sql = buildAiRstcdListSql(baseId, parseAiTime(startTime), parseAiTime(endTime), type, paramMap);
|
||||
List<AiRstcdVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, AiRstcdVo.class);
|
||||
|
||||
DataSourceResult<AiRstcdVo> result = new DataSourceResult<>();
|
||||
result.setData(list);
|
||||
result.setTotal(list.size());
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
private AiDmRunVo buildAiDmRunVo(Map<String, Object> row) {
|
||||
if (row == null || row.isEmpty()) {
|
||||
return null;
|
||||
@ -211,6 +232,87 @@ public class WarnDataServiceImpl implements WarnDataService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
private String buildAiRstcdListSql(String baseId,
|
||||
Date startTime,
|
||||
Date endTime,
|
||||
String type,
|
||||
Map<String, Object> paramMap) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT DISTINCT t.stcd AS stcd, t.stnm AS stnm FROM (");
|
||||
sql.append("SELECT ai.RSTCD AS stcd, eng.ENNM AS stnm ")
|
||||
.append("FROM SD_AIMONITOR_B_H ai ")
|
||||
.append("INNER JOIN SD_AICOM_R rec ON ai.STCD = rec.STCD ")
|
||||
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = ai.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
|
||||
.append("WHERE NVL(ai.IS_DELETED, 0) = 0 ")
|
||||
.append("AND NVL(rec.IS_DELETED, 0) = 0 ")
|
||||
.append("AND ai.STTP LIKE 'AI_%' ")
|
||||
.append("AND ai.RSTCD IS NOT NULL ");
|
||||
appendAiRstcdCommonFilterSql(sql, "aiRstcdAicom", "ai", "rec", baseId, startTime, endTime, paramMap);
|
||||
appendAiRstcdTypeFilterSql(sql, "aiRstcdType", "rec.TYPE", type, paramMap);
|
||||
sql.append(" UNION ");
|
||||
sql.append("SELECT ai.RSTCD AS stcd, eng.ENNM AS stnm ")
|
||||
.append("FROM SD_AIMONITOR_B_H ai ")
|
||||
.append("INNER JOIN SD_AIHEARTBEAT_R hb ON ai.STCD = hb.STCD ")
|
||||
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = ai.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
|
||||
.append("WHERE NVL(ai.IS_DELETED, 0) = 0 ")
|
||||
.append("AND NVL(hb.IS_DELETED, 0) = 0 ")
|
||||
.append("AND ai.STTP LIKE 'AI_%' ")
|
||||
.append("AND ai.RSTCD IS NOT NULL ");
|
||||
appendAiRstcdCommonFilterSql(sql, "aiRstcdHeartbeat", "ai", "hb", baseId, startTime, endTime, paramMap);
|
||||
appendAiRstcdHeartbeatTypeFilterSql(sql, type, paramMap);
|
||||
sql.append(") t ORDER BY t.stnm, t.stcd");
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private void appendAiRstcdCommonFilterSql(StringBuilder sql,
|
||||
String keyPrefix,
|
||||
String aiAlias,
|
||||
String recordAlias,
|
||||
String baseId,
|
||||
Date startTime,
|
||||
Date endTime,
|
||||
Map<String, Object> paramMap) {
|
||||
if (StrUtil.isNotBlank(baseId)) {
|
||||
paramMap.put(keyPrefix + "BaseId", baseId.trim());
|
||||
sql.append("AND ").append(aiAlias).append(".BASE_ID = #{map.").append(keyPrefix).append("BaseId} ");
|
||||
}
|
||||
if (startTime != null) {
|
||||
paramMap.put(keyPrefix + "StartTime", startTime);
|
||||
sql.append("AND ").append(recordAlias).append(".TM >= #{map.").append(keyPrefix).append("StartTime} ");
|
||||
}
|
||||
if (endTime != null) {
|
||||
paramMap.put(keyPrefix + "EndTime", endTime);
|
||||
sql.append("AND ").append(recordAlias).append(".TM <= #{map.").append(keyPrefix).append("EndTime} ");
|
||||
}
|
||||
}
|
||||
|
||||
private void appendAiRstcdTypeFilterSql(StringBuilder sql,
|
||||
String keyPrefix,
|
||||
String typeColumn,
|
||||
String type,
|
||||
Map<String, Object> paramMap) {
|
||||
if (StrUtil.isBlank(type)) {
|
||||
return;
|
||||
}
|
||||
paramMap.put(keyPrefix, type.trim());
|
||||
sql.append("AND ").append(typeColumn).append(" = #{map.").append(keyPrefix).append("} ");
|
||||
}
|
||||
|
||||
private void appendAiRstcdHeartbeatTypeFilterSql(StringBuilder sql,
|
||||
String type,
|
||||
Map<String, Object> paramMap) {
|
||||
if (StrUtil.isBlank(type)) {
|
||||
return;
|
||||
}
|
||||
String normalizedType = type.trim();
|
||||
if ("AI_5011".equalsIgnoreCase(normalizedType)) {
|
||||
paramMap.put("aiRstcdHeartbeatType", "AI_5001");
|
||||
} else {
|
||||
paramMap.put("aiRstcdHeartbeatType", normalizedType);
|
||||
}
|
||||
sql.append("AND ai.STTP = #{map.aiRstcdHeartbeatType} ");
|
||||
}
|
||||
|
||||
private AiProtectVo buildAiProtectVo(Map<String, Object> row) {
|
||||
if (row == null || row.isEmpty()) {
|
||||
return null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user