From 30d0522a9cca80649e1842de25671b670449c60a Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 27 May 2026 08:56:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/service/impl/EnvWqDataServiceImpl.java | 102 ++++++++++++++++-- 1 file changed, 93 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java index 5246a5c..2236da4 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java @@ -7,6 +7,7 @@ import com.yfd.platform.common.CommonConstant; 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; @@ -47,9 +48,12 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { RequestHolder.getHttpServletRequest().getParameter(CommonConstant.CALCULATE_FLAG) ); - StringBuilder sql = new StringBuilder(buildEnvWqDataBaseSql(calculated)); + StringBuilder sql = new StringBuilder(buildEnvWqProcessBaseSql(calculated)); Map paramMap = new HashMap<>(); - String filterSql = buildEnvWqDataFilterCondition( + if (calculated) { + paramMap.put("recordUser", SecurityUtils.getUserId()); + } + String filterSql = buildEnvWqFilterCondition( dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0} @@ -62,27 +66,27 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { String groupBy = KendoUtil.getGroupBy(dataSourceRequest); GroupingInfo[] groupInfos = loadOptions.getGroup(); if (StrUtil.isNotBlank(groupBy) && groupInfos != null && groupInfos.length > 0) { - String groupedSql = buildEnvWqDataGroupSql(sql.toString(), groupBy, groupInfos); + String groupedSql = buildEnvWqGroupSql(sql.toString(), dataSourceRequest, groupInfos); List> list = microservicDynamicSQLMapper.pageAllList(null, groupedSql, paramMap); + list = filterInvalidEnvWqGroupRows(list, groupInfos); DataSourceResult result = new DataSourceResult(); if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { result.setData(new GroupHelper().faltGroup(list, Arrays.asList(groupInfos))); } else { - result.setData(new GroupHelper().group(list, Arrays.asList(groupInfos))); + result.setData(toLegacyGroupResult(new GroupHelper().group(list, Arrays.asList(groupInfos)), 0)); } result.setTotal(0L); result.setAggregates(new HashMap<>()); return result; } - sql.append(buildEnvWqDataOrderBySql(dataSourceRequest.getSort())); + sql.append(buildEnvWqOrderBySql(dataSourceRequest.getSort())); PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions); Page page = pageInfo.getHasPageInfo() ? pageInfo.getPage() : null; - List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EnvWqDataVo.class); - fillEnvWqDataDerivedFields(list); - fillEnvWqDataLimit(list); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, EnvWqVo.class); + fillEnvWqDerivedFields(list, calculated); - DataSourceResult result = new DataSourceResult<>(); + DataSourceResult result = new DataSourceResult<>(); result.setData(list); result.setTotal(page != null ? page.getTotal() : list.size()); result.setAggregates(new HashMap<>()); @@ -940,10 +944,12 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { case "type" -> "T.TYPE"; case "sttype" -> "T.STTYPE"; case "sfdb" -> "T.SFDB"; + case "dtinType" -> "T.DTINTYPE"; case "rstcdStepSort" -> "T.RSTCDSTEPSORT"; case "baseStepSort" -> "T.BASESTEPSORT"; case "rvcdStepSort" -> "T.RVCDSTEPSORT"; case "siteStepSort" -> "T.SITESTEPSORT"; + case "drMonth" -> "T.DR_MONTH"; case "drYear" -> "T.DR_YEAR"; case "wqSfdbHy" -> "T.WQ_SFDB_HY"; case "wqSfdbHn" -> "T.WQ_SFDB_HN"; @@ -954,6 +960,84 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { }; } + private List> filterInvalidEnvWqGroupRows(List> rows, + GroupingInfo[] groupInfos) { + if (rows == null || rows.isEmpty() || groupInfos == null || groupInfos.length == 0) { + return rows; + } + boolean containsBaseGroup = false; + for (GroupingInfo groupInfo : groupInfos) { + if (groupInfo == null || StrUtil.isBlank(groupInfo.getSelector())) { + continue; + } + String selector = groupInfo.getSelector(); + if ("baseStepSort".equals(selector) || "baseId".equals(selector) || "baseName".equals(selector)) { + containsBaseGroup = true; + break; + } + } + if (!containsBaseGroup) { + return rows; + } + List> filtered = new ArrayList<>(); + for (Map row : rows) { + Object baseStepSort = readGroupValue(row, "baseStepSort"); + Object baseId = readGroupValue(row, "baseId"); + Object baseName = readGroupValue(row, "baseName"); + if (!isBlankGroupValue(baseStepSort) || !isBlankGroupValue(baseId) || !isBlankGroupValue(baseName)) { + filtered.add(row); + } + } + return filtered; + } + + private List> toLegacyGroupResult(List groups, int depth) { + if (groups == null) { + return null; + } + List> result = new ArrayList<>(); + for (Group group : groups) { + if (group == null) { + continue; + } + Map item = new LinkedHashMap<>(); + if (depth > 0 && group.getField() != null) { + item.put("field", group.getField()); + } + item.put("key", group.getKey()); + item.put("keyName", group.getKeyName()); + item.put("keyExt", group.getKeyExt() == null ? new HashMap<>() : group.getKeyExt()); + item.put("count", group.getCount()); + item.put("summary", group.getSummary() == null ? new Object[0] : group.getSummary()); + item.put("aggregates", group.getAggregates() == null ? new HashMap<>() : group.getAggregates()); + if (group.getItems() != null && !group.getItems().isEmpty() && group.getItems().get(0) instanceof Group) { + item.put("items", toLegacyGroupResult(group.getItems(), depth + 1)); + } else { + item.put("items", group.getItems()); + } + result.add(item); + } + return result; + } + + private Object readGroupValue(Map row, String field) { + Object value = row.get(field); + if (value == null) { + value = row.get(field.toUpperCase()); + } + return value; + } + + private boolean isBlankGroupValue(Object value) { + if (value == null) { + return true; + } + if (value instanceof String str) { + return StrUtil.isBlank(str); + } + return false; + } + private String buildEnvWqGroupSql(String baseSql, DataSourceRequest dataSourceRequest, GroupingInfo[] groupInfos) {