From d9cf63e993f4a053f87b484ac06144f05244aeeb Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 11 Aug 2026 10:33:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SdEngInfoBHServiceImpl.java | 106 ++++++++---------- .../service/impl/SdWtMonitorServiceImpl.java | 4 +- 2 files changed, 47 insertions(+), 63 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 597827e0..425fa4bd 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -141,9 +141,6 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl queryPageList(Page page, String ennm, String rvcd, String baseId, String hycd) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -4095,18 +4092,31 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl 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 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 allItems = - vMsStbprpTMapper.selectBySttpCodes(List.of(sttpCode)); + sql.append(" ORDER BY NVL(RSTCDSTEPSORT, 999999), NVL(ORDER_INDEX, 999999)"); + + List 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 extractSttpCodesFromRequest(DataSourceRequest request) { - if (request == null || request.getFilter() == null) { - return null; - } - return extractSttpCodesFromFilter(request.getFilter()); - } - - private List 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 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; + }; } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index c4f98b49..687b983b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -3375,7 +3375,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { // 前端排序 List 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 dataList = microservicDynamicSQLMapper .pageAllListWithResultType(null, sql.toString(), null, WtrvDefaultStcdVo.class);