From 5824c2c106f1d724a53eed18a3076b66e90bd2f5 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 21 May 2026 12:34:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=B1=BC=E7=B1=BB=E4=BA=A7=E5=8D=B5?= =?UTF-8?q?=E6=9C=88=E4=BB=BD=E5=92=8C=E9=80=82=E5=AE=9C=E6=B0=B4=E6=B8=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../env/controller/SdWTMonitorController.java | 6 ++ .../env/service/SdWtMonitorService.java | 3 + .../service/impl/SdWtMonitorServiceImpl.java | 72 +++++++++++++++++++ 3 files changed, 81 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java b/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java index c503cc2..76bd7f0 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java +++ b/backend/src/main/java/com/yfd/platform/env/controller/SdWTMonitorController.java @@ -187,6 +187,12 @@ public class SdWTMonitorController { return ResponseResult.successData(sdWtMonitorService.getWtFishAnalysis(dataSourceRequest)); } + @PostMapping("/wtrv/fish/info/GetKendoListCust") + @Operation(summary = "鱼类产卵月份和适宜水温") + public ResponseResult getWtFishInfo(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(sdWtMonitorService.getWtFishInfo(dataSourceRequest)); + } + @GetMapping("/wtrv/getIoWtrvFlag") @Operation(summary = "根据站点编码判断是否出入水温站且关联的电站是否有垂向水温站") public ResponseResult getFlagByStcd(@RequestParam String stcd) { diff --git a/backend/src/main/java/com/yfd/platform/env/service/SdWtMonitorService.java b/backend/src/main/java/com/yfd/platform/env/service/SdWtMonitorService.java index 1f4001a..0b25e78 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/SdWtMonitorService.java +++ b/backend/src/main/java/com/yfd/platform/env/service/SdWtMonitorService.java @@ -2,6 +2,7 @@ package com.yfd.platform.env.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.env.entity.vo.FishSpawnVo; import com.yfd.platform.env.entity.vo.WtrvVo; public interface SdWtMonitorService { @@ -14,5 +15,7 @@ public interface SdWtMonitorService { DataSourceResult getWtFishAnalysis(DataSourceRequest dataSourceRequest); + DataSourceResult getWtFishInfo(DataSourceRequest dataSourceRequest); + WtrvVo getFlagByStcd(String stcd); } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdWtMonitorServiceImpl.java index 5313d49..0cba35b 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdWtMonitorServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; @@ -147,6 +148,47 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { return result; } + @Override + public DataSourceResult getWtFishInfo(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); + + DataSourceResult result = new DataSourceResult<>(); + if (StrUtil.isBlank(stcd)) { + result.setData(new ArrayList<>()); + result.setTotal(0L); + result.setAggregates(new HashMap<>()); + return result; + } + + String sql = "SELECT DISTINCT " + + "t2.ID AS id, " + + "t2.NAME AS name, " + + "t2.PRETEMP AS pretempStr, " + + "t2.SPAWN_MONTH AS spawnMonthStr " + + "FROM SD_WT_B_H t1 " + + "INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = t1.RSTCD " + + "INNER JOIN SD_FISHDICTORY_RLTN_B t3 ON eng.HBRVCD = t3.RVCD " + + "INNER JOIN SD_FISHDICTORY_B t2 ON t2.ID = t3.ZY_FISH_ID " + + "WHERE t1.STCD = #{map.stcd} " + + " AND t1.IS_DELETED = 0 " + + " AND t1.STTP = 'WTRV' " + + " AND t2.IS_DELETED = 0 " + + " AND t3.IS_DELETED = 0 " + + " AND t2.PRETEMP IS NOT NULL " + + " AND t2.SPAWN_MONTH IS NOT NULL"; + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List list = microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, FishSpawnVo.class); + for (FishSpawnVo fishSpawnVo : list) { + fillFishSpawnMeta(fishSpawnVo); + } + result.setData(list); + result.setTotal((long) list.size()); + result.setAggregates(new HashMap<>()); + return result; + } + @Override public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); @@ -694,6 +736,36 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } } + private void fillFishSpawnMeta(FishSpawnVo fishSpawnVo) { + if (fishSpawnVo == null) { + return; + } + BigDecimal[] range = parsePretempRange(fishSpawnVo.getPretempStr()); + if (range != null) { + List preTempList = new ArrayList<>(2); + preTempList.add(range[0].stripTrailingZeros().toPlainString()); + preTempList.add(range[1].stripTrailingZeros().toPlainString()); + fishSpawnVo.setPretemp(preTempList); + } + if (StrUtil.isNotBlank(fishSpawnVo.getSpawnMonthStr())) { + List spawnList = new ArrayList<>(); + for (String str : Arrays.asList(fishSpawnVo.getSpawnMonthStr().split(","))) { + if (StrUtil.isBlank(str)) { + continue; + } + String month = str.trim(); + try { + if (Integer.parseInt(month) < 10 && month.length() == 1) { + month = "0" + month; + } + } catch (NumberFormatException ignored) { + } + spawnList.add(month); + } + fishSpawnVo.setSpawnMonth(spawnList); + } + } + private WtrvVo buildDefaultWtrvVo(String stcd) { WtrvVo vo = new WtrvVo(); vo.setStcd(stcd);