feat: 获取鱼类变化情况

This commit is contained in:
tangwei 2026-06-12 10:48:57 +08:00
parent 539e5e9315
commit d4a9d0e802
4 changed files with 90 additions and 9 deletions

View File

@ -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<FprFtpChangeInfoVo> result = fprMonitorService.getFtpChangeInfo(ao);
return ResponseResult.successData(result);
}
@PostMapping("/wbsb/GetKendoList")
@Operation(summary = "查询基地/基地流域树数据")
public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) {

View File

@ -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;
}

View File

@ -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<FprMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
@ -14,4 +17,6 @@ public interface FprMonitorService {
DataSourceResult<FprFishDicVo> getFishDicList(DataSourceRequest dataSourceRequest);
FprdRunDataInfoVo getFprdRunDataInfo(FprdRunDataAo ao);
List<FprFtpChangeInfoVo> getFtpChangeInfo(FprdRunDataAo ao);
}

View File

@ -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<String, Object> paramMap = new HashMap<>();
paramMap.put("baseId", ao.getBaseId());
@ -64,6 +57,23 @@ public class FprMonitorServiceImpl implements FprMonitorService {
);
}
@Override
public List<FprFtpChangeInfoVo> getFtpChangeInfo(FprdRunDataAo ao) {
validateFprdRunDataAo(ao);
Map<String, Object> 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<FprMsstbprptVo> 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, " +