diff --git a/backend/src/main/java/com/yfd/platform/qgc_export/mapper/SdWqRMapper.java b/backend/src/main/java/com/yfd/platform/qgc_export/mapper/SdWqRMapper.java index aa9cb6b2..433c6e62 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_export/mapper/SdWqRMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_export/mapper/SdWqRMapper.java @@ -39,4 +39,9 @@ public interface SdWqRMapper extends BaseMapper { List> selectPollutants(@Param("stcdList") List stcdList, @Param("startTime") String startTime, @Param("endTime") String endTime); + + /** + * 查询 SD_WQ_R 表的字段注释(字段名 → 中文描述) + */ + List> selectColumnComments(); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_export/service/impl/QgcExportServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_export/service/impl/QgcExportServiceImpl.java index 9fb70f3e..05089b7e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_export/service/impl/QgcExportServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_export/service/impl/QgcExportServiceImpl.java @@ -518,9 +518,37 @@ public class QgcExportServiceImpl implements IQgcExportService { List> hourlyData = sdWqRMapper.selectComplianceData(uniqueStcds, startStr, endStr); // 查询日均达标数据 List> dailyData = sdWqdaySMapper.selectComplianceData(uniqueStcds, startStr, endStr); - // 查询主要污染物 + // 查询主要污染物(从小时表 WQ_SFDBHN_YS 获取) List> pollutantData = sdWqRMapper.selectPollutants(uniqueStcds, startStr, endStr); + // 查询要素中文名映射(通过 ST_TB_YS_B.YS_SHOW_NAME,COLUMN_NAME → 显示名) + Map colCommentMap = new LinkedHashMap<>(); + List> colComments = sdWqRMapper.selectColumnComments(); + for (Map cm : colComments) { + String colName = (String) cm.get("COLUMN_NAME"); + String comment = (String) cm.get("COMMENTS"); + if (colName != null && comment != null && !comment.isEmpty()) { + colCommentMap.put(colName, comment); + } + } + + // 按 STCD 聚合污染物(拆分逗号、映射中文名、去重) + Map> pollutantSetMap = new LinkedHashMap<>(); + for (Map m : pollutantData) { + String stcd = (String) m.get("STCD"); + String pol = (String) m.get("POLLUTANT"); + if (pol != null && !pol.isEmpty()) { + Set set = pollutantSetMap.computeIfAbsent(stcd, k -> new LinkedHashSet<>()); + for (String field : pol.split(",")) { + String f = field.trim(); + if (!f.isEmpty()) { + String desc = colCommentMap.getOrDefault(f, f); + set.add(desc); + } + } + } + } + // 按 STCD 索引达标统计 Map> hourlyMap = new LinkedHashMap<>(); for (Map m : hourlyData) { @@ -530,15 +558,6 @@ public class QgcExportServiceImpl implements IQgcExportService { for (Map m : dailyData) { dailyMap.put((String) m.get("STCD"), m); } - // 按 STCD 聚合污染物(去重后用逗号分隔) - Map> pollutantSetMap = new LinkedHashMap<>(); - for (Map m : pollutantData) { - String stcd = (String) m.get("STCD"); - String pol = (String) m.get("POLLUTANT"); - if (pol != null && !pol.isEmpty()) { - pollutantSetMap.computeIfAbsent(stcd, k -> new LinkedHashSet<>()).add(pol); - } - } // ======== Row 0: 子标题行 ======== List subRow = new ArrayList<>(); diff --git a/backend/src/main/resources/mapper/qgc_export/SdWqRMapper.xml b/backend/src/main/resources/mapper/qgc_export/SdWqRMapper.xml index 987b757e..c19016a0 100644 --- a/backend/src/main/resources/mapper/qgc_export/SdWqRMapper.xml +++ b/backend/src/main/resources/mapper/qgc_export/SdWqRMapper.xml @@ -59,4 +59,13 @@ AND TM < TO_DATE(#{endTime}, 'YYYY-MM-DD HH24:MI:SS') + + +