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