feat: 获取鱼类调查装置概况

This commit is contained in:
tangwei 2026-06-12 10:43:27 +08:00
parent aa5f9a76c6
commit 539e5e9315
5 changed files with 126 additions and 0 deletions

View File

@ -2,7 +2,9 @@ package com.yfd.platform.qgc_env.fpr.controller;
import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.config.ResponseResult; 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_eng.eq.service.EngEqDataService;
import com.yfd.platform.qgc_env.fpr.entity.vo.FprdRunDataInfoVo;
import com.yfd.platform.qgc_env.fpr.service.FprMonitorService; import com.yfd.platform.qgc_env.fpr.service.FprMonitorService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -38,6 +40,13 @@ public class FprMonitorController {
return ResponseResult.successData(fprMonitorService.getFishDicList(dataSourceRequest)); 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") @PostMapping("/wbsb/GetKendoList")
@Operation(summary = "查询基地/基地流域树数据") @Operation(summary = "查询基地/基地流域树数据")
public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getWbsbList(@RequestBody DataSourceRequest dataSourceRequest) {

View File

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

View File

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

View File

@ -2,12 +2,16 @@ package com.yfd.platform.qgc_env.fpr.service;
import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult; 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.FprFishDicVo;
import com.yfd.platform.qgc_env.fpr.entity.vo.FprMsstbprptVo; import com.yfd.platform.qgc_env.fpr.entity.vo.FprMsstbprptVo;
import com.yfd.platform.qgc_env.fpr.entity.vo.FprdRunDataInfoVo;
public interface FprMonitorService { public interface FprMonitorService {
DataSourceResult<FprMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest); DataSourceResult<FprMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
DataSourceResult<FprFishDicVo> getFishDicList(DataSourceRequest dataSourceRequest); DataSourceResult<FprFishDicVo> getFishDicList(DataSourceRequest dataSourceRequest);
FprdRunDataInfoVo getFprdRunDataInfo(FprdRunDataAo ao);
} }

View File

@ -1,5 +1,7 @@
package com.yfd.platform.qgc_env.fpr.service.impl; 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.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.GroupHelper;
import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.GroupingInfo;
import com.yfd.platform.common.MicroservicDynamicSQLMapper; 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.FprFishDicVo;
import com.yfd.platform.qgc_env.fpr.entity.vo.FprMsstbprptVo; 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.qgc_env.fpr.service.FprMonitorService;
import com.yfd.platform.utils.QgcQueryWrapperUtil; import com.yfd.platform.utils.QgcQueryWrapperUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -29,6 +34,36 @@ public class FprMonitorServiceImpl implements FprMonitorService {
@Resource @Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; 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<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());
}
Map<String, Object> 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 @Override
public DataSourceResult<FprMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest) { public DataSourceResult<FprMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
@ -225,6 +260,45 @@ public class FprMonitorServiceImpl implements FprMonitorService {
"WHERE NVL(src.IS_DELETED, 0) = 0 "; "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() { private String buildFishDicBaseSql() {
return "SELECT " + return "SELECT " +
"src.ID AS id, " + "src.ID AS id, " +