From ce2b43d83c191a2932f5dc90cb2ac2a83fd34901 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 22 May 2026 10:07:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=B0=B4=E8=B4=A8=E5=9F=BA=E7=A1=80=E7=AB=99?= =?UTF-8?q?=E7=82=B9=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wq/controller/EnvWqDataController.java | 6 + .../env/wq/entity/vo/WqVmsstbprptVo.java | 62 ++++++++++ .../env/wq/service/EnvWqDataService.java | 2 + .../wq/service/impl/EnvWqDataServiceImpl.java | 113 ++++++++++++++++++ 4 files changed, 183 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java diff --git a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java b/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java index aa8428b..12e25f7 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/controller/EnvWqDataController.java @@ -47,6 +47,12 @@ public class EnvWqDataController { return ResponseResult.successData(envWqDataService.getMsstbprptList(dataSourceRequest)); } + @PostMapping("/vmsstbprpt/GetKendoList") + @Operation(summary = "根据条件查询水质基础站点数据") + public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(envWqDataService.getVmsstbprptList(dataSourceRequest)); + } + @GetMapping("/msstbprpt/getStcdInfo") @Operation(summary = "根据站码查询单条水质基础数据") public ResponseResult getStcdInfo(@RequestParam String stcd) { diff --git a/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java new file mode 100644 index 0000000..ef6d4d1 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/wq/entity/vo/WqVmsstbprptVo.java @@ -0,0 +1,62 @@ +package com.yfd.platform.env.wq.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +@Schema(description = "水质基础站点列表") +public class WqVmsstbprptVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "电站名称") + private String ennm; + + @Schema(description = "建成日期") + private Date jcdt; + + @Schema(description = "监测指标") + private String stindx; + + @Schema(description = "开展环保自动监测工作状态:1=正常 0=暂无数据") + private Integer coenvwState; + + @Schema(description = "站类") + private String sttpCode; + + @Schema(description = "站码") + private String stcd; + + @Schema(description = "所属电站编码") + private String rstcd; + + @Schema(description = "所属测站编码") + private String stCode; + + @Schema(description = "所属测站名称") + private String stName; + + @Schema(description = "开发方式") + private String dvtp; + + @Schema(description = "基地排序") + private Integer baseStepSort; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "电站排序") + private Integer rstcdStepSort; + + @Schema(description = "站点排序") + private Integer siteStepSort; +} diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java b/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java index 255fa4f..8fd2445 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/EnvWqDataService.java @@ -12,5 +12,7 @@ public interface EnvWqDataService { DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); + DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); + WqBaseInfoVo getStcdInfo(String stcd); } diff --git a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java index 92e9401..51dbdd9 100644 --- a/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/wq/service/impl/EnvWqDataServiceImpl.java @@ -1,12 +1,17 @@ package com.yfd.platform.env.wq.service.impl; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.common.PageInfo; import com.yfd.platform.common.exception.BizException; import com.yfd.platform.env.wq.entity.vo.WqBaseInfoVo; +import com.yfd.platform.env.wq.entity.vo.WqVmsstbprptVo; import com.yfd.platform.env.wq.service.EnvWqDataService; +import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -36,6 +41,78 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { return emptyResult(); } + @Override + public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + String mway = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "mway"); + String sttpCode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode"); + String dtinType = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "dtinType"); + String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd"); + String stnm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm"); + String coenvwState = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "coenvwState"); + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("hb.BASENAME AS baseName, ") + .append("wq.STNM AS stnm, ") + .append("eng.ENNM AS ennm, ") + .append("wq.JCDT AS jcdt, ") + .append("wq.STINDX AS stindx, ") + .append("CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END AS coenvwState, ") + .append("wq.STTP AS sttpCode, ") + .append("wq.STCD AS stcd, ") + .append("wq.RSTCD AS rstcd, ") + .append("NULL AS stCode, ") + .append("NULL AS stName, ") + .append("eng.DVTP AS dvtp, ") + .append("hb.ORDER_INDEX AS baseStepSort, ") + .append("eng.HBRVCD AS hbrvcd, ") + .append("eng.ORDER_INDEX AS rstcdStepSort, ") + .append("wq.ORDER_INDEX AS siteStepSort ") + .append("FROM SD_WQ_B_H wq ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN (SELECT DISTINCT STCD FROM SD_WQ_R WHERE NVL(IS_DELETED, 0) = 0 AND TM >= SYSDATE - 1) recent ON recent.STCD = wq.STCD ") + .append("WHERE NVL(wq.IS_DELETED, 0) = 0 "); + + Map paramMap = new HashMap<>(); + if (StrUtil.isNotBlank(mway)) { + paramMap.put("mway", mway); + sql.append("AND wq.MWAY = #{map.mway} "); + } + if (StrUtil.isNotBlank(sttpCode)) { + paramMap.put("sttpCode", sttpCode); + sql.append("AND wq.STTP = #{map.sttpCode} "); + } + if (StrUtil.isNotBlank(dtinType)) { + paramMap.put("dtinType", dtinType); + sql.append("AND wq.DTIN_TYPE = #{map.dtinType} "); + } + if (StrUtil.isNotBlank(rstcd)) { + paramMap.put("rstcd", rstcd); + sql.append("AND wq.RSTCD = #{map.rstcd} "); + } + if (StrUtil.isNotBlank(stnm)) { + paramMap.put("stnm", "%" + stnm + "%"); + sql.append("AND wq.STNM LIKE #{map.stnm} "); + } + if (StrUtil.isNotBlank(coenvwState)) { + paramMap.put("coenvwState", coenvwState); + sql.append("AND CASE WHEN recent.STCD IS NOT NULL THEN 1 ELSE 0 END = #{map.coenvwState} "); + } + + sql.append(buildVmsstbprptOrderBySql(dataSourceRequest.getSort())); + PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions); + Page page = pageInfo.getHasPageInfo() ? pageInfo.getPage() : null; + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WqVmsstbprptVo.class); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page != null ? page.getTotal() : list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public WqBaseInfoVo getStcdInfo(String stcd) { if (StrUtil.isBlank(stcd)) { @@ -117,4 +194,40 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { result.setAggregates(new HashMap<>()); return result; } + + private String buildVmsstbprptOrderBySql(List sortList) { + if (sortList == null || sortList.isEmpty()) { + return " ORDER BY hb.ORDER_INDEX ASC, eng.HBRVCD ASC, eng.ORDER_INDEX ASC, wq.ORDER_INDEX ASC"; + } + StringBuilder sql = new StringBuilder(" ORDER BY "); + boolean appended = false; + for (DataSourceRequest.SortDescriptor sortDescriptor : sortList) { + if (sortDescriptor == null || StrUtil.isBlank(sortDescriptor.getField())) { + continue; + } + String column = switch (sortDescriptor.getField()) { + case "baseStepSort" -> "hb.ORDER_INDEX"; + case "hbrvcd" -> "eng.HBRVCD"; + case "rstcdStepSort" -> "eng.ORDER_INDEX"; + case "siteStepSort" -> "wq.ORDER_INDEX"; + case "stnm" -> "wq.STNM"; + case "ennm" -> "eng.ENNM"; + case "stcd" -> "wq.STCD"; + default -> null; + }; + if (column == null) { + continue; + } + if (appended) { + sql.append(", "); + } + sql.append(column).append(" ") + .append("desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC"); + appended = true; + } + if (!appended) { + return " ORDER BY hb.ORDER_INDEX ASC, eng.HBRVCD ASC, eng.ORDER_INDEX ASC, wq.ORDER_INDEX ASC"; + } + return sql.toString(); + } }