From d04eed8188f8d982a466597834bc1704866eb950 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 2 Sep 2026 17:03:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=8A=A8=E7=89=A9?= =?UTF-8?q?=E9=94=9A=E7=82=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wte/controller/WeFishController.java | 6 ++ .../wte/entity/vo/WeAnimalPointQgcVo.java | 71 +++++++++++++++ .../qgc_env/wte/service/WeFishService.java | 2 + .../wte/service/impl/WeFishServiceImpl.java | 91 +++++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeAnimalPointQgcVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java index fd5847af..558ad5aa 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/controller/WeFishController.java @@ -150,6 +150,12 @@ public class WeFishController { return ResponseResult.successData(weFishService.getQgcWeFishPoint(dataSourceRequest)); } + @PostMapping("/we/animalPoint/qgc/GetKendoListCust") + @Operation(summary = "野生动物分布锚点") + public ResponseResult getQgcWeAnimalPoint(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(weFishService.getQgcWeAnimalPoint(dataSourceRequest)); + } + @PostMapping("/we/point/qgc/GetKendoListCust") @Operation(summary = "环保部-水生生态调查-地图锚点") public ResponseResult getQgcWePoint(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeAnimalPointQgcVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeAnimalPointQgcVo.java new file mode 100644 index 00000000..b693135f --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeAnimalPointQgcVo.java @@ -0,0 +1,71 @@ +package com.yfd.platform.qgc_env.wte.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 野生动物监测-动物分布锚点 + */ +@Data +@Schema(description = "动物分布锚点") +public class WeAnimalPointQgcVo { + + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "站点名称") + private String stnm; + + @Schema(description = "弹框站点名称") + private String titleName; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程(单位:m)") + private BigDecimal dtmel; + + @Schema(description = "关联电站编码") + private String rstcd; + + @Schema(description = "电站名称") + private String ennm; + + @Schema(description = "站点类型") + private String sttp; + + @Schema(description = "锚点类型") + private String sttpMap; + + @Schema(description = "设施类型") + private String sttpCode; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "行政编码") + private String addvcd; + + @Schema(description = "基地流域编码") + private String hbrvcd; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "描点状态") + private String anchoPointState; + + @Schema(description = "检测动物名称列表(按逗号分隔)") + private String animals; + + @Schema(description = "最新监测时间") + private String tm; + + @Schema(description = "地图避让") + private Integer distance; +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java index eccab325..87ef8c9f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/WeFishService.java @@ -55,6 +55,8 @@ public interface WeFishService { DataSourceResult getQgcWePoint(DataSourceRequest dataSourceRequest); + DataSourceResult getQgcWeAnimalPoint(DataSourceRequest dataSourceRequest); + DataSourceResult getTeSpecialAnimalList(DataSourceRequest dataSourceRequest); List getWeDefaultData(String stcd); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java index 78834cd4..d9852375 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java @@ -1175,6 +1175,97 @@ public class WeFishServiceImpl implements WeFishService { return result; } + @Override + public DataSourceResult getQgcWeAnimalPoint(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + String baseId = resolveWeFishStringFilterValue(dataSourceRequest, loadOptions, "baseId"); + String stcd = resolveWeFishStringFilterValue(dataSourceRequest, loadOptions, "stcd"); + String startTime = resolveWeFishStringFilterValue(dataSourceRequest, loadOptions, "startTime"); + String endTime = resolveWeFishStringFilterValue(dataSourceRequest, loadOptions, "endTime"); + + Date start = null; + Date end = null; + if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) { + start = parseDateTimeSafely(startTime); + end = parseDateTimeSafely(endTime); + } + boolean hasTime = start != null && end != null; + + Map paramMap = new HashMap<>(); + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("ai.STCD AS stcd, ") + .append("ai.STNM AS stnm, ") + .append("ai.STNM AS titleName, ") + .append("ai.LGTD AS lgtd, ") + .append("ai.LTTD AS lttd, ") + .append("ai.ELEV AS dtmel, ") + .append("ai.RSTCD AS rstcd, ") + .append("eng.ENNM AS ennm, ") + .append("'wva' AS sttp, ") + .append("'WVA' AS sttpMap, ") + .append("'WVA' AS sttpCode, ") + .append("ai.RVCD AS rvcd, ") + .append("ai.ADDVCD AS addvcd, ") + .append("ai.HBRVCD AS hbrvcd, ") + .append("ai.BASE_ID AS baseId, ") + .append("'wva' AS anchoPointState, ") + .append("agg.animals AS animals, ") + .append("TO_CHAR(agg.latestTm, 'yyyy-mm-dd hh24:mi:ss') AS tm ") + .append("FROM SD_AIMONITOR_B_H ai ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = ai.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN ( ") + .append(" SELECT t.stcd, ") + .append(" LISTAGG(t.anm, ',') WITHIN GROUP (ORDER BY t.anm) AS animals, ") + .append(" MAX(t.tm) AS latestTm ") + .append(" FROM ( ") + .append(" SELECT w.STCD AS stcd, a.NAME AS anm, MAX(w.TM) AS tm ") + .append(" FROM SD_WVA_R w ") + .append(" INNER JOIN SD_ANIMALDICTORY_B a ON a.ID = w.ANIMAL_ID ") + .append(" WHERE NVL(w.IS_DELETED, 0) = 0 ") + .append(" AND NVL(a.IS_DELETED, 0) = 0 ") + .append(" AND NVL(a.ENABLE, 1) = 1 "); + if (hasTime) { + paramMap.put("weAnimalPointStartTime", start); + paramMap.put("weAnimalPointEndTime", end); + sql.append(" AND w.TM BETWEEN #{map.weAnimalPointStartTime} AND #{map.weAnimalPointEndTime} "); + } + sql.append(" GROUP BY w.STCD, a.NAME ") + .append(" ) t ") + .append(" GROUP BY t.stcd ") + .append(") agg ON agg.stcd = ai.STCD ") + .append("WHERE NVL(ai.IS_DELETED, 0) = 0 ") + .append(" AND ai.STTP = 'WVA' ") + .append(" AND ai.LGTD IS NOT NULL "); + if (StrUtil.isNotBlank(baseId)) { + paramMap.put("weAnimalPointBaseId", baseId); + sql.append("AND ai.BASE_ID = #{map.weAnimalPointBaseId} "); + } + if (StrUtil.isNotBlank(stcd)) { + paramMap.put("weAnimalPointStcd", stcd); + sql.append("AND ai.STCD = #{map.weAnimalPointStcd} "); + } + + List list = microservicDynamicSQLMapper.getAllListWithResultType( + sql.toString(), + paramMap, + WeAnimalPointQgcVo.class + ); + + SiteAvoidanceUtils.calcSiteMapLev(list, + WeAnimalPointQgcVo::getStcd, + vo -> vo.getLgtd() != null ? vo.getLgtd() : null, + vo -> vo.getLttd() != null ? vo.getLttd() : null, + WeAnimalPointQgcVo::getAnchoPointState, + WeAnimalPointQgcVo::setDistance); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal((long) list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + private Map> queryWePointFishMap(List stcdList, String stcd, String startTime,