From b1b7cacef75e886c0a03e85568a3df6c2ca57c0a Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 29 Jun 2026 17:23:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B0=B4=E7=94=9F=E7=94=9F=E6=80=81?= =?UTF-8?q?=E8=B0=83=E6=9F=A5=E6=A6=82=E5=86=B5=E4=BA=8C=E7=BA=A7=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wte/controller/WeFishController.java | 6 ++ .../qgc_env/wte/entity/vo/WeStaticsVo.java | 26 ++++++ .../qgc_env/wte/service/WeFishService.java | 2 + .../wte/service/impl/WeFishServiceImpl.java | 82 +++++++++++++++++++ 4 files changed, 116 insertions(+) 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 d9456491..bef8858a 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 @@ -69,6 +69,12 @@ public class WeFishController { return ResponseResult.successData(weFishService.getQgcWeFishStatics(dataSourceRequest)); } + @PostMapping("/we/fisht/statics/getWeStaticsSecond") + @Operation(summary = "水生生态调查概况二级页面") + public ResponseResult getWeStaticsSecond(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(weFishService.getWeStaticsSecond(dataSourceRequest)); + } + @PostMapping("/we/fisht/stat/qgc/GetKendoListCust") @Operation(summary = "环保部-沿程鱼类变化情况柱状图") public ResponseResult getQgcWeFishStatList(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeStaticsVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeStaticsVo.java index 2dd0928e..83a2e442 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeStaticsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeStaticsVo.java @@ -4,11 +4,37 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; +import java.util.Date; + @Data @Accessors(chain = true) @Schema(description = "水生生态调查概况") public class WeStaticsVo { + @Schema(description = "断面编码") + private String stcd; + + @Schema(description = "断面名称") + private String stnm; + + @Schema(description = "调查批次") + private String dcpc; + + @Schema(description = "调查鱼类") + private String ftp; + + @Schema(description = "调查鱼类名称") + private String ftpName; + + @Schema(description = "鱼类数量") + private Long fcnt; + + @Schema(description = "附件ID") + private String fid; + + @Schema(description = "调查时间") + private Date tm; + @Schema(description = "调查批次数量") private Long dcpcCount; 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 9cf1c024..cbf58e14 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 @@ -35,6 +35,8 @@ public interface WeFishService { DataSourceResult getQgcWeFishStatics(DataSourceRequest dataSourceRequest); + DataSourceResult getWeStaticsSecond(DataSourceRequest dataSourceRequest); + DataSourceResult getQgcWeFishStatList(DataSourceRequest dataSourceRequest); DataSourceResult getQgcFishListStat(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 fbaaf40c..078f1167 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 @@ -372,6 +372,58 @@ public class WeFishServiceImpl implements WeFishService { return result; } + @Override + public DataSourceResult getWeStaticsSecond(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + GroupingInfo[] groupInfos = loadOptions == null ? null : loadOptions.getGroup(); + Map paramMap = new HashMap<>(); + + String filterSql = buildWeFishQgcFilterCondition( + dataSourceRequest == null ? null : dataSourceRequest.getFilter(), + paramMap, + new int[]{0} + ); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildWeStaticsSecondSelectSql(dataSourceRequest == null ? null : dataSourceRequest.getSelect())) + .append(" FROM (") + .append(buildWeFishQgcDetailSql()) + .append(") r WHERE 1 = 1 "); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql).append(" "); + } + + DataSourceResult result = new DataSourceResult<>(); + if (CollUtil.isNotEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + String groupedSql = buildWeFishQgcGroupSql(sql.toString(), groupInfos); + List> rows = microservicDynamicSQLMapper.getAllList(groupedSql, paramMap); + if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) { + result.setData((List) (List) new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos))); + } else { + result.setData((List) (List) new GroupHelper().group(rows, Arrays.asList(groupInfos))); + } + result.setTotal((long) rows.size()); + result.setAggregates(new HashMap<>()); + return result; + } + + sql.append(buildWeFishQgcOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + Page page = loadOptions == null ? null + : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + page, + sql.toString(), + paramMap, + WeStaticsVo.class + ); + + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public DataSourceResult getQgcWeFishStatList(DataSourceRequest dataSourceRequest) { Map paramMap = new HashMap<>(); @@ -2084,9 +2136,11 @@ public class WeFishServiceImpl implements WeFishService { case "hbrvcdName" -> "r.hbrvcdName"; case "dcpc" -> "r.dcpc"; case "tm" -> "r.tm"; + case "year" -> "r.yr"; case "werFid" -> "r.werFid"; case "werId" -> "r.werId"; case "ftp" -> "r.ftp"; + case "ftpName" -> "r.name"; case "fsz" -> "r.fsz"; case "fcnt" -> "r.fcnt"; case "fwgh" -> "r.fwgh"; @@ -2142,6 +2196,34 @@ public class WeFishServiceImpl implements WeFishService { return " ORDER BY " + String.join(", ", orderByParts); } + private String buildWeStaticsSecondSelectSql(List selectFields) { + Map columns = new LinkedHashMap<>(); + columns.put("stcd", "r.stcd AS stcd"); + columns.put("stnm", "r.stnm AS stnm"); + columns.put("ftp", "r.ftp AS ftp"); + columns.put("ftpName", "r.name AS ftpName"); + columns.put("dcpc", "r.dcpc AS dcpc"); + columns.put("tm", "r.tm AS tm"); + columns.put("fcnt", "r.fcnt AS fcnt"); + columns.put("fid", "r.werFid AS fid"); + + List selected = new ArrayList<>(); + if (CollUtil.isEmpty(selectFields)) { + selected.addAll(columns.values()); + } else { + for (String field : selectFields) { + String column = columns.get(field); + if (StrUtil.isNotBlank(column)) { + selected.add(column); + } + } + } + if (selected.isEmpty()) { + selected.addAll(columns.values()); + } + return String.join(", ", selected); + } + private Object normalizeWeFishQgcValue(String field, Object value) { if (value == null) { return null;