fix: 优化逻辑
This commit is contained in:
parent
c0ee187eff
commit
512e3c4e4b
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
||||
import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.common.Group;
|
||||
import com.yfd.platform.common.GroupHelper;
|
||||
import com.yfd.platform.common.GroupingInfo;
|
||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||
@ -752,7 +753,9 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||
result.setData((List<EngEqHourIntervalVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||
} else {
|
||||
result.setData((List<EngEqHourIntervalVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||
List<Group> grouped = new GroupHelper().group(rows, Arrays.asList(groupInfos));
|
||||
populateHourDayGroupKeyNames(grouped);
|
||||
result.setData((List<EngEqHourIntervalVo>) (List<?>) grouped);
|
||||
}
|
||||
result.setTotal(0L);
|
||||
result.setAggregates(new HashMap<>());
|
||||
@ -907,7 +910,9 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||
result.setData((List<EngEqDayIntervalVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||
} else {
|
||||
result.setData((List<EngEqDayIntervalVo>) (List<?>) new GroupHelper().group(rows, Arrays.asList(groupInfos)));
|
||||
List<Group> grouped = new GroupHelper().group(rows, Arrays.asList(groupInfos));
|
||||
populateHourDayGroupKeyNames(grouped);
|
||||
result.setData((List<EngEqDayIntervalVo>) (List<?>) grouped);
|
||||
}
|
||||
result.setTotal(0L);
|
||||
result.setAggregates(new HashMap<>());
|
||||
@ -961,6 +966,169 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
||||
}
|
||||
}
|
||||
|
||||
private void populateHourDayGroupKeyNames(List<Group> groups) {
|
||||
if (CollUtil.isEmpty(groups)) {
|
||||
return;
|
||||
}
|
||||
Map<String, String> baseNameCache = new HashMap<>();
|
||||
Map<String, String> hbrvNameCache = new HashMap<>();
|
||||
populateHourDayGroupKeyNames(groups, baseNameCache, hbrvNameCache);
|
||||
}
|
||||
|
||||
private void populateHourDayGroupKeyNames(List<Group> groups,
|
||||
Map<String, String> baseNameCache,
|
||||
Map<String, String> hbrvNameCache) {
|
||||
for (Group group : groups) {
|
||||
if (group == null) {
|
||||
continue;
|
||||
}
|
||||
if (StrUtil.isBlank(group.getKeyName())) {
|
||||
group.setKeyName(resolveHourDayGroupKeyName(group.getField(), group.getKey(), baseNameCache, hbrvNameCache));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(group.getItems()) && group.getItems().get(0) instanceof Group) {
|
||||
populateHourDayGroupKeyNames((List<Group>) group.getItems(), baseNameCache, hbrvNameCache);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String resolveHourDayGroupKeyName(Object field,
|
||||
Object key,
|
||||
Map<String, String> baseNameCache,
|
||||
Map<String, String> hbrvNameCache) {
|
||||
if (field == null || key == null) {
|
||||
return null;
|
||||
}
|
||||
String fieldName = String.valueOf(field);
|
||||
String keyValue = String.valueOf(key);
|
||||
if (StrUtil.isBlank(keyValue)) {
|
||||
return null;
|
||||
}
|
||||
return switch (fieldName) {
|
||||
case "stnm", "ennm", "titleName", "baseName", "hbrvcdName", "addvcdName" -> keyValue;
|
||||
case "sttp", "sttpCode" -> "ENG".equalsIgnoreCase(keyValue) ? "电站" : keyValue;
|
||||
case "baseId" -> StrUtil.blankToDefault(resolveBaseName(keyValue, baseNameCache), keyValue);
|
||||
case "hbrvcd" -> StrUtil.blankToDefault(resolveHbrvName(keyValue, hbrvNameCache), keyValue);
|
||||
case "dtin" -> resolveDtinName(keyValue);
|
||||
case "dtinEnv" -> resolveDtinEnvName(keyValue);
|
||||
case "prsc" -> resolvePrscName(keyValue);
|
||||
case "bldstt", "bldsttCcode" -> resolveBldsttName(keyValue);
|
||||
case "qecInterval", "mwrInterval", "avqInterval" -> resolveQecIntervalName(keyValue);
|
||||
case "anchoPointState", "mwrPointState", "avqPointState" -> resolvePointStateName(keyValue);
|
||||
default -> keyValue;
|
||||
};
|
||||
}
|
||||
|
||||
private String resolveBaseName(String baseId, Map<String, String> cache) {
|
||||
if (StrUtil.isBlank(baseId)) {
|
||||
return null;
|
||||
}
|
||||
if (cache.containsKey(baseId)) {
|
||||
return cache.get(baseId);
|
||||
}
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("code", baseId);
|
||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null,
|
||||
"SELECT hb.BASENAME AS name FROM SD_HYDROBASE hb " +
|
||||
"WHERE hb.BASEID = #{map.code} AND NVL(hb.IS_DELETED, 0) = 0 AND ROWNUM = 1",
|
||||
paramMap);
|
||||
String name = extractName(rows);
|
||||
cache.put(baseId, name);
|
||||
return name;
|
||||
}
|
||||
|
||||
private String resolveHbrvName(String hbrvcd, Map<String, String> cache) {
|
||||
if (StrUtil.isBlank(hbrvcd)) {
|
||||
return null;
|
||||
}
|
||||
if (cache.containsKey(hbrvcd)) {
|
||||
return cache.get(hbrvcd);
|
||||
}
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("code", hbrvcd);
|
||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null,
|
||||
"SELECT dic.HBRVNM AS name FROM SD_HBRV_DIC dic " +
|
||||
"WHERE dic.HBRVCD = #{map.code} AND NVL(dic.IS_DELETED, 0) = 0 AND NVL(dic.ENABLED, 1) = 1 AND ROWNUM = 1",
|
||||
paramMap);
|
||||
String name = extractName(rows);
|
||||
cache.put(hbrvcd, name);
|
||||
return name;
|
||||
}
|
||||
|
||||
private String extractName(List<Map<String, Object>> rows) {
|
||||
if (CollUtil.isEmpty(rows)) {
|
||||
return null;
|
||||
}
|
||||
Object name = rows.get(0).get("NAME");
|
||||
if (name == null) {
|
||||
name = rows.get(0).get("name");
|
||||
}
|
||||
return name == null ? null : String.valueOf(name);
|
||||
}
|
||||
|
||||
private String resolveDtinName(String keyValue) {
|
||||
return switch (keyValue) {
|
||||
case "1" -> "是";
|
||||
case "0" -> "否";
|
||||
default -> keyValue;
|
||||
};
|
||||
}
|
||||
|
||||
private String resolveDtinEnvName(String keyValue) {
|
||||
return switch (keyValue) {
|
||||
case "2" -> "已全部接入";
|
||||
case "1" -> "部分接入";
|
||||
case "0" -> "未接入";
|
||||
default -> keyValue;
|
||||
};
|
||||
}
|
||||
|
||||
private String resolvePrscName(String keyValue) {
|
||||
return switch (keyValue) {
|
||||
case "1" -> "大型1";
|
||||
case "2" -> "大型2";
|
||||
case "3" -> "中型";
|
||||
case "4" -> "小型";
|
||||
default -> keyValue;
|
||||
};
|
||||
}
|
||||
|
||||
private String resolveBldsttName(String keyValue) {
|
||||
return switch (keyValue) {
|
||||
case "0" -> "未建/规划";
|
||||
case "1" -> "在建";
|
||||
case "2" -> "已建";
|
||||
default -> keyValue;
|
||||
};
|
||||
}
|
||||
|
||||
private String resolveQecIntervalName(String keyValue) {
|
||||
for (QecIntervalEnum item : QecIntervalEnum.values()) {
|
||||
if (Objects.equals(item.getCode(), keyValue)) {
|
||||
return item.getDesc();
|
||||
}
|
||||
}
|
||||
return keyValue;
|
||||
}
|
||||
|
||||
private String resolvePointStateName(String keyValue) {
|
||||
String prefix;
|
||||
if (keyValue.startsWith("eef_1_")) {
|
||||
prefix = "大型1";
|
||||
} else if (keyValue.startsWith("eef_2_")) {
|
||||
prefix = "大型2/中型";
|
||||
} else {
|
||||
return keyValue;
|
||||
}
|
||||
return switch (keyValue.substring("eef_".length())) {
|
||||
case "1_none", "2_none" -> prefix + "_无生态流量数据或要求";
|
||||
case "1_1", "2_1" -> prefix + "_>=95%";
|
||||
case "1_2", "2_2" -> prefix + "_90%~95%";
|
||||
case "1_3", "2_3" -> prefix + "_80%~90%";
|
||||
case "1_4", "2_4" -> prefix + "_<80%";
|
||||
default -> keyValue;
|
||||
};
|
||||
}
|
||||
|
||||
private String buildDayIntervalViewSql(DataSourceRequest.FilterDescriptor filter,
|
||||
Map<String, Object> paramMap,
|
||||
int[] indexHolder) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user