From 601bf62b7f0d64e1bca58658e5fac54de693b8bb Mon Sep 17 00:00:00 2001 From: tangwei Date: Sat, 25 Apr 2026 21:56:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FishImportServiceImpl.java | 12 +-- .../controller/TreeStructureController.java | 9 +++ .../env/service/ITreeStructureService.java | 7 ++ .../impl/TreeStructureServiceImpl.java | 77 +++++++++++++++++++ .../mapper/env/SdEngInfoBHMapper.xml | 2 +- 5 files changed, 100 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java index 9608d02..fb6b136 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java @@ -183,12 +183,12 @@ public class FishImportServiceImpl implements IFishImportService { switch (fieldName) { case "stationName": if (!StringUtils.hasText(cellValue)) { - importRow.getWarnings().add(fieldName); + importRow.getWarnings().add("engName"); data.setEngName(cellValue.trim()); } else { String stcd = resolveStationCode(cellValue.trim()); if (stcd == null) { - importRow.getWarnings().add(fieldName); + importRow.getWarnings().add("engName"); data.setEngName(cellValue.trim()); } else { data.setEngName(cellValue.trim()); @@ -197,13 +197,13 @@ public class FishImportServiceImpl implements IFishImportService { break; case "baseName": if (!StringUtils.hasText(cellValue)) { - importRow.getWarnings().add(fieldName); + importRow.getWarnings().add("baseId"); data.setBaseId(cellValue.trim()); data.setBaseName(cellValue.trim()); } else { String baseId = resolveBaseCode(cellValue.trim()); if (baseId == null) { - importRow.getWarnings().add(fieldName); + importRow.getWarnings().add("baseId"); data.setBaseId(cellValue.trim()); data.setBaseName(cellValue.trim()); } else { @@ -316,11 +316,11 @@ public class FishImportServiceImpl implements IFishImportService { break; case "stnm": if (!StringUtils.hasText(cellValue)) { - missingRequiredFields.add("过鱼设施名称"); + missingRequiredFields.add("stcd"); } else { String stcd = resolveFpssCode(cellValue.trim()); if (stcd == null) { - importRow.getWarnings().add(fieldName); + importRow.getWarnings().add("stcd"); data.setStcd(cellValue.trim()); data.setStnm(cellValue.trim()); } else { diff --git a/backend/src/main/java/com/yfd/platform/env/controller/TreeStructureController.java b/backend/src/main/java/com/yfd/platform/env/controller/TreeStructureController.java index f1c4b4b..6c64cbe 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/TreeStructureController.java +++ b/backend/src/main/java/com/yfd/platform/env/controller/TreeStructureController.java @@ -37,6 +37,15 @@ public class TreeStructureController { return ResponseResult.successData(result); } + @GetMapping("/baseEng") + @Operation(summary = "获取基地-电站树形结构") + public ResponseResult getBaseEngTree( + @RequestParam(required = false) String baseId, + @RequestParam(required = false) String engName) { + List> result = treeStructureService.getBaseEngTree(baseId, engName); + return ResponseResult.successData(result); + } + @GetMapping("/rvcdBaseEng") @Operation(summary = "获取流域-基地-电站树形结构") diff --git a/backend/src/main/java/com/yfd/platform/env/service/ITreeStructureService.java b/backend/src/main/java/com/yfd/platform/env/service/ITreeStructureService.java index 360f88d..d6ca549 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ITreeStructureService.java +++ b/backend/src/main/java/com/yfd/platform/env/service/ITreeStructureService.java @@ -45,4 +45,11 @@ public interface ITreeStructureService { * @param engName 电站名称(可选,用于模糊筛选电站) */ List> getRvcdEngTree(String rvcd, String engName); + + /** + * 获取基地-电站树形结构(二级树) + * @param baseId 基地编码(可选,为空则返回全部) + * @param engName 电站名称(可选,用于模糊筛选电站) + */ + List> getBaseEngTree(String baseId, String engName); } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java index 440687a..3cfe57d 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java @@ -426,5 +426,82 @@ public class TreeStructureServiceImpl implements ITreeStructureService { return result; } + @Override + public List> getBaseEngTree(String baseId, String engName) { + List> result = new ArrayList<>(); + + // 1. 查询基地列表 + List baseList; + if (StringUtils.hasText(baseId)) { + baseList = hydrobaseMapper.selectByPbaseid(baseId); + SdHydrobase singleBase = hydrobaseMapper.selectById(baseId); + if (singleBase != null && !baseList.contains(singleBase)) { + baseList = new ArrayList<>(); + baseList.add(singleBase); + } + } else { + baseList = hydrobaseMapper.selectRootList(); + } + + // 2. 预加载所有基地下的电站(按基地分组) + Map> baseEngMap = new HashMap<>(); + for (SdHydrobase hydrobase : baseList) { + List engList = engInfoBHMapper.selectByBaseId(hydrobase.getBaseid()); + + if (StringUtils.hasText(engName) && engList != null) { + engList = engList.stream() + .filter(eng -> eng.getEnnm() != null && eng.getEnnm().contains(engName)) + .collect(Collectors.toList()); + } + + if (engList != null && !engList.isEmpty()) { + baseEngMap.put(hydrobase.getBaseid(), engList); + } + } + + // 3. 构建二级树形结构(基地 -> 电站) + for (SdHydrobase hydrobase : baseList) { + Map baseNode = new LinkedHashMap<>(); + baseNode.put("type", "BASE"); + baseNode.put("code", hydrobase.getBaseid()); + baseNode.put("name", hydrobase.getBasename()); + baseNode.put("shortname", hydrobase.getShortname()); + baseNode.put("grd", hydrobase.getGrd()); + baseNode.put("path", hydrobase.getPath()); + baseNode.put("orgLevel", 0); + baseNode.put("parentId", "0"); + + // 获取该基地下的所有电站 + List engList = baseEngMap.get(hydrobase.getBaseid()); + List> engChildren = new ArrayList<>(); + + if (engList != null && !engList.isEmpty()) { + for (SdEngInfoBH eng : engList) { + Map engNode = new LinkedHashMap<>(); + engNode.put("type", "STATION"); + engNode.put("code", eng.getStcd()); + engNode.put("name", eng.getEnnm()); + engNode.put("lgtd", eng.getLgtd()); + engNode.put("lttd", eng.getLttd()); + engNode.put("elev", eng.getElev()); + engNode.put("usfl", eng.getUsfl()); + engNode.put("bldstt", eng.getBldstt()); + engNode.put("engtp", eng.getEngtp()); + engNode.put("parentId", hydrobase.getBaseid()); + engNode.put("orgLevel", 1); + engChildren.add(engNode); + } + } + + // 只有当该基地下有电站时才添加该基地节点 + if (!engChildren.isEmpty()) { + baseNode.put("children", engChildren); + result.add(baseNode); + } + } + + return result; + } + } diff --git a/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml b/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml index 05bc17a..06101d4 100644 --- a/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml +++ b/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml @@ -233,7 +233,7 @@