fix: 优化逻辑
This commit is contained in:
parent
75bbb0a65e
commit
c5db1d6ae4
@ -496,8 +496,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
if (CollUtil.isEmpty(list)) {
|
if (CollUtil.isEmpty(list)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String sql = "SELECT t2.YS AS ys, t2.MIN_VAL AS minVal, t2.MAX_VAL AS maxVal, t2.LVL AS lvl " +
|
String sql = "SELECT t2.YS AS \"ys\", t2.MIN_VAL AS \"minVal\", t2.MAX_VAL AS \"maxVal\", t2.LVL AS \"lvl\" " + "FROM MS_WARN_RULE_B t1 " +
|
||||||
"FROM MS_WARN_RULE_B t1 " +
|
|
||||||
"INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " +
|
"INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " +
|
||||||
"WHERE t1.RULE_TYPE = 'WQLVL'";
|
"WHERE t1.RULE_TYPE = 'WQLVL'";
|
||||||
List<Map<String, Object>> ruleList = microservicDynamicSQLMapper.pageAllList(null, sql, null);
|
List<Map<String, Object>> ruleList = microservicDynamicSQLMapper.pageAllList(null, sql, null);
|
||||||
@ -771,7 +770,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"t.ORDER_INDEX AS orderIndex, " +
|
"t.ORDER_INDEX AS orderIndex, " +
|
||||||
"t.RSTCD AS rstcd, " +
|
"t.RSTCD AS rstcd, " +
|
||||||
"eng.ENNM AS ennm, " +
|
"eng.ENNM AS ennm, " +
|
||||||
"eng.BASE_ID AS baseId, " +
|
"t.BASE_ID AS baseId, " +
|
||||||
"base.BASENAME AS baseName, " +
|
"base.BASENAME AS baseName, " +
|
||||||
"eng.HBRVCD AS hbrvcd, " +
|
"eng.HBRVCD AS hbrvcd, " +
|
||||||
"hbrv.HBRVNM AS hbrvcdName, " +
|
"hbrv.HBRVNM AS hbrvcdName, " +
|
||||||
@ -921,7 +920,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"wq.FHSTCD AS ST_CODE, " +
|
"wq.FHSTCD AS ST_CODE, " +
|
||||||
"CAST(NULL AS VARCHAR2(200)) AS ST_NAME, " +
|
"CAST(NULL AS VARCHAR2(200)) AS ST_NAME, " +
|
||||||
"eng.ENNM, " +
|
"eng.ENNM, " +
|
||||||
"eng.BASE_ID, " +
|
"wq.BASE_ID, " +
|
||||||
"hb.BASENAME AS BASE_NAME, " +
|
"hb.BASENAME AS BASE_NAME, " +
|
||||||
"rv.RVNM AS RVCD_NAME, " +
|
"rv.RVNM AS RVCD_NAME, " +
|
||||||
"addv.ADDVNM AS ADDVCD_NAME, " +
|
"addv.ADDVNM AS ADDVCD_NAME, " +
|
||||||
@ -1134,8 +1133,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
if (CollUtil.isEmpty(list)) {
|
if (CollUtil.isEmpty(list)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String sql = "SELECT t2.YS AS ys, t2.MIN_VAL AS minVal, t2.MAX_VAL AS maxVal, t2.LVL AS lvl " +
|
String sql = "SELECT t2.YS AS \"ys\", t2.MIN_VAL AS \"minVal\", t2.MAX_VAL AS \"maxVal\", t2.LVL AS \"lvl\" " + "FROM MS_WARN_RULE_B t1 " +
|
||||||
"FROM MS_WARN_RULE_B t1 " +
|
|
||||||
"INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " +
|
"INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " +
|
||||||
"WHERE t1.RULE_TYPE = 'WQLVL'";
|
"WHERE t1.RULE_TYPE = 'WQLVL'";
|
||||||
List<Map<String, Object>> ruleList = microservicDynamicSQLMapper.pageAllList(null, sql, null);
|
List<Map<String, Object>> ruleList = microservicDynamicSQLMapper.pageAllList(null, sql, null);
|
||||||
@ -1315,10 +1313,13 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
}
|
}
|
||||||
sql.append("FROM (").append(buildStationBaseSql()).append(") MSB ");
|
sql.append("FROM (").append(buildStationBaseSql()).append(") MSB ");
|
||||||
if (calculated) {
|
if (calculated) {
|
||||||
sql.append("INNER JOIN MS_WQCALCULATION_T MWT ON MWT.STCD = MSB.STCD ")
|
sql.append("INNER JOIN (")
|
||||||
.append("WHERE MWT.RECORD_USER = #{map.recordUser} ");
|
.append(buildEnvWqMetricSourceSql(true))
|
||||||
|
.append(") MWT ON MWT.STCD = MSB.STCD ");
|
||||||
} else {
|
} else {
|
||||||
sql.append("INNER JOIN MS_WQ_T MWT ON MWT.STCD = MSB.STCD ")
|
sql.append("INNER JOIN (")
|
||||||
|
.append(buildEnvWqMetricSourceSql(false))
|
||||||
|
.append(") MWT ON MWT.STCD = MSB.STCD ")
|
||||||
.append("LEFT JOIN SD_WQDAY_S WQD ON WQD.DT = MWT.TM AND MSB.STCD = WQD.STCD AND NVL(WQD.IS_DELETED, 0) = 0 ")
|
.append("LEFT JOIN SD_WQDAY_S WQD ON WQD.DT = MWT.TM AND MSB.STCD = WQD.STCD AND NVL(WQD.IS_DELETED, 0) = 0 ")
|
||||||
.append("LEFT JOIN SD_WQDAY_S WQD2 ON ADD_MONTHS(WQD2.DT, 12) = WQD.DT AND WQD2.STCD = WQD.STCD AND NVL(WQD2.IS_DELETED, 0) = 0 ");
|
.append("LEFT JOIN SD_WQDAY_S WQD2 ON ADD_MONTHS(WQD2.DT, 12) = WQD.DT AND WQD2.STCD = WQD.STCD AND NVL(WQD2.IS_DELETED, 0) = 0 ");
|
||||||
}
|
}
|
||||||
@ -1326,6 +1327,21 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildEnvWqMetricSourceSql(boolean calculated) {
|
||||||
|
if (calculated) {
|
||||||
|
return "SELECT " +
|
||||||
|
"ID, STCD, TM, TYPE, STTYPE, SFDB, DR_MONTH, DR_YEAR, " +
|
||||||
|
"WQ_SFDB_HY, WQ_SFDB_COUNT, WQ_SFDB_HO, WQ_RATE, WQ_SFDB_HN " +
|
||||||
|
"FROM MS_WQCALCULATION_T " +
|
||||||
|
"WHERE NVL(IS_DELETED, 0) = 0 AND RECORD_USER = #{map.recordUser}";
|
||||||
|
}
|
||||||
|
return "SELECT " +
|
||||||
|
"ID, STCD, TM, TYPE, STTYPE, SFDB, DR_MONTH, DR_YEAR, " +
|
||||||
|
"WQ_SFDB_HY, WQ_SFDB_COUNT, WQ_SFDB_HO, WQ_RATE, WQ_SFDB_HN " +
|
||||||
|
"FROM MS_WQ_T " +
|
||||||
|
"WHERE NVL(IS_DELETED, 0) = 0";
|
||||||
|
}
|
||||||
|
|
||||||
private String buildStationBaseSql() {
|
private String buildStationBaseSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"wq.STCD, " +
|
"wq.STCD, " +
|
||||||
@ -1347,7 +1363,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"FROM SD_WQ_B_H wq " +
|
"FROM SD_WQ_B_H wq " +
|
||||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " +
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD " +
|
||||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||||
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = wq.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " +
|
||||||
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
|
||||||
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
|
||||||
"LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " +
|
||||||
@ -1521,7 +1537,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
item.put("field", group.getField());
|
item.put("field", group.getField());
|
||||||
}
|
}
|
||||||
item.put("key", group.getKey());
|
item.put("key", group.getKey());
|
||||||
item.put("keyName", group.getKeyName());
|
item.put("keyName", StrUtil.blankToDefault(group.getKeyName(), resolveEnvWqGroupKeyName(group.getField(), group.getKey())));
|
||||||
item.put("keyExt", group.getKeyExt() == null ? new HashMap<>() : group.getKeyExt());
|
item.put("keyExt", group.getKeyExt() == null ? new HashMap<>() : group.getKeyExt());
|
||||||
item.put("count", group.getCount());
|
item.put("count", group.getCount());
|
||||||
item.put("summary", group.getSummary() == null ? new Object[0] : group.getSummary());
|
item.put("summary", group.getSummary() == null ? new Object[0] : group.getSummary());
|
||||||
@ -1536,6 +1552,31 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String resolveEnvWqGroupKeyName(Object field, Object key) {
|
||||||
|
if (field == null || key == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String fieldName = String.valueOf(field);
|
||||||
|
String keyValue = String.valueOf(key);
|
||||||
|
return switch (fieldName) {
|
||||||
|
case "sfdb" -> parseInteger(keyValue) == null ? null : getSfdbName(parseInteger(keyValue));
|
||||||
|
case "sttype" -> getSttypeName(keyValue);
|
||||||
|
case "wwqtg", "wqGrd", "beforeWqGrd" -> getWqLevelName(keyValue);
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private Integer parseInteger(String value) {
|
||||||
|
if (StrUtil.isBlank(value)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return Integer.parseInt(value);
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Object readGroupValue(Map<String, Object> row, String field) {
|
private Object readGroupValue(Map<String, Object> row, String field) {
|
||||||
Object value = row.get(field);
|
Object value = row.get(field);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
@ -1731,7 +1772,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
"t.DTIN AS DTIN, " +
|
"t.DTIN AS DTIN, " +
|
||||||
"t.RSTCD AS RSTCD, " +
|
"t.RSTCD AS RSTCD, " +
|
||||||
"eng.ENNM AS ENNM, " +
|
"eng.ENNM AS ENNM, " +
|
||||||
"eng.BASE_ID AS BASEID, " +
|
"t.BASE_ID AS BASEID, " +
|
||||||
"eng.HBRVCD AS HBRVCD, " +
|
"eng.HBRVCD AS HBRVCD, " +
|
||||||
"eng.RVCD AS RVCD, " +
|
"eng.RVCD AS RVCD, " +
|
||||||
"eng.ADDVCD AS ADDVCD, " +
|
"eng.ADDVCD AS ADDVCD, " +
|
||||||
@ -2254,7 +2295,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
selectMap.put("orderIndex", "t.ORDER_INDEX AS orderIndex");
|
selectMap.put("orderIndex", "t.ORDER_INDEX AS orderIndex");
|
||||||
selectMap.put("rstcd", "t.RSTCD AS rstcd");
|
selectMap.put("rstcd", "t.RSTCD AS rstcd");
|
||||||
selectMap.put("ennm", "eng.ENNM AS ennm");
|
selectMap.put("ennm", "eng.ENNM AS ennm");
|
||||||
selectMap.put("baseId", "eng.BASE_ID AS baseId");
|
selectMap.put("baseId", "t.BASE_ID AS baseId");
|
||||||
selectMap.put("baseName", "hb.BASENAME AS baseName");
|
selectMap.put("baseName", "hb.BASENAME AS baseName");
|
||||||
selectMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd");
|
selectMap.put("hbrvcd", "eng.HBRVCD AS hbrvcd");
|
||||||
selectMap.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName");
|
selectMap.put("hbrvcdName", "hbrv.HBRVNM AS hbrvcdName");
|
||||||
@ -2369,7 +2410,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
|
|
||||||
private String buildMsstbprptDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
private String buildMsstbprptDetailOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
if (CollUtil.isEmpty(sortList)) {
|
if (CollUtil.isEmpty(sortList)) {
|
||||||
return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC ";
|
return " ORDER BY t.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC ";
|
||||||
}
|
}
|
||||||
List<String> orderColumns = new ArrayList<>();
|
List<String> orderColumns = new ArrayList<>();
|
||||||
for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) {
|
for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) {
|
||||||
@ -2402,7 +2443,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
orderColumns.add(column + " " + dir + " NULLS LAST");
|
orderColumns.add(column + " " + dir + " NULLS LAST");
|
||||||
}
|
}
|
||||||
if (orderColumns.isEmpty()) {
|
if (orderColumns.isEmpty()) {
|
||||||
return " ORDER BY eng.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC ";
|
return " ORDER BY t.BASE_ID ASC NULLS LAST, eng.HBRVCD ASC NULLS LAST, eng.ORDER_INDEX ASC NULLS LAST, t.ORDER_INDEX ASC NULLS LAST, t.STCD ASC ";
|
||||||
}
|
}
|
||||||
return " ORDER BY " + String.join(", ", orderColumns);
|
return " ORDER BY " + String.join(", ", orderColumns);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,6 +122,8 @@ logging:
|
|||||||
level:
|
level:
|
||||||
root: info
|
root: info
|
||||||
com.yfd.platform: info
|
com.yfd.platform: info
|
||||||
|
com.yfd.platform.common.MicroservicDynamicSQLMapper: debug
|
||||||
|
# ... existing code ...
|
||||||
# com.yfd.platform.*.mapper: trace
|
# com.yfd.platform.*.mapper: trace
|
||||||
|
|
||||||
# 在线文档: swagger-ui(生产环境建议关闭)
|
# 在线文档: swagger-ui(生产环境建议关闭)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user