feat: 全过程AI识别监测日历表
This commit is contained in:
parent
939ddd11e0
commit
2e69b3e73c
@ -57,6 +57,12 @@ public class WarnDataController {
|
||||
return ResponseResult.successData(warnDataService.getAiPfwRecordKendoListCust(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/ai/com/qgc/aiRecord/GetKendoListCust")
|
||||
@Operation(summary = "全过程AI识别监测日历表")
|
||||
public ResponseResult getAiRecordKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(warnDataService.getAiRecordKendoListCust(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/alarmPoint/GetKendoListCust")
|
||||
@Operation(summary = "电站告警描点列表")
|
||||
public ResponseResult getAlarmPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
|
||||
@ -26,5 +26,7 @@ public interface WarnDataService {
|
||||
|
||||
List<AiRecordVo> getAiPfwRecordKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
List<AiRecordVo> getAiRecordKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<AlarmPointVo> getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -238,6 +238,23 @@ public class WarnDataServiceImpl implements WarnDataService {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AiRecordVo> getAiRecordKendoListCust(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 rstcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
|
||||
String stcd = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
|
||||
String type = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "type");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String sql = buildAiRecordSql(baseId, parseAiTime(startTime), parseAiTime(endTime), parseAiCodes(rstcd), stcd, type, paramMap);
|
||||
List<AiRecordVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, AiRecordVo.class);
|
||||
fillAiRecordStatus(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSourceResult<AlarmPointVo> getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||
@ -370,6 +387,48 @@ public class WarnDataServiceImpl implements WarnDataService {
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private String buildAiRecordSql(String baseId,
|
||||
Date startTime,
|
||||
Date endTime,
|
||||
List<String> rstcdList,
|
||||
String stcd,
|
||||
String type,
|
||||
Map<String, Object> paramMap) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT a.dt AS dt, b.cnt AS cnt ")
|
||||
.append("FROM (")
|
||||
.append("SELECT TO_CHAR(hb.TM, 'yyyy-MM-dd') AS dt ")
|
||||
.append("FROM SD_AIHEARTBEAT_R hb ")
|
||||
.append("INNER JOIN SD_AIMONITOR_B_H ai ON ai.STCD = hb.STCD ")
|
||||
.append("WHERE NVL(hb.IS_DELETED, 0) = 0 ")
|
||||
.append("AND NVL(ai.IS_DELETED, 0) = 0 ")
|
||||
.append("AND ai.STTP LIKE 'AI_%' ");
|
||||
appendAiRecordFilterSql(sql, "aiRecordHeartbeat", "ai", "hb", baseId, startTime, endTime, rstcdList, stcd, type, paramMap);
|
||||
sql.append("GROUP BY TO_CHAR(hb.TM, 'yyyy-MM-dd') ")
|
||||
.append("UNION ")
|
||||
.append("SELECT TO_CHAR(rec.TM, 'yyyy-MM-dd') AS dt ")
|
||||
.append("FROM SD_AICOM_R rec ")
|
||||
.append("INNER JOIN SD_AIMONITOR_B_H ai ON ai.STCD = rec.STCD ")
|
||||
.append("WHERE NVL(rec.IS_DELETED, 0) = 0 ")
|
||||
.append("AND NVL(ai.IS_DELETED, 0) = 0 ")
|
||||
.append("AND ai.STTP LIKE 'AI_%' ");
|
||||
appendAiRecordFilterSql(sql, "aiRecordAicomDate", "ai", "rec", baseId, startTime, endTime, rstcdList, stcd, type, paramMap);
|
||||
sql.append("GROUP BY TO_CHAR(rec.TM, 'yyyy-MM-dd') ")
|
||||
.append(") a ")
|
||||
.append("LEFT JOIN (")
|
||||
.append("SELECT TO_CHAR(rec.TM, 'yyyy-MM-dd') AS dt, COUNT(1) AS cnt ")
|
||||
.append("FROM SD_AICOM_R rec ")
|
||||
.append("INNER JOIN SD_AIMONITOR_B_H ai ON ai.STCD = rec.STCD ")
|
||||
.append("WHERE NVL(rec.IS_DELETED, 0) = 0 ")
|
||||
.append("AND NVL(ai.IS_DELETED, 0) = 0 ")
|
||||
.append("AND ai.STTP LIKE 'AI_%' ");
|
||||
appendAiRecordFilterSql(sql, "aiRecordAicomCnt", "ai", "rec", baseId, startTime, endTime, rstcdList, stcd, type, paramMap);
|
||||
sql.append("GROUP BY TO_CHAR(rec.TM, 'yyyy-MM-dd') ")
|
||||
.append(") b ON a.dt = b.dt ")
|
||||
.append("ORDER BY a.dt");
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private String buildAlarmPointBaseSql() {
|
||||
return "SELECT " +
|
||||
"eng.STCD AS stcd, " +
|
||||
@ -533,6 +592,48 @@ public class WarnDataServiceImpl implements WarnDataService {
|
||||
}
|
||||
}
|
||||
|
||||
private void appendAiRecordFilterSql(StringBuilder sql,
|
||||
String keyPrefix,
|
||||
String aiAlias,
|
||||
String recordAlias,
|
||||
String baseId,
|
||||
Date startTime,
|
||||
Date endTime,
|
||||
List<String> rstcdList,
|
||||
String stcd,
|
||||
String type,
|
||||
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 (StrUtil.isNotBlank(stcd)) {
|
||||
paramMap.put(keyPrefix + "Stcd", stcd.trim());
|
||||
sql.append("AND ").append(aiAlias).append(".STCD = #{map.").append(keyPrefix).append("Stcd} ");
|
||||
}
|
||||
if (StrUtil.isNotBlank(type)) {
|
||||
paramMap.put(keyPrefix + "Type", type.trim());
|
||||
sql.append("AND ").append(aiAlias).append(".STTP = #{map.").append(keyPrefix).append("Type} ");
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rstcdList)) {
|
||||
List<String> placeholders = new ArrayList<>();
|
||||
for (int i = 0; i < rstcdList.size(); i++) {
|
||||
String key = keyPrefix + "Rstcd" + i;
|
||||
paramMap.put(key, rstcdList.get(i));
|
||||
placeholders.add("#{map." + key + "}");
|
||||
}
|
||||
sql.append("AND ").append(aiAlias).append(".RSTCD IN (").append(String.join(", ", placeholders)).append(") ");
|
||||
}
|
||||
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 Map<String, Date> buildAlarmPointYearRange(String yearText) {
|
||||
Date endTime = new Date();
|
||||
String currentYear = String.valueOf(DateUtil.year(endTime));
|
||||
@ -720,6 +821,23 @@ public class WarnDataServiceImpl implements WarnDataService {
|
||||
}
|
||||
}
|
||||
|
||||
private void fillAiRecordStatus(List<AiRecordVo> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
for (AiRecordVo item : list) {
|
||||
if (item == null) {
|
||||
continue;
|
||||
}
|
||||
if (item.getCnt() != null) {
|
||||
item.setStatus(3);
|
||||
} else {
|
||||
item.setStatus(4);
|
||||
}
|
||||
item.setStatusName(resolveAiStatusName(item.getStatus()));
|
||||
}
|
||||
}
|
||||
|
||||
private String resolveAiStatusName(Integer status) {
|
||||
if (status == null) {
|
||||
return null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user