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.DataSourceLoadOptionsBase;
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
|
import com.yfd.platform.common.Group;
|
||||||
import com.yfd.platform.common.GroupHelper;
|
import com.yfd.platform.common.GroupHelper;
|
||||||
import com.yfd.platform.common.GroupingInfo;
|
import com.yfd.platform.common.GroupingInfo;
|
||||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||||
@ -752,7 +753,9 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
result.setData((List<EngEqHourIntervalVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
result.setData((List<EngEqHourIntervalVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||||
} else {
|
} 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.setTotal(0L);
|
||||||
result.setAggregates(new HashMap<>());
|
result.setAggregates(new HashMap<>());
|
||||||
@ -907,7 +910,9 @@ public class EngEqDataServiceImpl implements EngEqDataService {
|
|||||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
result.setData((List<EngEqDayIntervalVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
result.setData((List<EngEqDayIntervalVo>) (List<?>) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||||
} else {
|
} 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.setTotal(0L);
|
||||||
result.setAggregates(new HashMap<>());
|
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,
|
private String buildDayIntervalViewSql(DataSourceRequest.FilterDescriptor filter,
|
||||||
Map<String, Object> paramMap,
|
Map<String, Object> paramMap,
|
||||||
int[] indexHolder) {
|
int[] indexHolder) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user