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 @@
-
+