From 539e5e9315e55647ddd29cc8ffa27ed501e48abe Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 12 Jun 2026 10:43:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E9=B1=BC=E7=B1=BB?= =?UTF-8?q?=E8=B0=83=E6=9F=A5=E8=A3=85=E7=BD=AE=E6=A6=82=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fpr/controller/FprMonitorController.java | 9 +++ .../qgc_env/fpr/entity/ao/FprdRunDataAo.java | 21 ++++++ .../fpr/entity/vo/FprdRunDataInfoVo.java | 18 +++++ .../fpr/service/FprMonitorService.java | 4 + .../service/impl/FprMonitorServiceImpl.java | 74 +++++++++++++++++++ 5 files changed, 126 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/ao/FprdRunDataAo.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/vo/FprdRunDataInfoVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/controller/FprMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/controller/FprMonitorController.java index 42656cb7..fa260bf9 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/controller/FprMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/controller/FprMonitorController.java @@ -2,7 +2,9 @@ package com.yfd.platform.qgc_env.fpr.controller; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_env.fpr.entity.ao.FprdRunDataAo; import com.yfd.platform.qgc_eng.eq.service.EngEqDataService; +import com.yfd.platform.qgc_env.fpr.entity.vo.FprdRunDataInfoVo; import com.yfd.platform.qgc_env.fpr.service.FprMonitorService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -38,6 +40,13 @@ public class FprMonitorController { return ResponseResult.successData(fprMonitorService.getFishDicList(dataSourceRequest)); } + @PostMapping("/sdFprdR/getFprdDataInfo") + @Operation(summary = "获取鱼类调查装置概况") + public ResponseResult getFprdRunDataInfo(@RequestBody FprdRunDataAo ao) { + FprdRunDataInfoVo result = fprMonitorService.getFprdRunDataInfo(ao); + return ResponseResult.successData(result); + } + @PostMapping("/wbsb/GetKendoList") @Operation(summary = "查询基地/基地流域树数据") public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/ao/FprdRunDataAo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/ao/FprdRunDataAo.java new file mode 100644 index 00000000..eab31d0a --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/ao/FprdRunDataAo.java @@ -0,0 +1,21 @@ +package com.yfd.platform.qgc_env.fpr.entity.ao; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "鱼类调查装置概况查询参数") +public class FprdRunDataAo { + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "站点编码,旧接口保留字段") + private String stcd; + + @Schema(description = "年度") + private Integer year; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/vo/FprdRunDataInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/vo/FprdRunDataInfoVo.java new file mode 100644 index 00000000..e7eda870 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/vo/FprdRunDataInfoVo.java @@ -0,0 +1,18 @@ +package com.yfd.platform.qgc_env.fpr.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "鱼类调查装置概况") +public class FprdRunDataInfoVo { + + @Schema(description = "鱼类调查装置数量") + private Integer fprdCount; + + @Schema(description = "鱼类种数") + private Integer ftpCount; + + @Schema(description = "鱼类记录数") + private Integer fishCount; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/FprMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/FprMonitorService.java index 5c8d434d..e8ff69e0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/FprMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/FprMonitorService.java @@ -2,12 +2,16 @@ package com.yfd.platform.qgc_env.fpr.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_env.fpr.entity.ao.FprdRunDataAo; import com.yfd.platform.qgc_env.fpr.entity.vo.FprFishDicVo; import com.yfd.platform.qgc_env.fpr.entity.vo.FprMsstbprptVo; +import com.yfd.platform.qgc_env.fpr.entity.vo.FprdRunDataInfoVo; public interface FprMonitorService { DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); DataSourceResult getFishDicList(DataSourceRequest dataSourceRequest); + + FprdRunDataInfoVo getFprdRunDataInfo(FprdRunDataAo ao); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java index 06256add..6934c32a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java @@ -1,5 +1,7 @@ package com.yfd.platform.qgc_env.fpr.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,8 +11,11 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupHelper; import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.common.exception.BizException; +import com.yfd.platform.qgc_env.fpr.entity.ao.FprdRunDataAo; import com.yfd.platform.qgc_env.fpr.entity.vo.FprFishDicVo; import com.yfd.platform.qgc_env.fpr.entity.vo.FprMsstbprptVo; +import com.yfd.platform.qgc_env.fpr.entity.vo.FprdRunDataInfoVo; import com.yfd.platform.qgc_env.fpr.service.FprMonitorService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; @@ -29,6 +34,36 @@ public class FprMonitorServiceImpl implements FprMonitorService { @Resource private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + @Override + public FprdRunDataInfoVo getFprdRunDataInfo(FprdRunDataAo ao) { + if (ao == null) { + throw new BizException("请求参数不能为空."); + } + if (StrUtil.isBlank(ao.getBaseId())) { + throw new BizException("基地编码(baseId)不能为空."); + } + if (ao.getYear() == null) { + throw new BizException("年度(year)不能为空."); + } + + Map paramMap = new HashMap<>(); + paramMap.put("baseId", ao.getBaseId()); + paramMap.put("year", String.valueOf(ao.getYear())); + if (StrUtil.isNotBlank(ao.getHbrvcd())) { + paramMap.put("hbrvcd", ao.getHbrvcd()); + } + + Map row = microservicDynamicSQLMapper.getOneBySql(buildFprdRunDataInfoSql(ao), paramMap); + if (row == null || row.isEmpty()) { + return new FprdRunDataInfoVo(); + } + return BeanUtil.fillBeanWithMap( + row, + new FprdRunDataInfoVo(), + CopyOptions.create().setIgnoreCase(true).setIgnoreError(true) + ); + } + @Override public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -225,6 +260,45 @@ public class FprMonitorServiceImpl implements FprMonitorService { "WHERE NVL(src.IS_DELETED, 0) = 0 "; } + private String buildFprdRunDataInfoSql(FprdRunDataAo ao) { + StringBuilder sql = new StringBuilder("SELECT ") + .append("NVL((SELECT COUNT(1) ") + .append(" FROM SD_FPRD_B_H baseCnt ") + .append(" WHERE NVL(baseCnt.IS_DELETED, 0) = 0 ") + .append(" AND baseCnt.STTP = 'FPRD' ") + .append(" AND baseCnt.BASE_ID = #{map.baseId}), 0) AS fprdCount, ") + .append("NVL((SELECT COUNT(DISTINCT fish.NAME) ") + .append(" FROM SD_FPRD_R run ") + .append(" INNER JOIN SD_FPRD_B_H base ON base.STCD = run.STCD ") + .append(" AND NVL(base.IS_DELETED, 0) = 0 ") + .append(" AND base.STTP = 'FPRD' ") + .append(" INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ") + .append(" AND NVL(fish.IS_DELETED, 0) = 0 ") + .append(" WHERE NVL(run.IS_DELETED, 0) = 0 ") + .append(" AND TO_CHAR(run.TM, 'YYYY') = #{map.year} ") + .append(" AND base.BASE_ID = #{map.baseId} "); + if (StrUtil.isNotBlank(ao.getHbrvcd())) { + sql.append(" AND base.HBRVCD = #{map.hbrvcd} "); + } + sql.append("), 0) AS ftpCount, ") + .append("NVL((SELECT COUNT(1) ") + .append(" FROM SD_FPRD_R run ") + .append(" INNER JOIN SD_FPRD_B_H base ON base.STCD = run.STCD ") + .append(" AND NVL(base.IS_DELETED, 0) = 0 ") + .append(" AND base.STTP = 'FPRD' ") + .append(" INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ") + .append(" AND NVL(fish.IS_DELETED, 0) = 0 ") + .append(" WHERE NVL(run.IS_DELETED, 0) = 0 ") + .append(" AND TO_CHAR(run.TM, 'YYYY') = #{map.year} ") + .append(" AND base.BASE_ID = #{map.baseId} "); + if (StrUtil.isNotBlank(ao.getHbrvcd())) { + sql.append(" AND base.HBRVCD = #{map.hbrvcd} "); + } + sql.append("), 0) AS fishCount ") + .append("FROM DUAL"); + return sql.toString(); + } + private String buildFishDicBaseSql() { return "SELECT " + "src.ID AS id, " +