diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java
index 90085ef..fb74d72 100644
--- a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java
+++ b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java
@@ -206,7 +206,7 @@ public class FishDraftData implements Serializable {
* 设施名称
*/
@TableField(exist = false)
- private String fpname;
+ private String stnm;
/**
* 鱼类名称
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 388eb15..9608d02 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
@@ -92,7 +92,7 @@ public class FishImportServiceImpl implements IFishImportService {
EXCEL_COLUMN_INDEX_MAPPING.put(0, "baseName");
EXCEL_COLUMN_INDEX_MAPPING.put(1, "stationName");
- EXCEL_COLUMN_INDEX_MAPPING.put(2, "fpname");
+ EXCEL_COLUMN_INDEX_MAPPING.put(2, "stnm");
EXCEL_COLUMN_INDEX_MAPPING.put(3, "strdt");
EXCEL_COLUMN_INDEX_MAPPING.put(4, "ftp");
EXCEL_COLUMN_INDEX_MAPPING.put(5, "isfs");
@@ -314,7 +314,7 @@ public class FishImportServiceImpl implements IFishImportService {
case "sourceType":
data.setSourceType(parseSourceType(cellValue.trim()));
break;
- case "fpname":
+ case "stnm":
if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("过鱼设施名称");
} else {
@@ -322,9 +322,9 @@ public class FishImportServiceImpl implements IFishImportService {
if (stcd == null) {
importRow.getWarnings().add(fieldName);
data.setStcd(cellValue.trim());
- data.setFpname(cellValue.trim());
+ data.setStnm(cellValue.trim());
} else {
- data.setFpname(stcd);
+ data.setStnm(stcd);
data.setStcd(stcd);
}
}
diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdEngInfoBHService.java b/backend/src/main/java/com/yfd/platform/env/service/ISdEngInfoBHService.java
index ab65aea..4f6eed1 100644
--- a/backend/src/main/java/com/yfd/platform/env/service/ISdEngInfoBHService.java
+++ b/backend/src/main/java/com/yfd/platform/env/service/ISdEngInfoBHService.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.env.domain.SdEngInfoBH;
import java.util.List;
+import java.util.Set;
/**
*
@@ -38,6 +39,8 @@ public interface ISdEngInfoBHService extends IService {
*/
List selectForDropdown(String baseId, String ennm);
+ Set getUserAuthorizedStationCodes();
+
/**
* 新增电站
*/
diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java b/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java
index 6a7f464..7b37c27 100644
--- a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java
+++ b/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.env.domain.SdFpssBH;
import java.util.List;
+import java.util.Set;
public interface ISdFpssBHService extends IService {
@@ -17,6 +18,8 @@ public interface ISdFpssBHService extends IService {
*/
List selectForDropdown(String rstcd, String stnm, String baseId);
+ Set getUserAuthorizedStationCodes();
+
boolean add(SdFpssBH sdFpssBH);
boolean updateById(SdFpssBH sdFpssBH);
diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java b/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java
index 92a94e3..096bee5 100644
--- a/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java
+++ b/backend/src/main/java/com/yfd/platform/env/service/ISdHydrobaseService.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.env.domain.SdHydrobase;
import java.util.List;
+import java.util.Set;
/**
*
@@ -33,6 +34,8 @@ public interface ISdHydrobaseService extends IService {
*/
List selectForDropdown(String basename);
+ Set getUserAuthorizedStationCodes();
+
/**
* 新增基地
*/
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 8b49d15..713b625 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
@@ -1,15 +1,23 @@
package com.yfd.platform.env.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yfd.platform.data.domain.SysUserDataScope;
+import com.yfd.platform.data.mapper.SysUserDataScopeMapper;
import com.yfd.platform.env.domain.SdEngInfoBH;
import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
import com.yfd.platform.env.service.ISdEngInfoBHService;
+import com.yfd.platform.utils.SecurityUtils;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
*
@@ -19,19 +27,26 @@ import java.util.List;
@Service
public class SdEngInfoBHServiceImpl extends ServiceImpl implements ISdEngInfoBHService {
-
@Resource
private SdEngInfoBHMapper engInfoBHMapper;
+ @Resource
+ private SysUserDataScopeMapper sysUserDataScopeMapper;
+
@Override
public Page queryPageList(Page page, String ennm, String rvcd, String baseId, String hycd) {
- return this.page(page, this.lambdaQuery()
- .like(ennm != null && !ennm.isEmpty(), SdEngInfoBH::getEnnm, ennm)
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper .like(ennm != null && !ennm.isEmpty(), SdEngInfoBH::getEnnm, ennm)
.eq(rvcd != null && !rvcd.isEmpty(), SdEngInfoBH::getRvcd, rvcd)
.eq(baseId != null && !baseId.isEmpty(), SdEngInfoBH::getBaseId, baseId)
.eq(hycd != null && !hycd.isEmpty(), SdEngInfoBH::getHycd, hycd)
- .orderByAsc(SdEngInfoBH::getOrderIndex)
- .getWrapper());
+ .orderByAsc(SdEngInfoBH::getOrderIndex);
+
+ Set authorizedStations = getUserAuthorizedStationCodes();
+ if (authorizedStations != null && !authorizedStations.isEmpty()) {
+ wrapper.in(SdEngInfoBH::getStcd, authorizedStations);
+ }
+ return this.page(page, wrapper);
}
@Override
@@ -51,12 +66,64 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl selectForDropdown(String baseId, String ennm) {
- return this.lambdaQuery()
- .eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
.like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm)
.select(SdEngInfoBH::getStcd, SdEngInfoBH::getEnnm, SdEngInfoBH::getBaseId)
- .orderByAsc(SdEngInfoBH::getOrderIndex)
- .list();
+ .orderByAsc(SdEngInfoBH::getOrderIndex);
+
+ Set authorizedStations = getUserAuthorizedStationCodes();
+ if (authorizedStations != null && !authorizedStations.isEmpty()) {
+ wrapper.in(SdEngInfoBH::getStcd, authorizedStations);
+ } else {
+ return new ArrayList<>();
+ }
+
+ return this.list(wrapper);
+ }
+
+ @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<>();
+ List basinCodes = new ArrayList<>();
+
+ for (SysUserDataScope scope : sysUserDataScopes) {
+ String orgType = scope.getOrgType();
+ String orgId = scope.getOrgId();
+
+ if ("STATION".equals(orgType)) {
+ stationCodes.add(orgId);
+ } else if ("BASIN".equals(orgType)) {
+ basinCodes.add(orgId);
+ }
+ }
+
+ if (!stationCodes.isEmpty()) {
+ return stationCodes;
+ }
+
+ if (!basinCodes.isEmpty()) {
+ List engInfos = this.lambdaQuery()
+ .select(SdEngInfoBH::getStcd)
+ .in(SdEngInfoBH::getRvcd, basinCodes)
+ .list();
+ return engInfos.stream()
+ .map(SdEngInfoBH::getStcd)
+ .collect(Collectors.toSet());
+ }
+
+ return stationCodes;
}
@Override
diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java
index da361a4..b70dc13 100644
--- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java
+++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java
@@ -3,17 +3,33 @@ package com.yfd.platform.env.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yfd.platform.data.domain.SysUserDataScope;
+import com.yfd.platform.data.mapper.SysUserDataScopeMapper;
+import com.yfd.platform.env.domain.SdEngInfoBH;
import com.yfd.platform.env.domain.SdFpssBH;
+import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
import com.yfd.platform.env.mapper.SdFpssBHMapper;
import com.yfd.platform.env.service.ISdFpssBHService;
+import com.yfd.platform.utils.SecurityUtils;
+import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
@Service
public class SdFpssBHServiceImpl extends ServiceImpl implements ISdFpssBHService {
+ @Resource
+ private SysUserDataScopeMapper sysUserDataScopeMapper;
+ @Resource
+ private SdEngInfoBHMapper sdEngInfoBHMapper;
+
+
@Override
public Page selectPage(String stcd, String sttp, String rstcd, Integer usfl, Page page) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
@@ -31,6 +47,11 @@ public class SdFpssBHServiceImpl extends ServiceImpl i
wrapper.eq(SdFpssBH::getUsfl, usfl);
}
+ Set authorizedStations = getUserAuthorizedStationCodes();
+ if (authorizedStations != null && !authorizedStations.isEmpty()) {
+ wrapper.in(SdFpssBH::getRstcd, authorizedStations);
+ }
+
wrapper.orderByDesc(SdFpssBH::getOrderIndex);
return page(page, wrapper);
}
@@ -44,15 +65,72 @@ public class SdFpssBHServiceImpl extends ServiceImpl i
@Override
public List selectForDropdown(String rstcd, String stnm, String baseId) {
+ Set authorizedStations = getUserAuthorizedStationCodes();
+
+ if (authorizedStations == null || authorizedStations.isEmpty()) {
+ return new ArrayList<>();
+ }
+
+ List result;
+
if (StringUtils.hasText(baseId)) {
- return baseMapper.selectForDropdownWithBaseId(rstcd, stnm, baseId);
+ result = baseMapper.selectForDropdownWithBaseId(rstcd, stnm, baseId);
} else {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.hasText(rstcd), SdFpssBH::getRstcd, rstcd)
.like(StringUtils.hasText(stnm), SdFpssBH::getStnm, stnm)
.orderByDesc(SdFpssBH::getOrderIndex);
- return list(wrapper);
+ result = list(wrapper);
}
+
+ return result.stream()
+ .filter(fpss -> authorizedStations.contains(fpss.getRstcd()))
+ .collect(Collectors.toList());
+ }
+
+ @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<>();
+ List basinCodes = new ArrayList<>();
+
+ for (SysUserDataScope scope : sysUserDataScopes) {
+ String orgType = scope.getOrgType();
+ String orgId = scope.getOrgId();
+
+ if ("STATION".equals(orgType)) {
+ stationCodes.add(orgId);
+ } else if ("BASIN".equals(orgType)) {
+ basinCodes.add(orgId);
+ }
+ }
+
+ if (!stationCodes.isEmpty()) {
+ return stationCodes;
+ }
+
+ if (!basinCodes.isEmpty()) {
+ List engInfos = sdEngInfoBHMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SdEngInfoBH::getStcd)
+ .in(SdEngInfoBH::getRvcd, basinCodes)
+ );
+ return engInfos.stream()
+ .map(SdEngInfoBH::getStcd)
+ .collect(Collectors.toSet());
+ }
+
+ return stationCodes;
}
@Override
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 4236ea4..febc709 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
@@ -1,14 +1,25 @@
package com.yfd.platform.env.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yfd.platform.data.domain.SysUserDataScope;
+import com.yfd.platform.data.mapper.SysUserDataScopeMapper;
+import com.yfd.platform.env.domain.SdEngInfoBH;
import com.yfd.platform.env.domain.SdHydrobase;
+import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
import com.yfd.platform.env.mapper.SdHydrobaseMapper;
import com.yfd.platform.env.service.ISdHydrobaseService;
+import com.yfd.platform.utils.SecurityUtils;
+import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
*
@@ -18,6 +29,12 @@ import java.util.List;
@Service
public class SdHydrobaseServiceImpl extends ServiceImpl implements ISdHydrobaseService {
+ @Resource
+ private SysUserDataScopeMapper sysUserDataScopeMapper;
+
+ @Resource
+ private SdEngInfoBHMapper sdEngInfoBHMapper;
+
@Override
public Page queryPageList(Page page, String basename, String pbaseid) {
return this.page(page, this.lambdaQuery()
@@ -45,10 +62,81 @@ public class SdHydrobaseServiceImpl extends ServiceImpl selectForDropdown(String basename) {
- return this.lambdaQuery()
- .like(StringUtils.hasText(basename), SdHydrobase::getBasename, basename)
- .orderByAsc(SdHydrobase::getOrderIndex)
- .list();
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+
+ if (StringUtils.hasText(basename)) {
+ wrapper.like(SdHydrobase::getBasename, basename);
+ }
+
+ Set authorizedStations = getUserAuthorizedStationCodes();
+
+ if (authorizedStations != null && !authorizedStations.isEmpty()) {
+ List engInfos = sdEngInfoBHMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SdEngInfoBH::getBaseId)
+ .in(SdEngInfoBH::getStcd, authorizedStations)
+ );
+ List baseIds = engInfos.stream()
+ .map(SdEngInfoBH::getBaseId)
+ .filter(id -> id != null && !id.isEmpty())
+ .distinct()
+ .collect(Collectors.toList());
+
+ if (!baseIds.isEmpty()) {
+ wrapper.in(SdHydrobase::getBaseid, baseIds);
+ } else {
+ return new ArrayList<>();
+ }
+ } else {
+ return new ArrayList<>();
+ }
+ wrapper.orderByAsc(SdHydrobase::getOrderIndex);
+ return this.list(wrapper);
+ }
+
+ @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<>();
+ List basinCodes = new ArrayList<>();
+
+ for (SysUserDataScope scope : sysUserDataScopes) {
+ String orgType = scope.getOrgType();
+ String orgId = scope.getOrgId();
+
+ if ("STATION".equals(orgType)) {
+ stationCodes.add(orgId);
+ } else if ("BASIN".equals(orgType)) {
+ basinCodes.add(orgId);
+ }
+ }
+
+ if (!stationCodes.isEmpty()) {
+ return stationCodes;
+ }
+
+ if (!basinCodes.isEmpty()) {
+ List engInfos = sdEngInfoBHMapper.selectList(
+ new LambdaQueryWrapper()
+ .select(SdEngInfoBH::getStcd)
+ .in(SdEngInfoBH::getRvcd, basinCodes)
+ );
+ return engInfos.stream()
+ .map(SdEngInfoBH::getStcd)
+ .collect(Collectors.toSet());
+ }
+
+ return stationCodes;
}
@Override