From 852a5c6e91e7ca34c9d69f9275607e87518ab621 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 30 Jun 2026 14:57:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B2=BF=E7=A8=8B=E9=B1=BC=E7=B1=BB?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E6=83=85=E5=86=B5=E4=BA=8C=E7=BA=A7=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2tab=E9=A1=B5=E7=AD=BE=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wte/controller/WeFishController.java | 6 ++ .../wte/entity/vo/WeFishHbbQgcDetailVo.java | 29 +++++ .../qgc_env/wte/service/WeFishService.java | 3 + .../wte/service/impl/WeFishServiceImpl.java | 101 ++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeFishHbbQgcDetailVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java index 716ffbc5..0c424fbc 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java @@ -117,6 +117,12 @@ public class WeFishController { return ResponseResult.successData(weFishService.getQgcWeFishDetailList(dataSourceRequest)); } + @PostMapping("/we/fisht/qgcDetail/qgc/GetKendoListCust") + @Operation(summary = "环保部-沿程鱼类变化情况二级弹窗") + public ResponseResult getHbbQgcWeFishDetailList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(weFishService.getHbbQgcWeFishDetailList(dataSourceRequest)); + } + @PostMapping("/we/fisht/detail/GetKendoListCust") @Operation(summary = "沿程鱼类变化情况二级弹窗") public ResponseResult getWeFishDetailList(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeFishHbbQgcDetailVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeFishHbbQgcDetailVo.java new file mode 100644 index 00000000..fc73c31a --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeFishHbbQgcDetailVo.java @@ -0,0 +1,29 @@ +package com.yfd.platform.qgc_env.wte.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@Schema(description = "环保部-沿程鱼类变化情况二级弹窗") +public class WeFishHbbQgcDetailVo { + + @Schema(description = "电站编码") + private String rstcd; + + @Schema(description = "电站名称") + private String rstcdName; + + @Schema(description = "断面编码") + private String stcd; + + @Schema(description = "断面名称") + private String stnm; + + @Schema(description = "鱼类名称") + private String name; + + @Schema(description = "鱼类对应ID") + private String id; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java index 45baa4e9..305739f4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java @@ -7,6 +7,7 @@ import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarTableVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeEnvmAutoMonitorVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo; +import com.yfd.platform.qgc_env.wte.entity.vo.WeFishHbbQgcDetailVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishStatQgcVo; @@ -56,6 +57,8 @@ public interface WeFishService { DataSourceResult getQgcWeFishDetailList(DataSourceRequest dataSourceRequest); + DataSourceResult getHbbQgcWeFishDetailList(DataSourceRequest dataSourceRequest); + DataSourceResult getWeFishDetailList(DataSourceRequest dataSourceRequest); DataSourceResult getWeFishStatTabList(DataSourceRequest dataSourceRequest); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java index 8d4ec677..aeed73df 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java @@ -17,6 +17,7 @@ import com.yfd.platform.qgc_env.wte.entity.vo.WeEnvmAutoMonitorVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo; +import com.yfd.platform.qgc_env.wte.entity.vo.WeFishHbbQgcDetailVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishStatQgcVo; @@ -760,6 +761,30 @@ public class WeFishServiceImpl implements WeFishService { return result; } + @Override + public DataSourceResult getHbbQgcWeFishDetailList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + Page page = loadOptions == null ? null + : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + Map paramMap = new HashMap<>(); + DataSourceRequest.FilterDescriptor filter = dataSourceRequest == null ? null : dataSourceRequest.getFilter(); + + String baseId = firstNonBlankWeFishFilter(filter, "baseId", "base_id"); + String rstcd = getFirstWeFishFilterText(filter, "stcd"); + String rvcd = firstNonBlankWeFishFilter(filter, "rvcd", "hbrvcd"); + String yr = getFirstWeFishFilterText(filter, "yr"); + String ty = getFirstWeFishFilterText(filter, "ty"); + + String sql = buildHbbQgcWeFishDetailSql(baseId, rstcd, rvcd, yr, ty, paramMap); + List> rows = microservicDynamicSQLMapper.pageAllList(page, sql, paramMap); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(buildHbbQgcWeFishDetailResult(rows)); + result.setTotal(page != null ? page.getTotal() : (long) rows.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public DataSourceResult getWeFishDetailList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -1411,6 +1436,63 @@ public class WeFishServiceImpl implements WeFishService { return sql.toString(); } + private String buildHbbQgcWeFishDetailSql(String baseId, + String rstcd, + String rvcd, + String yr, + String ty, + Map paramMap) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("section.RSTCD AS rstcd, ") + .append("eng.ENNM AS rstcdName, ") + .append("section.STCD AS stcd, ") + .append("section.STNM AS stnm, ") + .append("dict.ZY_FISH_ID AS id ") + .append("FROM SD_WE_B_H section ") + .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") + .append(" AND NVL(we.IS_DELETED, 0) = 0 ") + .append(" AND NVL(we.STATUS, 1) = 1 ") + .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") + .append(" AND NVL(fish.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON section.RSTCD = eng.STCD ") + .append(" AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ") + .append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") + .append("WHERE NVL(section.USFL, 0) = 1 ") + .append("AND section.RSTCD IS NOT NULL ") + .append("AND dict.ZY_FISH_ID IS NOT NULL "); + + if (StrUtil.isNotBlank(baseId)) { + paramMap.put("hbbQgcWeFishDetailBaseId", baseId); + sql.append("AND section.BASE_ID = #{map.hbbQgcWeFishDetailBaseId} "); + } + if (StrUtil.isNotBlank(rstcd)) { + paramMap.put("hbbQgcWeFishDetailRstcd", rstcd); + sql.append("AND section.RSTCD = #{map.hbbQgcWeFishDetailRstcd} "); + } + if (StrUtil.isNotBlank(rvcd)) { + paramMap.put("hbbQgcWeFishDetailRvcd", rvcd); + sql.append("AND section.HBRVCD = #{map.hbbQgcWeFishDetailRvcd} "); + } + if (StrUtil.isNotBlank(yr)) { + paramMap.put("hbbQgcWeFishDetailYr", yr); + sql.append("AND TO_CHAR(we.TM, 'yyyy') = #{map.hbbQgcWeFishDetailYr} "); + } + if (StrUtil.isNotBlank(ty)) { + paramMap.put("hbbQgcWeFishDetailTy", ty); + sql.append("AND CASE ") + .append("WHEN dict.SPEC_ORIGIN = 2 THEN '1' ") + .append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ") + .append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ") + .append("END = #{map.hbbQgcWeFishDetailTy} "); + } + + sql.append("GROUP BY section.RSTCD, eng.ENNM, section.STCD, section.STNM,dict.ZY_FISH_ID ") + .append("ORDER BY eng.ENNM ASC NULLS LAST, section.STNM ASC NULLS LAST"); + return sql.toString(); + } + private String buildWeFishStatTabSql(String baseId, String rstcd, String rvcd, @@ -1505,6 +1587,25 @@ public class WeFishServiceImpl implements WeFishService { return result; } + private List buildHbbQgcWeFishDetailResult(List> rows) { + List result = new ArrayList<>(); + if (CollUtil.isEmpty(rows)) { + return result; + } + Map fishNameMap = loadWeFishNameMap(); + for (Map row : rows) { + String fishIds = safeWeFishString(firstPresentWeFishValue(row, "ID", "id")); + result.add(new WeFishHbbQgcDetailVo() + .setRstcd(safeWeFishString(firstPresentWeFishValue(row, "RSTCD", "rstcd"))) + .setRstcdName(safeWeFishString(firstPresentWeFishValue(row, "RSTCDNAME", "rstcdName"))) + .setStcd(safeWeFishString(firstPresentWeFishValue(row, "STCD", "stcd"))) + .setStnm(safeWeFishString(firstPresentWeFishValue(row, "STNM", "stnm"))) + .setId(fishIds) + .setName(resolveWeFishNames(fishIds, fishNameMap))); + } + return result; + } + private List buildWeFishStationItems(String stcdText, String stnmText) { List result = new ArrayList<>(); if (StrUtil.isBlank(stcdText) || StrUtil.isBlank(stnmText)) {