feat: 增加电站查询接口

This commit is contained in:
tangwei 2026-05-29 11:56:13 +08:00
parent 21a5282572
commit b908daa9bc
5 changed files with 368 additions and 11 deletions

View File

@ -49,15 +49,15 @@ public class SwaggerConfig {
public GroupedOpenApi groupDataEnvApi() {
return GroupedOpenApi.builder()
.group("2. 过鱼数据模块")
.packagesToScan("com.yfd.platform.data.controller")
.packagesToScan("com.yfd.platform.qgc_data.controller")
.build();
}
@Bean
public GroupedOpenApi groupEnvApi() {
public GroupedOpenApi groupQgcBaseApi() {
return GroupedOpenApi.builder()
.group("3全过程-生态环保数据服务")
.packagesToScan("com.yfd.platform.env.controller")
.packagesToScan("com.yfd.platform.qgc_base.controller")
.build();
}
@ -65,14 +65,14 @@ public class SwaggerConfig {
public GroupedOpenApi groupEnvWTApi() {
return GroupedOpenApi.builder()
.group("3.1 全过程-生态环保数据服务-水温监测")
.packagesToScan("com.yfd.platform.env.wt.controller")
.packagesToScan("com.yfd.platform.qgc_env.wt.controller")
.build();
}
@Bean
public GroupedOpenApi groupEnvWQApi() {
return GroupedOpenApi.builder()
.group("3.2 全过程-生态环保数据服务-水质监测")
.packagesToScan("com.yfd.platform.env.wq.controller")
.packagesToScan("com.yfd.platform.qgc_env.wq.controller")
.build();
}
@ -80,7 +80,7 @@ public class SwaggerConfig {
public GroupedOpenApi groupEnvFPApi() {
return GroupedOpenApi.builder()
.group("3.3 全过程-生态环保数据服务-过鱼设施")
.packagesToScan("com.yfd.platform.env.fp.controller")
.packagesToScan("com.yfd.platform.qgc_env.fp.controller")
.build();
}
@ -88,7 +88,7 @@ public class SwaggerConfig {
public GroupedOpenApi groupEnvFHApi() {
return GroupedOpenApi.builder()
.group("3.4 全过程-生态环保数据服务-栖息地")
.packagesToScan("com.yfd.platform.env.fh.controller")
.packagesToScan("com.yfd.platform.qgc_env.fh.controller")
.build();
}
@ -96,7 +96,7 @@ public class SwaggerConfig {
public GroupedOpenApi groupEnvZQApi() {
return GroupedOpenApi.builder()
.group("3.4.1 全过程-生态环保数据服务-栖息地-水文模块")
.packagesToScan("com.yfd.platform.env.zq.controller")
.packagesToScan("com.yfd.platform.qgc_env.zq.controller")
.build();
}
@ -107,7 +107,7 @@ public class SwaggerConfig {
public GroupedOpenApi groupEngApi() {
return GroupedOpenApi.builder()
.group("4. 全过程-常规水电数据服务")
.packagesToScan("com.yfd.platform.eng.controller")
.packagesToScan("com.yfd.platform.qgc_eng.controller")
.build();
}
}

View File

@ -0,0 +1,26 @@
package com.yfd.platform.qgc_base.controller;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/env/eng")
@Tag(name = "电站基础监测")
public class SdEngMonitorController {
@Resource
private ISdEngInfoBHService engInfoBHService;
@GetMapping("/msstbprpt/getStInfoByStcd")
@Operation(summary = "根据站码查询单条电站基础数据")
public ResponseResult getStInfoByStcd(@RequestParam String stcd) {
return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd));
}
}

View File

@ -0,0 +1,103 @@
package com.yfd.platform.qgc_base.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "电站基础详情")
public class EngBaseInfoVo extends SdEngInfoBH {
@Schema(description = "主键ID")
private String id;
@Schema(description = "站名")
private String stnm;
@Schema(description = "站类主键")
private String sttp;
@Schema(description = "站类编码")
private String sttpCode;
@Schema(description = "站类名称")
private String sttpName;
@Schema(description = "站类全路径")
private String sttpFullPath;
@Schema(description = "站类层级")
private Integer sttpTreeLevel;
@Schema(description = "建设阶段编码")
private String blprdCode;
@Schema(description = "建设阶段名称")
private String blprdName;
@Schema(description = "建设阶段分类编码")
private String blprdCcode;
@Schema(description = "建设阶段分类名称")
private String blprdCname;
@Schema(description = "基地名称")
private String baseName;
@Schema(description = "基地流域名称")
private String hbrvcdName;
@Schema(description = "流域名称")
private String rvcdName;
@Schema(description = "流域全路径")
private String rvcdFullPath;
@Schema(description = "行政区名称")
private String addvcdName;
@Schema(description = "行政区全路径")
private String addvcdFullPath;
@Schema(description = "国家名称")
private String countryName;
@Schema(description = "公司名称")
private String hynm;
@Schema(description = "集团名称")
private String topHynm;
@Schema(description = "数据接入中文")
private String dtinName;
@Schema(description = "建设状态名称")
private String bldsttName;
@Schema(description = "建设状态分类编码")
private String bldsttCcode;
@Schema(description = "建设状态分类名称")
private String bldsttCcodeName;
@Schema(description = "开发方式名称")
private String dvtpName;
@Schema(description = "调节性能名称")
private String rgcpName;
@Schema(description = "工程类别名称")
private String engtpName;
@Schema(description = "工程规模名称")
private String prscName;
@Schema(description = "工程规模库容名称")
private String scrscName;
@Schema(description = "工程等别名称")
private String prgrName;
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
import java.util.List;
import java.util.Set;
@ -58,4 +59,6 @@ public interface ISdEngInfoBHService extends IService<SdEngInfoBH> {
boolean deleteEngInfo(String stcd);
List<SdEngInfoBH> selectRegDropdown(SdEngInfoBHRequest sdEngInfoBHRequest);
}
EngBaseInfoVo getStInfoByStcd(String stcd);
}

View File

@ -1,12 +1,16 @@
package com.yfd.platform.qgc_base.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
import com.yfd.platform.qgc_data.domain.SysUserDataScope;
import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper;
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper;
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
import com.yfd.platform.utils.SecurityUtils;
@ -31,6 +35,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
@Resource
private SdEngInfoBHMapper engInfoBHMapper;
@Resource
private MicroservicDynamicSQLMapper<?> microservicDynamicSQLMapper;
@Resource
private SysUserDataScopeMapper sysUserDataScopeMapper;
@ -194,4 +201,222 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
return this.list(wrapper);
}
}
@Override
public EngBaseInfoVo getStInfoByStcd(String stcd) {
SdEngInfoBH entity = this.getById(stcd);
if (entity == null) {
return null;
}
EngBaseInfoVo vo = new EngBaseInfoVo();
BeanUtil.copyProperties(entity, vo);
vo.setId(entity.getStcd());
vo.setStnm(entity.getEnnm());
String sql = "SELECT " +
"sttp.ID AS sttp, " +
"sttp.STTP_CODE AS sttpCode, " +
"sttp.STTP_NAME AS sttpName, " +
"sttp.FULL_PATH AS sttpFullPath, " +
"sttp.TREE_LEVEL AS sttpTreeLevel, " +
"hb.BASENAME AS baseName, " +
"hbrv.HBRVNM AS hbrvcdName, " +
"rv.RVNM AS rvcdName, " +
"rv.PATH AS rvcdFullPath, " +
"addv.ADDVNM AS addvcdName, " +
"addv.PATH AS addvcdFullPath, " +
"country.COUNTRY_NAME AS countryName, " +
"hy.HYNM AS hynm, " +
"topHy.HYNM AS topHynm " +
"FROM SD_ENGINFO_B_H eng " +
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = 'ENG' " +
" AND NVL(sttp.IS_DELETED, 0) = 0 " +
" AND NVL(sttp.ENABLE, 1) = 1 " +
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID " +
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " +
" AND NVL(hbrv.ENABLED, 1) = 1 " +
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
"LEFT JOIN SD_COUNTRY_B country ON country.COUNTRY_ID = eng.COUNTRY AND NVL(country.ENABLED, 1) = 1 " +
"LEFT JOIN SD_HYCD_DIC hy ON hy.HYCD = eng.HYCD " +
"LEFT JOIN SD_HYCD_DIC topHy ON topHy.HYCD = eng.TOP_HYCD " +
"WHERE eng.STCD = #{map.stcd}";
EngBaseInfoVo extra = microservicDynamicSQLMapper.getOneBySqlWithResultType(
sql, java.util.Collections.singletonMap("stcd", stcd), EngBaseInfoVo.class);
if (extra != null) {
BeanUtil.copyProperties(extra, vo, CopyOptions.create().setIgnoreNullValue(true));
}
vo.setSttpCode("ENG");
vo.setBlprdCode(entity.getBlprd() == null ? null : String.valueOf(entity.getBlprd()));
vo.setBlprdCcode(entity.getBlprd() == null ? null : String.valueOf(entity.getBlprd()));
vo.setBlprdName(resolveBlprdName(entity.getBlprd()));
vo.setBlprdCname(vo.getBlprdName());
vo.setDtinName(resolveDtinName(entity.getDtin()));
vo.setBldsttName(resolveBldsttName(entity.getBldstt()));
vo.setBldsttCcode(entity.getBldsttCode() == null ? null : String.valueOf(entity.getBldsttCode()));
vo.setBldsttCcodeName(resolveBldsttCodeName(entity.getBldsttCode()));
vo.setDvtpName(resolveDvtpName(entity.getDvtp()));
vo.setRgcpName(resolveRgcpName(entity.getRgcp()));
vo.setEngtpName(resolveEngtpName(entity.getEngtp()));
vo.setPrscName(resolvePrscName(entity.getPrsc()));
vo.setScrscName(resolveScrscName(entity.getScrsc()));
vo.setPrgrName(resolvePrgrName(entity.getPrgr()));
return vo;
}
private String resolveBlprdName(Integer blprd) {
if (blprd == null) {
return null;
}
return switch (blprd) {
case 1001000 -> "规划";
case 1002000 -> "预可研";
case 1003000 -> "环评";
case 1004000 -> "可研";
case 1005000 -> "在建";
case 1006000 -> "招标设计";
case 1007000 -> "施工详图";
case 1009000 -> "建设";
case 1010000 -> "蓄水阶段环保验收";
case 1011000 -> "竣工";
case 1012000 -> "竣工环保验收";
case 1013000 -> "环境影响后评价";
default -> null;
};
}
private String resolveDtinName(Integer dtin) {
if (dtin == null) {
return null;
}
return dtin == 1 ? "已接入" : "未接入";
}
private String resolveBldsttName(String bldstt) {
if (!StringUtils.hasText(bldstt)) {
return null;
}
return switch (bldstt) {
case "1" -> "已建成未验收";
case "2" -> "在建";
case "3", "32", "64" -> "可研";
case "4", "61" -> "规划";
case "5", "63" -> "预可研";
case "6", "65" -> "已核准";
case "7", "67" -> "招标设计";
case "8", "69" -> "施工详图";
case "9", "40", "74" -> "其他";
case "10" -> "已建成已验收";
case "11" -> "已开展后评价";
case "31", "62" -> "项目建议书";
case "33" -> "已审批";
case "34", "66" -> "初步设计";
case "35" -> "技施设计";
case "36", "70" -> "在建";
case "37", "71" -> "已建成未验收";
case "38", "72" -> "已建成已验收";
case "39", "73" -> "已开展后评价";
case "68" -> "技施设计";
case "91" -> "拆除";
default -> null;
};
}
private String resolveBldsttCodeName(Integer bldsttCode) {
if (bldsttCode == null) {
return null;
}
return switch (bldsttCode) {
case 0 -> "未建/规划";
case 1 -> "在建";
case 2 -> "已建";
default -> null;
};
}
private String resolveDvtpName(String dvtp) {
if (!StringUtils.hasText(dvtp)) {
return null;
}
return switch (dvtp) {
case "1" -> "堤坝式";
case "2" -> "引水式";
case "3" -> "混合式";
default -> null;
};
}
private String resolveRgcpName(String rgcp) {
if (!StringUtils.hasText(rgcp)) {
return null;
}
return switch (rgcp) {
case "1" -> "多年调节";
case "2" -> "年调节";
case "3" -> "不完全年调节";
case "4" -> "径流式(无调节)";
case "5" -> "季调节";
case "6" -> "月调节";
case "7" -> "周调节";
case "8" -> "日调节";
case "9" -> "其他";
default -> null;
};
}
private String resolveEngtpName(Integer engtp) {
if (engtp == null) {
return null;
}
return switch (engtp) {
case 1 -> "水电站";
case 2 -> "水利工程";
case 3 -> "航电枢纽";
default -> null;
};
}
private String resolvePrscName(Integer prsc) {
if (prsc == null) {
return null;
}
return switch (prsc) {
case 1 -> "大型1";
case 2 -> "大型2";
case 3 -> "中型";
case 4 -> "小型";
default -> null;
};
}
private String resolveScrscName(Integer scrsc) {
if (scrsc == null) {
return null;
}
return switch (scrsc) {
case 1 -> "大型1";
case 2 -> "大型2";
case 3 -> "中型";
case 4 -> "小型1";
case 5 -> "小型2";
default -> null;
};
}
private String resolvePrgrName(String prgr) {
if (!StringUtils.hasText(prgr)) {
return null;
}
return switch (prgr) {
case "1" -> "";
case "2" -> "";
case "3" -> "";
case "4" -> "";
case "5" -> "";
default -> null;
};
}
}