From e1d8809a031a7a907b7fd2ce1b556773cb943a3b Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 4 Jun 2026 16:43:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=8B=E6=8B=89=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SdRvcdDicController.java | 16 +++ .../qgc_base/service/ISdRvcdDicService.java | 7 + .../service/impl/SdHbrvDicServiceImpl.java | 4 +- .../service/impl/SdRvcdDicServiceImpl.java | 127 ++++++++++++++++++ .../mapper/data/FishDraftDataMapper.xml | 2 +- .../mapper/data/FishStatisticsMapper.xml | 2 +- .../mapper/data/ImportTaskRowMapper.xml | 2 +- .../mapper/data/SysUserDataScopeMapper.xml | 2 +- 8 files changed, 156 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdRvcdDicController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdRvcdDicController.java index 9a1c6bdc..4ee42f4c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdRvcdDicController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdRvcdDicController.java @@ -102,4 +102,20 @@ public class SdRvcdDicController { boolean result = rvcdDicService.deleteRvcdDic(rvcd); return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); } + + @GetMapping("/selectForDropdown") + @Operation(summary = "下拉框列表查询") + public ResponseResult selectForDropdown( + @RequestParam(required = false) String rvnm, + @RequestParam(required = false) String rvcd) { + return ResponseResult.successData(rvcdDicService.selectForDropdown(rvnm, rvcd)); + } + + @GetMapping("/regDropdown") + @Operation(summary = "下拉框列表查询(注册)") + public ResponseResult regDropdown( + @RequestParam(required = false) String rvnm, + @RequestParam(required = false) String rvcd) { + return ResponseResult.successData(rvcdDicService.regDropdown(rvnm, rvcd)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdRvcdDicService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdRvcdDicService.java index 38e299f0..8eee4131 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdRvcdDicService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdRvcdDicService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.qgc_base.domain.SdRvcdDic; import java.util.List; +import java.util.Set; /** *

@@ -43,10 +44,16 @@ public interface ISdRvcdDicService extends IService { */ boolean deleteRvcdDic(String rvcd); + Set getUserAuthorizedStationCodes(); + /** * 获取流域树形结构 * @param rvcd 流域编码(可选,为空则返回全部) * @param rvnm 流域名称(可选,用于模糊搜索) */ List getTree(String rvcd, String rvnm); + + List selectForDropdown(String rvnm, String rvcd); + + List regDropdown(String rvnm, String rvcd); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHbrvDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHbrvDicServiceImpl.java index dde43f59..6adc2def 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHbrvDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdHbrvDicServiceImpl.java @@ -96,7 +96,7 @@ public class SdHbrvDicServiceImpl extends ServiceImpl implements ISdRvcdDicService { + @Resource + private SdEngInfoBHMapper engInfoBHMapper; + + @Resource + private SysUserDataScopeMapper sysUserDataScopeMapper; + @Override public Page queryPageList(Page page, String rvnm, String prvcd) { return this.page(page, this.lambdaQuery() @@ -103,6 +116,120 @@ public class SdRvcdDicServiceImpl extends ServiceImpl selectForDropdown(String rvnm, String rvcd) { + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(rvnm != null && !rvnm.isEmpty(), SdRvcdDic::getRvnm, rvnm) + .eq(rvcd != null && !rvcd.isEmpty(), SdRvcdDic::getRvcd, rvcd) + .eq(SdRvcdDic::getEnabled, 1) + .orderByAsc(SdRvcdDic::getBaseid,SdRvcdDic::getOrderIndex); + if("admin".equals(SecurityUtils.getCurrentUsername())){ + return this.list(wrapper); + } + Set authorizedStations = getUserAuthorizedStationCodes(); + if (authorizedStations != null && !authorizedStations.isEmpty()) { + List engInfos = engInfoBHMapper.selectList( + new LambdaQueryWrapper() + .select(SdEngInfoBH::getRvcd) + .in(SdEngInfoBH::getStcd, authorizedStations) + ); + List rvcds = engInfos.stream() + .map(SdEngInfoBH::getRvcd) + .filter(id -> id != null && !id.isEmpty()) + .distinct() + .toList(); + + if (!rvcds.isEmpty()) { + List list = this.list(wrapper); + return list.stream() + .filter(rvcdDic -> rvcds.contains(rvcdDic.getRvcd())) + .collect(Collectors.toList()); + } else { + return new ArrayList<>(); + } + }else { + return new ArrayList<>(); + } + } + + + @Override + public Set getUserAuthorizedStationCodes() { + String userId = SecurityUtils.getUserId(); + List sysUserDataScopes = sysUserDataScopeMapper.selectList( + new LambdaQueryWrapper() + .eq(SysUserDataScope::getUserId, userId) + .select(SysUserDataScope::getOrgId, SysUserDataScope::getOrgType) + ); + + if (sysUserDataScopes == null || sysUserDataScopes.isEmpty()) { + return new HashSet<>(); + } + + + Set stationCodes = new HashSet<>(); + Set basinCodes = new HashSet<>(); + + for (SysUserDataScope scope : sysUserDataScopes) { + String orgType = scope.getOrgType(); + String orgId = scope.getOrgId(); + + if ("STATION".equals(orgType)) { + SdEngInfoBH station = engInfoBHMapper.selectById(orgId); + if (station != null) { + if (station.getRvcd() != null) { + basinCodes.add(station.getRvcd()); + } + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + + } + } else if ("RVCD".equals(orgType)) { + List stationList = engInfoBHMapper.selectByRvcd(orgId); + if (stationList != null) { + for (SdEngInfoBH station : stationList) { + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + if (station.getEnnm() != null) { + basinCodes.add(station.getRvcd()); + } + } + } + + } + } + if (!stationCodes.isEmpty()) { + return stationCodes; + } + + if (!basinCodes.isEmpty()) { + List engInfos = engInfoBHMapper.selectList( + new LambdaQueryWrapper() + .select(SdEngInfoBH::getStcd) + .in(SdEngInfoBH::getRvcd, basinCodes) + ); + return engInfos.stream() + .map(SdEngInfoBH::getStcd) + .collect(Collectors.toSet()); + } + + return stationCodes; + } + + + @Override + public List regDropdown(String rvnm, String rvcd) { + return this.lambdaQuery() + .like(rvnm != null && !rvnm.isEmpty(), SdRvcdDic::getRvnm, rvnm) + .eq(rvcd != null && !rvcd.isEmpty(), SdRvcdDic::getRvcd, rvcd) + .eq(SdRvcdDic::getEnabled, 1) + .orderByAsc(SdRvcdDic::getBaseid,SdRvcdDic::getOrderIndex) + .list(); + } + private void buildTreeRecursive(SdRvcdDic parent, Map> childrenMap, Set rootRvcdSet) { List children = childrenMap.get(parent.getRvcd()); if (children != null && !children.isEmpty()) { diff --git a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml index a2e54147..442b5c8a 100644 --- a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml +++ b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml @@ -1,7 +1,7 @@ - + diff --git a/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml b/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml index 53218609..8fa08150 100644 --- a/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml +++ b/backend/src/main/resources/mapper/data/FishStatisticsMapper.xml @@ -1,7 +1,7 @@ - + diff --git a/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml b/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml index 78a617a6..5278483b 100644 --- a/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml +++ b/backend/src/main/resources/mapper/data/ImportTaskRowMapper.xml @@ -1,7 +1,7 @@ - + diff --git a/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml index b5d72bda..47fa5c30 100644 --- a/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml +++ b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml @@ -1,7 +1,7 @@ - +