From d4a9d0e802e389ebf2ce3b42c59fc8f55851e0a4 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 12 Jun 2026 10:48:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E9=B1=BC=E7=B1=BB?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fpr/controller/FprMonitorController.java | 10 +++ .../fpr/entity/vo/FprFtpChangeInfoVo.java | 21 +++++++ .../fpr/service/FprMonitorService.java | 5 ++ .../service/impl/FprMonitorServiceImpl.java | 63 ++++++++++++++++--- 4 files changed, 90 insertions(+), 9 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/vo/FprFtpChangeInfoVo.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 fa260bf9..49d3cf87 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 @@ -4,6 +4,7 @@ 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.FprFtpChangeInfoVo; 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; @@ -15,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("/fpr") @Tag(name = "鱼类调查装置站基础信息") @@ -47,6 +50,13 @@ public class FprMonitorController { return ResponseResult.successData(result); } + @PostMapping("/sdFprdR/getFtpChangeInfo") + @Operation(summary = "获取鱼类变化情况") + public ResponseResult getFtpChangeInfo(@RequestBody FprdRunDataAo ao) { + List result = fprMonitorService.getFtpChangeInfo(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/vo/FprFtpChangeInfoVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/vo/FprFtpChangeInfoVo.java new file mode 100644 index 00000000..d9c2de58 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/entity/vo/FprFtpChangeInfoVo.java @@ -0,0 +1,21 @@ +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 FprFtpChangeInfoVo { + + @Schema(description = "鱼种类数量") + private String ftpCount; + + @Schema(description = "鱼数量") + private Integer fishCount; + + @Schema(description = "月") + private Integer month; + + @Schema(description = "年份") + private Integer year; +} 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 e8ff69e0..9f638034 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,11 +2,14 @@ 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.vo.FprFtpChangeInfoVo; 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 java.util.List; + public interface FprMonitorService { DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); @@ -14,4 +17,6 @@ public interface FprMonitorService { DataSourceResult getFishDicList(DataSourceRequest dataSourceRequest); FprdRunDataInfoVo getFprdRunDataInfo(FprdRunDataAo ao); + + List getFtpChangeInfo(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 6934c32a..309e6f0e 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 @@ -14,6 +14,7 @@ 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.FprFtpChangeInfoVo; 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; @@ -36,15 +37,7 @@ public class FprMonitorServiceImpl implements FprMonitorService { @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)不能为空."); - } + validateFprdRunDataAo(ao); Map paramMap = new HashMap<>(); paramMap.put("baseId", ao.getBaseId()); @@ -64,6 +57,23 @@ public class FprMonitorServiceImpl implements FprMonitorService { ); } + @Override + public List getFtpChangeInfo(FprdRunDataAo ao) { + validateFprdRunDataAo(ao); + + 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()); + } + return microservicDynamicSQLMapper.getAllListWithResultType( + buildFtpChangeInfoSql(ao), + paramMap, + FprFtpChangeInfoVo.class + ); + } + @Override public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -299,6 +309,41 @@ public class FprMonitorServiceImpl implements FprMonitorService { return sql.toString(); } + private String buildFtpChangeInfoSql(FprdRunDataAo ao) { + StringBuilder sql = new StringBuilder("SELECT ") + .append("COUNT(DISTINCT fish.NAME) AS ftpCount, ") + .append("COUNT(1) AS fishCount, ") + .append("TO_NUMBER(TO_CHAR(run.TM, 'MM')) AS month, ") + .append("TO_NUMBER(TO_CHAR(run.TM, 'YYYY')) AS year ") + .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("GROUP BY TO_CHAR(run.TM, 'MM'), TO_CHAR(run.TM, 'YYYY') ") + .append("ORDER BY TO_CHAR(run.TM, 'YYYY') ASC, TO_CHAR(run.TM, 'MM') ASC"); + return sql.toString(); + } + + private void validateFprdRunDataAo(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)不能为空."); + } + } + private String buildFishDicBaseSql() { return "SELECT " + "src.ID AS id, " +