fix: 优化报错
This commit is contained in:
parent
11db0be292
commit
d9cf63e993
@ -141,9 +141,6 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
@Resource
|
||||
private IAdminAuthService adminAuthService;
|
||||
|
||||
@Resource
|
||||
private com.yfd.platform.qgc_base.mapper.VMsStbprpTMapper vMsStbprpTMapper;
|
||||
|
||||
@Override
|
||||
public Page<SdEngInfoBH> queryPageList(Page<SdEngInfoBH> page, String ennm, String rvcd, String baseId, String hycd) {
|
||||
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
||||
@ -4095,18 +4092,31 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
return result;
|
||||
}
|
||||
|
||||
// 从请求 filter 中提取 STTP 过滤条件,用于限定站类范围
|
||||
// List<String> sttpCodes = extractSttpCodesFromRequest(dataSourceRequest);
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||
String sttpCode = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode");
|
||||
if(StrUtil.isBlank(sttpCode)){
|
||||
result.setData(new ArrayList<>());
|
||||
result.setTotal(0L);
|
||||
return result;
|
||||
// 使用 buildFilterCondition 动态构建查询条件
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String filterSql = QgcQueryWrapperUtil.buildFilterCondition(
|
||||
dataSourceRequest.getFilter(),
|
||||
paramMap,
|
||||
new int[]{0},
|
||||
this::mapVmsFilterColumn
|
||||
);
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT STCD AS stcd, STNM AS stnm, ")
|
||||
.append("STTP_CODE AS sttpCode, STTP_NAME AS sttpName, ")
|
||||
.append("MWAY AS mway, RSTCD AS rstcd, ENNM AS ennm, ")
|
||||
.append("BASE_ID AS baseId, BASE_NAME AS baseName, ")
|
||||
.append("NVL(RSTCDSTEPSORT, 999999) AS rstcdStepSort, ")
|
||||
.append("NVL(ORDER_INDEX, 999999) AS orderIndex, ")
|
||||
.append("LGTD AS lgtd, LTTD AS lttd ")
|
||||
.append("FROM V_MS_STBPRP_T ")
|
||||
.append("WHERE NVL(IS_DELETED, 0) = 0");
|
||||
if (StrUtil.isNotBlank(filterSql)) {
|
||||
sql.append(" AND ").append(filterSql);
|
||||
}
|
||||
// 查询 V_MS_STBPRP_T 视图
|
||||
List<StcdItemVo> allItems =
|
||||
vMsStbprpTMapper.selectBySttpCodes(List.of(sttpCode));
|
||||
sql.append(" ORDER BY NVL(RSTCDSTEPSORT, 999999), NVL(ORDER_INDEX, 999999)");
|
||||
|
||||
List<StcdItemVo> allItems = microservicDynamicSQLMapper
|
||||
.getAllListWithResultType(sql.toString(), paramMap, StcdItemVo.class);
|
||||
|
||||
if (CollUtil.isEmpty(allItems)) {
|
||||
result.setData(new ArrayList<>());
|
||||
@ -4174,53 +4184,27 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 DataSourceRequest 的 filter 中提取 STTP 过滤码
|
||||
* V_MS_STBPRP_T 视图字段映射:前端字段名 → 数据库列名
|
||||
*/
|
||||
private List<String> extractSttpCodesFromRequest(DataSourceRequest request) {
|
||||
if (request == null || request.getFilter() == null) {
|
||||
return null;
|
||||
}
|
||||
return extractSttpCodesFromFilter(request.getFilter());
|
||||
}
|
||||
|
||||
private List<String> extractSttpCodesFromFilter(DataSourceRequest.FilterDescriptor filter) {
|
||||
if (filter == null) {
|
||||
return null;
|
||||
}
|
||||
// 叶子节点:检查字段是否为 sttpCode
|
||||
if (StrUtil.isNotBlank(filter.getField())) {
|
||||
if ("sttpCode".equals(filter.getField()) || "sttp_code".equalsIgnoreCase(filter.getField())) {
|
||||
if ("in".equalsIgnoreCase(filter.getOperator())) {
|
||||
Object val = filter.getValue();
|
||||
if (val instanceof List<?> list) {
|
||||
return list.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(Object::toString)
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.map(String::trim)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
if (val instanceof Object[] arr) {
|
||||
return Arrays.stream(arr)
|
||||
.filter(Objects::nonNull)
|
||||
.map(Object::toString)
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.map(String::trim)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
// 递归子节点
|
||||
if (CollUtil.isNotEmpty(filter.getFilters())) {
|
||||
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||
List<String> codes = extractSttpCodesFromFilter(child);
|
||||
if (codes != null) {
|
||||
return codes;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
private String mapVmsFilterColumn(String field) {
|
||||
if (field == null) return null;
|
||||
return switch (field) {
|
||||
case "stcd" -> "STCD";
|
||||
case "stnm" -> "STNM";
|
||||
case "sttpCode", "sttp_code" -> "STTP_CODE";
|
||||
case "sttpName", "sttp_name" -> "STTP_NAME";
|
||||
case "mway" -> "MWAY";
|
||||
case "rstcd" -> "RSTCD";
|
||||
case "ennm" -> "ENNM";
|
||||
case "baseId", "base_id" -> "BASE_ID";
|
||||
case "baseName", "base_name" -> "BASE_NAME";
|
||||
case "fhstcd" -> "FHSTCD";
|
||||
case "lgtd" -> "LGTD";
|
||||
case "lttd" -> "LTTD";
|
||||
case "orderIndex", "order_index" -> "ORDER_INDEX";
|
||||
case "rstcdStepSort", "rstcdstepsort" -> "RSTCDSTEPSORT";
|
||||
case "isDeleted", "is_deleted" -> "IS_DELETED";
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -3375,7 +3375,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
||||
// 前端排序
|
||||
List<DataSourceRequest.SortDescriptor> sort = dataSourceRequest.getSort();
|
||||
if (sort != null && !sort.isEmpty()) {
|
||||
sql.append(") ORDER BY ");
|
||||
sql.append(") WHERE ROWNUM = 1 ORDER BY ");
|
||||
for (int i = 0; i < sort.size(); i++) {
|
||||
sql.append(sort.get(i).getField()).append(" ").append(sort.get(i).getDir());
|
||||
if (i < sort.size() - 1) {
|
||||
@ -3385,7 +3385,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
||||
} else {
|
||||
sql.append(")");
|
||||
}
|
||||
sql.append(" WHERE ROWNUM = 1");
|
||||
|
||||
|
||||
List<WtrvDefaultStcdVo> dataList = microservicDynamicSQLMapper
|
||||
.pageAllListWithResultType(null, sql.toString(), null, WtrvDefaultStcdVo.class);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user