From 78395086301310e435e6d262cf45ae54b634b4f0 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 27 Apr 2026 16:22:18 +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 --- .../controller/FishDraftDataController.java | 1 + .../data/domain/FishImportResult.java | 1 + .../data/domain/SysUserDataScope.java | 4 +- .../data/domain/vo/SysUserDataScopeVO.java | 4 +- .../impl/SysUserDataScopeServiceImpl.java | 4 +- .../controller/TreeStructureController.java | 9 ++ .../env/mapper/SdEngInfoBHMapper.java | 10 ++ .../env/service/ITreeStructureService.java | 7 ++ .../service/impl/SdEngInfoBHServiceImpl.java | 2 +- .../env/service/impl/SdFpssBHServiceImpl.java | 2 +- .../service/impl/SdHydrobaseServiceImpl.java | 2 +- .../impl/TreeStructureServiceImpl.java | 91 ++++++++++++++++++- .../mapper/env/SdEngInfoBHMapper.xml | 15 +++ 13 files changed, 140 insertions(+), 12 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java b/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java index a2be0ee..85a449d 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java +++ b/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java @@ -240,6 +240,7 @@ public class FishDraftDataController { request.setBizType("FISH"); FishImportResult result = fishImportService.parseAndMapZip(file, uploadUserId); + result.setTaskId(taskId); String status = "VALIDATED"; if ("1".equals(result.getCode())) { status="FAILED"; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java b/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java index ce589a5..070913f 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/FishImportResult.java @@ -26,6 +26,7 @@ public class FishImportResult { private String summary; private String code; private String message; + private String taskId; public FishImportResult() { this.successRows = new ArrayList<>(); diff --git a/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java b/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java index 50fadcc..b3513dd 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/SysUserDataScope.java @@ -40,12 +40,12 @@ public class SysUserDataScope implements Serializable { /** - * 资源类型(BASIN / BASE /COMPANY / STATION) + * 资源类型(RVCD/HBRVCD/ BASE / STATION/COMPANY) */ private String orgType; /** - * 资源编码(流域编码/基地编码/公司编码/电站编码) + * 资源编码(流域编码/基地流域编码/基地编码/电站编码/公司编码) */ private String orgId; diff --git a/backend/src/main/java/com/yfd/platform/data/domain/vo/SysUserDataScopeVO.java b/backend/src/main/java/com/yfd/platform/data/domain/vo/SysUserDataScopeVO.java index b630477..7d792e8 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/vo/SysUserDataScopeVO.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/vo/SysUserDataScopeVO.java @@ -24,13 +24,13 @@ public class SysUserDataScopeVO implements Serializable { @Schema(description = "用户ID") private String userId; - @Schema(description = "资源类型(BASIN/BASE/COMPANY/STATION)") + @Schema(description = "资源类型(RVCD/HBRVCD/ BASE / STATION/COMPANY)") private String orgType; @Schema(description = "资源编码") private String orgId; - @Schema(description = "资源名称(流域名称/基地名称/公司名称/电站名称)") + @Schema(description = "资源编码(流域编码/基地流域编码/基地编码/电站编码/公司编码)") private String orgName; @Schema(description = "上级资源编码") diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java index 006cd04..5721add 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java @@ -169,8 +169,8 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl orgNameMap = new HashMap<>(); // 3.1 查询流域名称 (BASIN) - if (groupedByType.containsKey("BASIN")) { - Set rvcds = groupedByType.get("BASIN").stream() + if (groupedByType.containsKey("RVCD")) { + Set rvcds = groupedByType.get("RVCD").stream() .map(SysUserDataScope::getOrgId) .filter(StrUtil::isNotBlank) .collect(Collectors.toSet()); 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 6c64cbe..1b39ca2 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 @@ -46,6 +46,15 @@ public class TreeStructureController { return ResponseResult.successData(result); } + @GetMapping("/hbrvEng") + @Operation(summary = "获取基地流域-电站树形结构") + public ResponseResult getHbrvEngTree( + @RequestParam(required = false) String hbrvcd, + @RequestParam(required = false) String engName) { + List> result = treeStructureService.getHbrvEngTree(hbrvcd, engName); + return ResponseResult.successData(result); + } + @GetMapping("/rvcdBaseEng") @Operation(summary = "获取流域-基地-电站树形结构") diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdEngInfoBHMapper.java b/backend/src/main/java/com/yfd/platform/env/mapper/SdEngInfoBHMapper.java index 31667a7..0c6b51c 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdEngInfoBHMapper.java +++ b/backend/src/main/java/com/yfd/platform/env/mapper/SdEngInfoBHMapper.java @@ -27,4 +27,14 @@ public interface SdEngInfoBHMapper extends BaseMapper { * 根据流域编码查询电站列表(通过关联关系) */ List selectByRvcd(@Param("rvcd") String rvcd); + + /** + * 根据基地流域编码查询电站列表 + */ + List selectByHbrvcd(@Param("hbrvcd") String hbrvcd); + + /** + * 根据基地流域编码列表批量查询电站 + */ + List selectByHbrvcdList(@Param("hbrvcdList") List hbrvcdList); } 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 d6ca549..03342c9 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 @@ -52,4 +52,11 @@ public interface ITreeStructureService { * @param engName 电站名称(可选,用于模糊筛选电站) */ List> getBaseEngTree(String baseId, String engName); + + /** + * 获取基地流域-电站树形结构(二级树) + * @param hbrvcd 基地流域编码(可选,为空则返回全部) + * @param engName 电站名称(可选,用于模糊筛选电站) + */ + List> getHbrvEngTree(String hbrvcd, String engName); } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java index 713b625..dbc6bff 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java @@ -104,7 +104,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl i if ("STATION".equals(orgType)) { stationCodes.add(orgId); - } else if ("BASIN".equals(orgType)) { + } else if ("RVCD".equals(orgType)) { basinCodes.add(orgId); } } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java index febc709..22f8d85 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java @@ -116,7 +116,7 @@ public class SdHydrobaseServiceImpl extends ServiceImpl> getRvcdBaseEngTree(String rvcd, String engName) { List> result = new ArrayList<>(); @@ -75,7 +79,7 @@ public class TreeStructureServiceImpl implements ITreeStructureService { for (SdRvcdDic rvcdDic : rvcdList) { Map rvcdNode = new LinkedHashMap<>(); - rvcdNode.put("type", "BASIN"); + rvcdNode.put("type", "RVCD"); rvcdNode.put("code", rvcdDic.getRvcd()); rvcdNode.put("name", rvcdDic.getRvnm()); rvcdNode.put("path", rvcdDic.getPath()); @@ -187,7 +191,7 @@ public class TreeStructureServiceImpl implements ITreeStructureService { // 3. 构建树形结构 for (SdRvcdDic rvcdDic : rvcdList) { Map rvcdNode = new LinkedHashMap<>(); - rvcdNode.put("type", "BASIN"); + rvcdNode.put("type", "RVCD"); rvcdNode.put("code", rvcdDic.getRvcd()); rvcdNode.put("name", rvcdDic.getRvnm()); rvcdNode.put("path", rvcdDic.getPath()); @@ -384,7 +388,7 @@ public class TreeStructureServiceImpl implements ITreeStructureService { // 3. 构建二级树形结构(流域 -> 电站) for (SdRvcdDic rvcdDic : rvcdList) { Map rvcdNode = new LinkedHashMap<>(); - rvcdNode.put("type", "BASIN"); + rvcdNode.put("type", "RVCD"); rvcdNode.put("code", rvcdDic.getRvcd()); rvcdNode.put("name", rvcdDic.getRvnm()); rvcdNode.put("path", rvcdDic.getPath()); @@ -503,5 +507,86 @@ public class TreeStructureServiceImpl implements ITreeStructureService { return result; } + @Override + public List> getHbrvEngTree(String hbrvcd, String engName) { + List> result = new ArrayList<>(); + + List hbrvList; + if (StringUtils.hasText(hbrvcd)) { + hbrvList = hbrvDicMapper.selectByPhycd(hbrvcd, null); + SdHbrvDic singleHbrv = hbrvDicMapper.selectById(hbrvcd); + if (singleHbrv != null && !hbrvList.contains(singleHbrv)) { + hbrvList = new ArrayList<>(); + hbrvList.add(singleHbrv); + } + } else { + hbrvList = hbrvDicMapper.selectEnabledList(); + } + + if (hbrvList == null || hbrvList.isEmpty()) { + return result; + } + + List hbrvcdList = hbrvList.stream() + .map(SdHbrvDic::getHbrvcd) + .collect(Collectors.toList()); + + List allEngList = engInfoBHMapper.selectByHbrvcdList(hbrvcdList); + + if (StringUtils.hasText(engName) && allEngList != null) { + allEngList = allEngList.stream() + .filter(eng -> eng.getEnnm() != null && eng.getEnnm().contains(engName)) + .collect(Collectors.toList()); + } + + Map> hbrvEngMap = new HashMap<>(); + if (allEngList != null && !allEngList.isEmpty()) { + for (SdEngInfoBH eng : allEngList) { + String engHbrvcd = eng.getHbrvcd(); + hbrvEngMap.computeIfAbsent(engHbrvcd, k -> new ArrayList<>()).add(eng); + } + } + + for (SdHbrvDic hbrvDic : hbrvList) { + Map hbrvNode = new LinkedHashMap<>(); + hbrvNode.put("type", "HBRVCD"); + hbrvNode.put("code", hbrvDic.getHbrvcd()); + hbrvNode.put("name", hbrvDic.getHbrvnm()); + hbrvNode.put("grd", hbrvDic.getGrd()); + hbrvNode.put("path", hbrvDic.getPath()); + hbrvNode.put("baseid", hbrvDic.getBaseid()); + hbrvNode.put("parentId", "0"); + hbrvNode.put("orgLevel", 0); + + List engList = hbrvEngMap.get(hbrvDic.getHbrvcd()); + 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", hbrvDic.getHbrvcd()); + engNode.put("orgLevel", 1); + engChildren.add(engNode); + } + } + + if (!engChildren.isEmpty()) { + hbrvNode.put("children", engChildren); + result.add(hbrvNode); + } + } + + return result; + } + } diff --git a/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml b/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml index a1b6923..bee8c09 100644 --- a/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml +++ b/backend/src/main/resources/mapper/env/SdEngInfoBHMapper.xml @@ -249,4 +249,19 @@ ORDER BY ORDER_INDEX ASC + + + +