fix: 查询栖息地监测站点列表增加一个子逻辑

This commit is contained in:
tangwei 2026-05-28 16:24:36 +08:00
parent 3fa0857bfd
commit e7476da008
4 changed files with 127 additions and 6 deletions

View File

@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ -63,6 +64,42 @@ public class FhMsstbprptVo implements Serializable {
@Schema(description = "监测指标")
private String stindx;
@Schema(description = "建设阶段")
private Integer bldstt;
@Schema(description = "保护对象")
private String qxdbhdx;
@Schema(description = "保护范围")
private String qxdbhfw;
@Schema(description = "保护长度")
private BigDecimal qxdbhcd;
@Schema(description = "保护面积")
private BigDecimal qxdbhmj;
@Schema(description = "保护河流")
private String bhhl;
@Schema(description = "保护河段")
private String bhhd;
@Schema(description = "保护措施")
private String bhcs;
@Schema(description = "保护方式")
private String qxdbhfs;
@Schema(description = "实施时间")
private Date ststdt;
@Schema(description = "数据监测频次")
private Integer dtfrqcy;
@Schema(description = "投资")
private BigDecimal qxdinv;
@Schema(description = "是否启用")
private Integer usfl;

View File

@ -1008,8 +1008,7 @@ public class FhHabitatServiceImpl implements FhHabitatService {
}
sql.append(buildFhMsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
PageInfo pageInfo = loadOptions == null ? null : QgcQueryWrapperUtil.getPageInfo(loadOptions);
Page<?> page = pageInfo != null && pageInfo.getHasPageInfo() ? pageInfo.getPage() : null;
Page<?> page = QgcQueryWrapperUtil.buildPage(loadOptions,loadOptions.getSkip(), loadOptions.getTake());
List<FhMsstbprptVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FhMsstbprptVo.class);
DataSourceResult<FhMsstbprptVo> result = new DataSourceResult<>();
@ -1020,11 +1019,50 @@ public class FhHabitatServiceImpl implements FhHabitatService {
}
private String buildFhMsstbprptBaseSql(String sttpCode) {
boolean onlyFh = "FH".equalsIgnoreCase(StrUtil.trim(sttpCode));
boolean onlyRiver = "ZQ".equalsIgnoreCase(StrUtil.trim(sttpCode));
boolean onlyWtrv = "WTRV".equalsIgnoreCase(StrUtil.trim(sttpCode));
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM (");
if (!onlyWtrv) {
if (onlyFh) {
sql.append("SELECT fh.STCD AS stcd, ")
.append("fh.STNM AS stnm, ")
.append("'FH' AS sttpCode, ")
.append("CAST(NULL AS VARCHAR2(36)) AS fhstcd, ")
.append("CAST(NULL AS VARCHAR2(255)) AS fhstnm, ")
.append("fh.RSTCD AS rstcd, ")
.append("CAST(NULL AS VARCHAR2(255)) AS ennm, ")
.append("fh.BASE_ID AS baseId, ")
.append("hb.BASENAME AS baseName, ")
.append("fh.HBRVCD AS hbrvcd, ")
.append("fh.ATTM AS jcdt, ")
.append("CAST(NULL AS NUMBER(10)) AS mway, ")
.append("fh.DTIN AS dtin, ")
.append("CAST(NULL AS VARCHAR2(255)) AS dtinSrc, ")
.append("CAST(NULL AS NUMBER(10)) AS dtinType, ")
.append("fh.DTIN_TM AS dtinTm, ")
.append("CAST(NULL AS VARCHAR2(1000)) AS stindx, ")
.append("fh.BLPRD AS bldstt, ")
.append("fh.BHDX AS qxdbhdx, ")
.append("fh.BHFW AS qxdbhfw, ")
.append("fh.BHCD AS qxdbhcd, ")
.append("fh.BHMJ AS qxdbhmj, ")
.append("fh.BHHL AS bhhl, ")
.append("fh.BHHD AS bhhd, ")
.append("fh.BHCS AS bhcs, ")
.append("fh.BHFS AS qxdbhfs, ")
.append("fh.ATTM AS ststdt, ")
.append("fh.DTFRQCY AS dtfrqcy, ")
.append("fh.INV AS qxdinv, ")
.append("fh.USFL AS usfl, ")
.append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ")
.append("999999 AS rvcdStepSort, ")
.append("999999 AS rstcdStepSort, ")
.append("NVL(fh.ORDER_INDEX, 999999) AS siteStepSort ")
.append("FROM SD_FHBT_B_H fh ")
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = fh.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(fh.IS_DELETED, 0) = 0 ");
} else if (!onlyWtrv) {
sql.append("SELECT river.STCD AS stcd, ")
.append("river.STNM AS stnm, ")
.append("'ZQ' AS sttpCode, ")
@ -1042,6 +1080,18 @@ public class FhHabitatServiceImpl implements FhHabitatService {
.append("river.DTIN_TYPE AS dtinType, ")
.append("river.DTIN_TM AS dtinTm, ")
.append("river.STINDX AS stindx, ")
.append("fh.BLPRD AS bldstt, ")
.append("fh.BHDX AS qxdbhdx, ")
.append("fh.BHFW AS qxdbhfw, ")
.append("fh.BHCD AS qxdbhcd, ")
.append("fh.BHMJ AS qxdbhmj, ")
.append("fh.BHHL AS bhhl, ")
.append("fh.BHHD AS bhhd, ")
.append("fh.BHCS AS bhcs, ")
.append("fh.BHFS AS qxdbhfs, ")
.append("fh.ATTM AS ststdt, ")
.append("fh.DTFRQCY AS dtfrqcy, ")
.append("fh.INV AS qxdinv, ")
.append("river.USFL AS usfl, ")
.append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ")
.append("999999 AS rvcdStepSort, ")
@ -1055,10 +1105,10 @@ public class FhHabitatServiceImpl implements FhHabitatService {
.append("AND river.STTP = 'ZQ' ")
.append("AND river.FHSTCD IS NOT NULL ");
}
if (!onlyRiver && !onlyWtrv) {
if (!onlyFh && !onlyRiver && !onlyWtrv) {
sql.append(" UNION ALL ");
}
if (!onlyRiver) {
if (!onlyFh && !onlyRiver) {
sql.append("SELECT wt.STCD AS stcd, ")
.append("wt.STNM AS stnm, ")
.append("'WTRV' AS sttpCode, ")
@ -1076,6 +1126,18 @@ public class FhHabitatServiceImpl implements FhHabitatService {
.append("wt.DTIN_TYPE AS dtinType, ")
.append("wt.DTIN_TM AS dtinTm, ")
.append("wt.STINDX AS stindx, ")
.append("fh.BLPRD AS bldstt, ")
.append("fh.BHDX AS qxdbhdx, ")
.append("fh.BHFW AS qxdbhfw, ")
.append("fh.BHCD AS qxdbhcd, ")
.append("fh.BHMJ AS qxdbhmj, ")
.append("fh.BHHL AS bhhl, ")
.append("fh.BHHD AS bhhd, ")
.append("fh.BHCS AS bhcs, ")
.append("fh.BHFS AS qxdbhfs, ")
.append("fh.ATTM AS ststdt, ")
.append("fh.DTFRQCY AS dtfrqcy, ")
.append("fh.INV AS qxdinv, ")
.append("wt.USFL AS usfl, ")
.append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ")
.append("999999 AS rvcdStepSort, ")
@ -1203,6 +1265,18 @@ public class FhHabitatServiceImpl implements FhHabitatService {
case "dtinType" -> "t.dtinType";
case "dtinTm" -> "t.dtinTm";
case "stindx" -> "t.stindx";
case "bldstt" -> "t.bldstt";
case "dtfrqcy" -> "t.dtfrqcy";
case "qxdinv" -> "t.qxdinv";
case "qxdbhdx" -> "t.qxdbhdx";
case "qxdbhfw" -> "t.qxdbhfw";
case "qxdbhcd" -> "t.qxdbhcd";
case "qxdbhmj" -> "t.qxdbhmj";
case "bhhl" -> "t.bhhl";
case "bhhd" -> "t.bhhd";
case "bhcs" -> "t.bhcs";
case "qxdbhfs" -> "t.qxdbhfs";
case "ststdt" -> "t.ststdt";
case "usfl", "enable" -> "t.usfl";
case "baseStepSort" -> "t.baseStepSort";
case "rvcdStepSort" -> "t.rvcdStepSort";

View File

@ -41,6 +41,9 @@ public class SdWtBaseInfoVO implements Serializable {
@Schema(description = "开工日期")
private Date ststdt;
@Schema(description = "建设状态")
private String bldsttCcode;
@Schema(description = "建设状态")
private String bldsttCcodeName;

View File

@ -563,6 +563,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm");
String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState");
String dtin = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtin");
String bldsttCcode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "bldsttCcode");
StringBuilder sql = new StringBuilder();
boolean queryEngDirectly = "ENG".equalsIgnoreCase(sttpCode);
boolean queryDwDirectly = StrUtil.isNotBlank(sttpCode) && sttpCode.toUpperCase().startsWith("DW_");
@ -615,6 +616,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
.append("WHEN dw.BLDSTT_CODE IN ('1', '10', '11') THEN '已建' ")
.append("WHEN dw.BLDSTT_CODE IN ('2', '7', '8') THEN '在建' ")
.append("ELSE '未建/规划' END AS bldsttCcodeName, ")
.append("dw.BLDSTT_CODE AS bldsttCcode, ")
.append("eng.HBRVCD AS hbrvcd ")
.append("FROM SD_DFLTKW_B_H dw ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = dw.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
@ -666,10 +668,15 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
paramMap.put("sttpCode", sttpCode);
sql.append("AND wt.STTP = #{map.sttpCode} ");
}
if (queryDwDirectly && sttpCode != null && !sttpCode.isBlank()) {
if (queryDwDirectly && StrUtil.isNotBlank(sttpCode)) {
paramMap.put("sttpCode", sttpCode);
sql.append("AND dw.STTP = #{map.sttpCode} ");
}
if (queryDwDirectly && StrUtil.isNotBlank(bldsttCcode)) {
paramMap.put("bldsttCcode", bldsttCcode);
sql.append("AND dw.BLDSTT_CODE = #{map.bldsttCcode} ");
}
if (rstcd != null && !rstcd.isBlank()) {
paramMap.put("rstcd", rstcd);
if (queryEngDirectly) {