fix: 生态流量达标率小时统计(二级页面)

This commit is contained in:
tangwei 2026-06-03 17:13:21 +08:00
parent e7faf1e13c
commit ee340ce3eb

View File

@ -417,7 +417,6 @@ public class EngEqDataServiceImpl implements EngEqDataService {
Map<String, Object> paramMap,
int[] indexHolder) {
boolean hasDtinFilter = CollUtil.isNotEmpty(findFilterValues(filter, "dtin"));
String validTimeFilter = buildIntervalTmFilterCondition(filter, "valid.TM", paramMap, indexHolder, 0);
return "SELECT " +
"eng.STCD AS stcd, " +
"eng.ENNM AS stnm, " +
@ -446,9 +445,9 @@ public class EngEqDataServiceImpl implements EngEqDataService {
buildIntervalRateDisplaySql("met.QEC_RATE") + " AS qecRate, " +
buildIntervalRateDisplaySql("met.MWR_RATE") + " AS mwrRate, " +
buildIntervalRateDisplaySql("met.AVQ_RATE") + " AS avqRate, " +
buildStaticIntervalSql("met.QEC_RATE", "met.QR", "qecNoRule.STCD", false) + " AS qecInterval, " +
buildStaticIntervalSql("met.MWR_RATE", "met.MQR", "mwrNoRule.STCD", false) + " AS mwrInterval, " +
buildStaticIntervalSql("met.AVQ_RATE", "met.AQR", "eng.AVQ", true) + " AS avqInterval, " +
buildStaticIntervalSql("met.STCD", "met.QEC_RATE", "met.QR", "qecNoRule.STCD", false) + " AS qecInterval, " +
buildStaticIntervalSql("met.STCD", "met.MWR_RATE", "met.MQR", "mwrNoRule.STCD", false) + " AS mwrInterval, " +
buildStaticIntervalSql("met.STCD", "met.AVQ_RATE", "met.AQR", "eng.AVQ", true) + " AS avqInterval, " +
buildHourPointStateSql("met.QEC_RATE") + " AS anchoPointState, " +
buildHourPointStateSql("met.MWR_RATE") + " AS mwrPointState, " +
buildHourPointStateSql("met.AVQ_RATE") + " AS avqPointState, " +
@ -486,9 +485,7 @@ public class EngEqDataServiceImpl implements EngEqDataService {
"WHERE NVL(eng.IS_DELETED, 0) = 0 " +
" AND NVL(eng.BLDSTT_CODE, 0) = 2 " +
(hasDtinFilter ? "" : " AND NVL(eng.DTIN, 0) = 1 ") +
" AND EXISTS (SELECT 1 FROM SD_QEC_R valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0" +
(StrUtil.isNotBlank(validTimeFilter) ? " AND " + validTimeFilter : "") +
")";
" AND NVL(eng.RUN_STATE, 0) = 4";
}
private String buildHourMetricSourceSql(DataSourceRequest.FilterDescriptor filter,
@ -1578,15 +1575,13 @@ public class EngEqDataServiceImpl implements EngEqDataService {
Map<String, Object> paramMap = new HashMap<>();
int[] indexHolder = new int[]{0};
boolean hasDtinFilter = CollUtil.isNotEmpty(findFilterValues(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "dtin"));
String validTable = "day".equalsIgnoreCase(type) ? "SD_QECDAY_S" : "SD_QEC_R";
String validTimeColumn = "day".equalsIgnoreCase(type) ? "valid.DT" : "valid.TM";
sql.append("SELECT ")
.append("eng.STCD AS stcd, ")
.append(buildStaticIntervalSql("agg.QEC_RATE", "agg.QR", "qecNoRule.STCD", false))
.append(buildStaticIntervalSql("agg.STCD", "agg.QEC_RATE", "agg.QR", "qecNoRule.STCD", false))
.append(" AS qecInterval, ")
.append(buildStaticIntervalSql("agg.MWR_RATE", "agg.MQR", "mwrNoRule.STCD", false))
.append(buildStaticIntervalSql("agg.STCD", "agg.MWR_RATE", "agg.MQR", "mwrNoRule.STCD", false))
.append(" AS mwrInterval, ")
.append(buildStaticIntervalSql("agg.AVQ_RATE", "agg.AQR", "eng.AVQ", true))
.append(buildStaticIntervalSql("agg.STCD", "agg.AVQ_RATE", "agg.AQR", "eng.AVQ", true))
.append(" AS avqInterval ")
.append("FROM SD_ENGINFO_B_H eng ")
.append("LEFT JOIN (")
@ -1608,15 +1603,7 @@ public class EngEqDataServiceImpl implements EngEqDataService {
if (!hasDtinFilter) {
sql.append(" AND NVL(eng.DTIN, 0) = 1 ");
}
sql.append(" AND EXISTS (SELECT 1 FROM ")
.append(validTable)
.append(" valid WHERE valid.STCD = eng.STCD AND NVL(valid.IS_DELETED, 0) = 0");
String validTimeFilter = buildStaticTimeFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
paramMap, indexHolder, validTimeColumn);
if (StrUtil.isNotBlank(validTimeFilter)) {
sql.append(" AND ").append(validTimeFilter);
}
sql.append(") ");
sql.append(" AND NVL(eng.RUN_STATE, 0) = 4 ");
String stationFilter = buildStaticStationFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, indexHolder);
if (StrUtil.isNotBlank(stationFilter)) {
@ -1889,13 +1876,17 @@ public class EngEqDataServiceImpl implements EngEqDataService {
"FROM SD_ENGINFO_B_H engRule " +
"WHERE NVL(engRule.IS_DELETED, 0) = 0 " +
" AND NOT EXISTS ( " +
" SELECT 1 FROM MS_WARN_RULE_B rule " +
" INNER JOIN MS_WARN_RULE_DETAIL_B detail ON detail.RULE_ID = rule.ID AND NVL(detail.IS_DELETED, 0) = 0 " +
" WHERE NVL(rule.IS_DELETED, 0) = 0 AND rule.RULE_TYPE = '" + ruleType + "' AND rule.STCD = engRule.STCD " +
" SELECT 1 FROM MS_WARN_RULE_STBPRP_B ruleStbprp " +
" INNER JOIN MS_WARN_RULE_DETAIL_B detail ON detail.RULE_ID = ruleStbprp.RULE_ID AND NVL(detail.IS_DELETED, 0) = 0 " +
" INNER JOIN MS_WARN_RULE_B rule ON rule.ID = detail.RULE_ID AND NVL(rule.IS_DELETED, 0) = 0 " +
" WHERE NVL(ruleStbprp.IS_DELETED, 0) = 0 " +
" AND rule.RULE_TYPE = '" + ruleType + "' " +
" AND ruleStbprp.STCD = engRule.STCD " +
" )";
}
private String buildStaticIntervalSql(String rateColumn,
private String buildStaticIntervalSql(String stcdColumn,
String rateColumn,
String qrColumn,
String ruleColumn,
boolean avqMode) {
@ -1910,10 +1901,10 @@ public class EngEqDataServiceImpl implements EngEqDataService {
"END";
}
return "CASE " +
"WHEN " + rateColumn + " IS NULL AND " + ruleColumn + " IS NULL THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " +
"WHEN " + rateColumn + " IS NULL AND " + ruleColumn + " IS NOT NULL THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " +
"WHEN " + qrColumn + " = -2 THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " +
"WHEN " + qrColumn + " = -1 THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " +
"WHEN " + stcdColumn + " IS NULL AND " + ruleColumn + " IS NULL THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " +
"WHEN " + stcdColumn + " IS NULL AND " + ruleColumn + " IS NOT NULL THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " +
"WHEN " + stcdColumn + " IS NOT NULL AND " + qrColumn + " = -2 THEN '" + QecIntervalEnum.QEC_STLL_6_NOEQMN.getCode() + "' " +
"WHEN " + stcdColumn + " IS NOT NULL AND " + qrColumn + " = -1 THEN '" + QecIntervalEnum.QEC_STLL_5_EMPTY.getCode() + "' " +
"WHEN " + rateColumn + " >= 95 THEN '" + QecIntervalEnum.QEC_STLL_1_DY95.getCode() + "' " +
"WHEN " + rateColumn + " >= 90 AND 95 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_2_90AND95.getCode() + "' " +
"WHEN " + rateColumn + " >= 80 AND 90 > " + rateColumn + " THEN '" + QecIntervalEnum.QEC_STLL_3_80AND90.getCode() + "' " +