From 275cb5e4549bebdb3fe93792528f7c938f560bf4 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 6 Jul 2026 10:18:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=B5=E7=AB=99=E5=87=BA=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E6=B0=B4=E6=B8=A9=E6=8F=8F=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wt/controller/SdWTMonitorController.java | 6 + .../qgc_env/wt/entity/vo/WaterTempMapVO.java | 104 ++++++++++++++++ .../wt/service/SdWtMonitorService.java | 3 + .../service/impl/SdWtMonitorServiceImpl.java | 114 ++++++++++++++++++ 4 files changed, 227 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WaterTempMapVO.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java index 828e4caf..ca3533ee 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/controller/SdWTMonitorController.java @@ -327,4 +327,10 @@ public class SdWTMonitorController { public ResponseResult getFacilityPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(sdWtMonitorService.getFacilityPointKendoListCust(dataSourceRequest)); } + + @PostMapping("/getEngTempPointList/GetKendoListCust") + @Operation(summary = "电站出入库水温描点") + public ResponseResult getEngTempPointListKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(sdWtMonitorService.getEngTempPointListKendoListCust(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WaterTempMapVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WaterTempMapVO.java new file mode 100644 index 00000000..d5808d99 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/WaterTempMapVO.java @@ -0,0 +1,104 @@ +package com.yfd.platform.qgc_env.wt.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "水温监测点描点VO") +public class WaterTempMapVO { + + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "关联电站名称") + private String ennm; + + @Schema(description = "站点类型编码") + private String sttpCode; + + @Schema(description = "数据接入类型:0=自建,1=国家建,2=人工") + private String dtinType; + + @Schema(description = "站点类型") + private String sttp; + + @Schema(description = "锚点类型") + private String sttpMap; + + @Schema(description = "栖息地名称") + private String fhstnm; + + @Schema(description = "是否是垂向水温,0=否 1=是") + private Integer enfc; + + @Schema(description = "所在位置") + private String location; + + @Schema(description = "运行状态") + private String status = "1"; + + @Schema(description = "水温") + private BigDecimal temperature; + + @Schema(description = "日期") + private Date tm; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal dtmel; + + @Schema(description = "弹框站点名称") + private String titleName; + + @Schema(description = "监测方式") + private Integer mway; + + @Schema(description = "垂向水温类型:1=浮动式 2=固定式") + private Integer deviceType; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "行政编码") + private String addvcd; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "关联电站编码") + private String rstcds; + + @Schema(description = "描点状态") + private String anchoPointState; + + @Schema(description = "地图避让") + private Integer distance; + + @Schema(description = "垂向水温站点浮窗数据") + private Object wtvtInfo; + + @Schema(description = "水温值") + private BigDecimal value; + + @Schema(description = "排序") + private Integer orderIndex; + + @Schema(description = "出入库标识 (1 入库水温, 2 出库水温 ,3 非出入库水温)") + private Integer ioType; + + public void setTemperature(BigDecimal temperature) { + this.temperature = temperature; + this.value = temperature; + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java index ba092d0a..60398c1e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/SdWtMonitorService.java @@ -14,6 +14,7 @@ import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendSaveVo; import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo; import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendResultVo; import com.yfd.platform.qgc_env.wt.entity.vo.DwSlowFacilityMapVO; +import com.yfd.platform.qgc_env.wt.entity.vo.WaterTempMapVO; import java.util.List; @@ -54,4 +55,6 @@ public interface SdWtMonitorService { List getWtvtDefaultTreeStcd(DataSourceRequest dataSourceRequest); DataSourceResult getFacilityPointKendoListCust(DataSourceRequest dataSourceRequest); + + DataSourceResult getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index b6ce2afd..87a25b85 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -21,6 +21,7 @@ import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendResultVo; import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendSaveVo; import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo; import com.yfd.platform.qgc_env.wt.entity.vo.DwSlowFacilityMapVO; +import com.yfd.platform.qgc_env.wt.entity.vo.WaterTempMapVO; import com.yfd.platform.qgc_env.wt.mapper.SdWtMonitorMapper; import com.yfd.platform.qgc_env.wt.utils.SiteAvoidanceUtils; import com.yfd.platform.qgc_env.wt.service.SdWtMonitorService; @@ -2921,4 +2922,117 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { return dataSourceResult; } + @Override + public DataSourceResult getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceResult dataSourceResult = new DataSourceResult<>(); + dataSourceResult.setAggregates(new HashMap<>()); + + if (dataSourceRequest == null) { + dataSourceResult.setData(new ArrayList<>()); + dataSourceResult.setTotal(0L); + return dataSourceResult; + } + + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + String dtinType = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "flag"); + String sttpCode = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "sttpCode"); + String fhFlag = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "fhFlag"); + + StringBuilder sql = new StringBuilder("SELECT\n" + + " wt.STCD AS stcd,\n" + + " wt.STNM AS stnm,\n" + + " wt.STNM AS titleName,\n" + + " wt.RSTCD AS rstcds,\n" + + " CASE\n" + + " WHEN wt.STTP = 'WTVT' THEN 1\n" + + " ELSE 0\n" + + " END AS enfc,\n" + + " 'WT' AS sttp,\n" + + " wt.STTP AS sttpCode,\n" + + " 'WT' AS sttpMap,\n" + + " wt.LGTD AS lgtd,\n" + + " wt.LTTD AS lttd,\n" + + " wt.WT_DEVICE_TYPE AS deviceType,\n" + + " wt.ELEV AS dtmel,\n" + + " wt.FHSTNM AS fhstnm,\n" + + " wt.MWAY AS mway,\n" + + " eng.RVCD AS rvcd,\n" + + " eng.ADDVCD AS addvcd,\n" + + " eng.BASE_ID AS baseId,\n" + + " eng.ENNM AS ennm,\n" + + " wt.ORDER_INDEX AS orderIndex,\n" + + " wt.DTIN_TYPE AS dtinType,\n" + + " (CASE\n" + + " WHEN wt.STTP = 'WTRV' AND rel.ENG_IWT_CODE IS NOT NULL THEN 1\n" + + " WHEN wt.STTP = 'WTRV' AND rel.ENG_DWT_CODE IS NOT NULL THEN 2\n" + + " WHEN wt.STTP = 'WTRV' AND rel.ENG_IWT_CODE IS NULL AND rel.ENG_DWT_CODE IS NULL THEN 3\n" + + " END) AS ioType\n" + + "FROM SD_WT_B_H wt\n" + + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0\n" + + "LEFT JOIN SD_WTENGRLTN_B rel ON rel.STCD = wt.STCD AND NVL(rel.IS_DELETED, 0) = 0\n" + + "WHERE NVL(wt.IS_DELETED, 0) = 0 AND wt.STTP IN ('WTRV', 'WTVT') AND wt.LGTD IS NOT NULL AND wt.LTTD IS NOT NULL "); + + if (StrUtil.isNotBlank(sttpCode)) { + sql.append(" AND wt.STTP = #{map.sttpCode} "); + } + if (StrUtil.isNotBlank(dtinType)) { + sql.append(" AND wt.DTIN_TYPE = #{map.dtinType} "); + } + + Map paramMap = new HashMap<>(); + if (StrUtil.isNotBlank(sttpCode)) { + paramMap.put("sttpCode", sttpCode); + } + if (StrUtil.isNotBlank(dtinType)) { + paramMap.put("dtinType", dtinType); + } + + List sort = dataSourceRequest.getSort(); + if (sort != null && !sort.isEmpty()) { + sql.append(" ORDER BY "); + for (int i = 0; i < sort.size(); i++) { + String field = sort.get(i).getField(); + String dir = sort.get(i).getDir(); + sql.append(field).append(" ").append(dir); + if (i < sort.size() - 1) { + sql.append(","); + } + } + } else { + sql.append(" ORDER BY wt.ORDER_INDEX ASC "); + } + + Page page = QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List resultList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, WaterTempMapVO.class); + + for (WaterTempMapVO vo : resultList) { + if (StrUtil.isNotBlank(fhFlag)) { + vo.setAnchoPointState("fhwt_legend"); + } else if (StrUtil.isNotBlank(dtinType)) { + if ("0".equals(dtinType)) { + vo.setAnchoPointState("stinfo_wtzj_legend"); + } else if ("2".equals(dtinType)) { + vo.setAnchoPointState("stinfo_wtrg_legend"); + } + } else { + if (vo.getMway() != null && vo.getMway() == 1) { + vo.setAnchoPointState("WT_1"); + } else if (vo.getMway() != null && vo.getMway() == 2) { + vo.setAnchoPointState("WT_2"); + } + } + } + + SiteAvoidanceUtils.calcSiteMapLev(resultList, + WaterTempMapVO::getStcd, + WaterTempMapVO::getLgtd, + WaterTempMapVO::getLttd, + WaterTempMapVO::getAnchoPointState, + WaterTempMapVO::setDistance); + + dataSourceResult.setData(resultList); + dataSourceResult.setTotal(page == null ? resultList.size() : page.getTotal()); + return dataSourceResult; + } + }