feat: 栖息地关联站点描点

This commit is contained in:
tangwei 2026-07-07 15:44:55 +08:00
parent 58fec2e6f1
commit d9e15f9736
4 changed files with 214 additions and 0 deletions

View File

@ -77,4 +77,10 @@ public class FhHabitatController {
public ResponseResult getFhvapKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getFhvapKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(fhHabitatService.getFhvapKendoListCust(dataSourceRequest)); return ResponseResult.successData(fhHabitatService.getFhvapKendoListCust(dataSourceRequest));
} }
@PostMapping("/fhvap/fhPoint/GetKendoListCust")
@Operation(summary = "栖息地关联站点描点")
public ResponseResult getFhPoint(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(fhHabitatService.getFhPoint(dataSourceRequest));
}
} }

View File

@ -0,0 +1,67 @@
package com.yfd.platform.qgc_env.fh.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@Accessors(chain = true)
@Schema(description = "栖息地关联站点描点")
public class FhPointVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "所属栖息地编码")
private String fhstcd;
@Schema(description = "站码")
private String stcd;
@Schema(description = "站名")
private String stnm;
@Schema(description = "所属电站名称")
private String ennm;
@Schema(description = "经度")
private BigDecimal lgtd;
@Schema(description = "纬度")
private BigDecimal lttd;
@Schema(description = "基地编码")
private String baseId;
@Schema(description = "基地名称")
private String baseName;
@Schema(description = "所属流域编码")
private String rvcd;
@Schema(description = "所属流域名称")
private String rvcdName;
@Schema(description = "所属电站编码")
private String rstcd;
@Schema(description = "所属站类编码")
private String sttpCode;
@Schema(description = "基面高程")
private BigDecimal dtmel;
@Schema(description = "是否接入")
private Integer dtin;
@Schema(description = "建设状态分类")
private String bldsttCcode;
@Schema(description = "描点状态")
private String anchoPointState;
@Schema(description = "出入库标识(1 入库水温, 2 出库水温, 3 非出入库水温)")
private Integer ioType;
}

View File

@ -6,6 +6,7 @@ import com.yfd.platform.qgc_env.fh.entity.ao.FhDefaultAo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhBaseInfoVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhBaseInfoVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhDefaultVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhDefaultVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhHaVapVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhHaVapVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhPointVo;
import com.yfd.platform.qgc_env.fh.entity.vo.HabitatVo; import com.yfd.platform.qgc_env.fh.entity.vo.HabitatVo;
public interface FhHabitatService { public interface FhHabitatService {
@ -27,4 +28,6 @@ public interface FhHabitatService {
DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult getStTbYsBVoKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult<FhHaVapVo> getFhvapKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult<FhHaVapVo> getFhvapKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult<FhPointVo> getFhPoint(DataSourceRequest dataSourceRequest);
} }

View File

@ -17,6 +17,7 @@ import com.yfd.platform.qgc_env.fh.entity.ao.FhDefaultAo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhBaseInfoVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhBaseInfoVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhDefaultVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhDefaultVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhHaVapVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhHaVapVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhPointVo;
import com.yfd.platform.qgc_env.fh.entity.vo.HabitatVo; import com.yfd.platform.qgc_env.fh.entity.vo.HabitatVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhMsstbprptVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhMsstbprptVo;
import com.yfd.platform.qgc_env.fh.entity.vo.FhSdriverdayVo; import com.yfd.platform.qgc_env.fh.entity.vo.FhSdriverdayVo;
@ -2004,6 +2005,120 @@ public class FhHabitatServiceImpl implements FhHabitatService {
return dataSourceResult; return dataSourceResult;
} }
@Override
public DataSourceResult<FhPointVo> getFhPoint(DataSourceRequest dataSourceRequest) {
DataSourceResult<FhPointVo> result = new DataSourceResult<>();
result.setAggregates(new HashMap<>());
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("t.fhstcd AS fhstcd, ")
.append("t.stcd AS stcd, ")
.append("t.stnm AS stnm, ")
.append("eng.ENNM AS ennm, ")
.append("t.lgtd AS lgtd, ")
.append("t.lttd AS lttd, ")
.append("t.baseId AS baseId, ")
.append("hb.BASENAME AS baseName, ")
.append("t.rvcd AS rvcd, ")
.append("rv.RVNM AS rvcdName, ")
.append("t.rstcd AS rstcd, ")
.append("t.sttpCode AS sttpCode, ")
.append("t.dtmel AS dtmel, ")
.append("t.dtin AS dtin, ")
.append("t.bldsttCcode AS bldsttCcode, ")
.append("t.ioType AS ioType ")
.append("FROM (")
.append("SELECT fh.STCD AS fhstcd, wq.STCD AS stcd, wq.STNM AS stnm, ")
.append(" wq.LGTD AS lgtd, wq.LTTD AS lttd, fh.BASE_ID AS baseId, ")
.append(" null AS rvcd, wq.RSTCD AS rstcd, ")
.append(" 'WQ' AS sttpCode, wq.ELEV AS dtmel, wq.DTIN AS dtin, ")
.append(" TO_CHAR(wq.BLDSTT_CODE) AS bldsttCcode, CAST(NULL AS NUMBER) AS ioType ")
.append("FROM SD_FHBT_B_H fh ")
.append("INNER JOIN SD_WQ_B_H wq ON fh.STCD = wq.FHSTCD ")
.append("WHERE NVL(fh.IS_DELETED, 0) = 0 ")
.append(" AND NVL(wq.IS_DELETED, 0) = 0 ")
.append(" AND fh.BASE_ID <> 'other' ")
.append(" AND wq.LGTD IS NOT NULL ")
.append("UNION ALL ")
.append("SELECT fh.STCD AS fhstcd, wt.STCD AS stcd, wt.STNM AS stnm, ")
.append(" wt.LGTD AS lgtd, wt.LTTD AS lttd, fh.BASE_ID AS baseId, ")
.append(" NVL(fh.RVCD, engWt.RVCD) AS rvcd, wt.RSTCD AS rstcd, ")
.append(" 'WTRV' AS sttpCode, wt.ELEV AS dtmel, wt.DTIN AS dtin, ")
.append(" TO_CHAR(wt.BLDSTT_CODE) AS bldsttCcode, ")
.append(" CASE WHEN wt.WT_TYPE = 'IWT' THEN 1 ")
.append(" WHEN wt.WT_TYPE = 'DWT' THEN 2 ")
.append(" ELSE 3 END AS ioType ")
.append("FROM SD_FHBT_B_H fh ")
.append("INNER JOIN SD_WT_B_H wt ON fh.STCD = wt.FHSTCD ")
.append("LEFT JOIN SD_ENGINFO_B_H engWt ON engWt.STCD = wt.RSTCD AND NVL(engWt.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(fh.IS_DELETED, 0) = 0 ")
.append(" AND NVL(wt.IS_DELETED, 0) = 0 ")
.append(" AND fh.BASE_ID <> 'other' ")
.append(" AND wt.LGTD IS NOT NULL ")
.append(" AND wt.STTP = 'WTRV' ")
.append("UNION ALL ")
.append("SELECT fh.STCD AS fhstcd, rv.STCD AS stcd, rv.STNM AS stnm, ")
.append(" rv.LGTD AS lgtd, rv.LTTD AS lttd, fh.BASE_ID AS baseId, ")
.append(" NVL(fh.RVCD, engRv.RVCD) AS rvcd, rv.RSTCD AS rstcd, ")
.append(" 'ZQ' AS sttpCode, rv.ELEV AS dtmel, rv.DTIN AS dtin, ")
.append(" TO_CHAR(rv.BLDSTT_CODE) AS bldsttCcode, CAST(NULL AS NUMBER) AS ioType ")
.append("FROM SD_FHBT_B_H fh ")
.append("INNER JOIN SD_RIVER_B_H rv ON fh.STCD = rv.FHSTCD ")
.append("LEFT JOIN SD_ENGINFO_B_H engRv ON engRv.STCD = rv.RSTCD AND NVL(engRv.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(fh.IS_DELETED, 0) = 0 ")
.append(" AND NVL(rv.IS_DELETED, 0) = 0 ")
.append(" AND fh.BASE_ID <> 'other' ")
.append(" AND rv.LGTD IS NOT NULL ")
.append(" AND rv.STTP = 'ZQ' ")
.append("UNION ALL ")
.append("SELECT fh.STCD AS fhstcd, vd.STCD AS stcd, vd.STNM AS stnm, ")
.append(" vd.LGTD AS lgtd, vd.LTTD AS lttd, fh.BASE_ID AS baseId, ")
.append(" NVL(vd.RVCD, fh.RVCD) AS rvcd, vd.RSTCD AS rstcd, ")
.append(" 'VD' AS sttpCode, vd.ELEV AS dtmel, vd.DTIN AS dtin, ")
.append(" TO_CHAR(vd.BLDSTT_CODE) AS bldsttCcode, CAST(NULL AS NUMBER) AS ioType ")
.append("FROM SD_FHBT_B_H fh ")
.append("INNER JOIN SD_VDINFO_B vd ON fh.STCD = vd.FHSTCD ")
.append("WHERE NVL(fh.IS_DELETED, 0) = 0 ")
.append(" AND fh.BASE_ID <> 'other' ")
.append(" AND vd.LGTD IS NOT NULL ")
.append(") t ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.rstcd AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = t.baseId AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = t.rvcd ")
.append("WHERE 1 = 1 ");
String filterSql = QgcQueryWrapperUtil.buildFilterCondition(
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
paramMap,
new int[]{0},
this::mapFhPointColumn
);
if (StrUtil.isNotBlank(filterSql)) {
sql.append("AND ").append(filterSql).append(" ");
}
sql.append("ORDER BY t.fhstcd, t.sttpCode, t.stcd");
List<FhPointVo> list = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, FhPointVo.class);
for (FhPointVo vo : list) {
String sttpCode = StrUtil.blankToDefault(vo.getSttpCode(), "");
if ("WQ".equalsIgnoreCase(sttpCode)) {
vo.setAnchoPointState("FH_WQ");
} else if ("WTRV".equalsIgnoreCase(sttpCode)) {
vo.setAnchoPointState("FH_WTRV");
} else if ("ZQ".equalsIgnoreCase(sttpCode)) {
vo.setAnchoPointState("FH_ZQ");
} else if ("VD".equalsIgnoreCase(sttpCode)) {
vo.setAnchoPointState("FH_VD");
}
}
result.setData(list);
result.setTotal((long) list.size());
return result;
}
private String mapWeFvColumn(String field) { private String mapWeFvColumn(String field) {
if (StrUtil.isBlank(field)) { if (StrUtil.isBlank(field)) {
return null; return null;
@ -2014,4 +2129,27 @@ public class FhHabitatServiceImpl implements FhHabitatService {
default -> null; default -> null;
}; };
} }
private String mapFhPointColumn(String field) {
if (StrUtil.isBlank(field)) {
return null;
}
return switch (field.toLowerCase()) {
case "fhstcd" -> "t.fhstcd";
case "stcd" -> "t.stcd";
case "stnm" -> "t.stnm";
case "ennm" -> "eng.ENNM";
case "baseid" -> "t.baseId";
case "basename" -> "hb.BASENAME";
case "rvcd" -> "t.rvcd";
case "rvcdname" -> "rv.RVNM";
case "rstcd" -> "t.rstcd";
case "sttpcode" -> "t.sttpCode";
case "dtin" -> "t.dtin";
case "bldsttccode" -> "t.bldsttCcode";
case "lgtd" -> "t.lgtd";
case "lttd" -> "t.lttd";
default -> null;
};
}
} }