feat: 全过程AI识别监测日历表
This commit is contained in:
parent
939ddd11e0
commit
2e69b3e73c
@ -57,6 +57,12 @@ public class WarnDataController {
|
|||||||
return ResponseResult.successData(warnDataService.getAiPfwRecordKendoListCust(dataSourceRequest));
|
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")
|
@PostMapping("/alarmPoint/GetKendoListCust")
|
||||||
@Operation(summary = "电站告警描点列表")
|
@Operation(summary = "电站告警描点列表")
|
||||||
public ResponseResult getAlarmPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getAlarmPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -26,5 +26,7 @@ public interface WarnDataService {
|
|||||||
|
|
||||||
List<AiRecordVo> getAiPfwRecordKendoListCust(DataSourceRequest dataSourceRequest);
|
List<AiRecordVo> getAiPfwRecordKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
List<AiRecordVo> getAiRecordKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<AlarmPointVo> getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<AlarmPointVo> getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -238,6 +238,23 @@ public class WarnDataServiceImpl implements WarnDataService {
|
|||||||
return list;
|
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
|
@Override
|
||||||
public DataSourceResult<AlarmPointVo> getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult<AlarmPointVo> getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
@ -370,6 +387,48 @@ public class WarnDataServiceImpl implements WarnDataService {
|
|||||||
return sql.toString();
|
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() {
|
private String buildAlarmPointBaseSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"eng.STCD AS stcd, " +
|
"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) {
|
private Map<String, Date> buildAlarmPointYearRange(String yearText) {
|
||||||
Date endTime = new Date();
|
Date endTime = new Date();
|
||||||
String currentYear = String.valueOf(DateUtil.year(endTime));
|
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) {
|
private String resolveAiStatusName(Integer status) {
|
||||||
if (status == null) {
|
if (status == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user