From 7932b8dc7ae355bfdfd43ef4afed0da0f7019927 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 6 May 2026 17:28:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FishImportServiceImpl.java | 79 +++++++++++++++++-- .../service/impl/SdEngInfoBHServiceImpl.java | 7 +- .../env/service/impl/SdFpssBHServiceImpl.java | 4 +- .../service/impl/SdHbrvDicServiceImpl.java | 2 + .../service/impl/SdHydrobaseServiceImpl.java | 2 + 5 files changed, 83 insertions(+), 11 deletions(-) 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 32c0d3d..ec0156c 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 @@ -1,9 +1,12 @@ package com.yfd.platform.data.service.impl; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.yfd.platform.data.domain.FishDraftData; import com.yfd.platform.data.domain.FishImportRequest; import com.yfd.platform.data.domain.FishImportResult; +import com.yfd.platform.data.domain.SysUserDataScope; +import com.yfd.platform.data.mapper.SysUserDataScopeMapper; import com.yfd.platform.data.service.AttachmentUploadService; import com.yfd.platform.data.service.IFishImportService; import com.yfd.platform.data.utils.ZipFileUtil; @@ -11,6 +14,7 @@ import com.yfd.platform.env.domain.*; import com.yfd.platform.env.mapper.*; import com.yfd.platform.system.service.ISysDictionaryItemsService; import com.yfd.platform.system.service.ISysDictionaryService; +import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; @@ -58,6 +62,9 @@ public class FishImportServiceImpl implements IFishImportService { @Resource private AttachmentUploadService attachmentUploadService; + @Resource + private SysUserDataScopeMapper userDataScopeMapper; + private static final Map EXCEL_COLUMN_MAPPING = new LinkedHashMap<>(); private static final Map EXCEL_COLUMN_INDEX_MAPPING = new LinkedHashMap<>(); @@ -468,8 +475,63 @@ public class FishImportServiceImpl implements IFishImportService { } private void loadStationAndBaseCache() { - if (STATION_NAME_CACHE.isEmpty()) { - List stationList = engInfoBHMapper.selectList(null); + String userId = SecurityUtils.getUserId(); + Set allowedHbrvcdSet = new HashSet<>(); + Set directStcdSet = new HashSet<>(); + + if (userId != null) { + List permissions = userDataScopeMapper.selectValidPermissions(userId); + if (permissions != null && !permissions.isEmpty()) { + for (SysUserDataScope permission : permissions) { + String orgType = permission.getOrgType(); + String orgId = permission.getOrgId(); + + if (orgId == null || orgId.isEmpty()) { + continue; + } + + if ("HBRVCD".equals(orgType)) { + allowedHbrvcdSet.add(orgId); + } else if ("STATION".equals(orgType)) { + directStcdSet.add(orgId); + } + } + } + } + + Set allStcdSet = new HashSet<>(); + + if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { + if (!allowedHbrvcdSet.isEmpty()) { + List stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet)); + for (SdEngInfoBH station : stationsFromHbrv) { + if (station.getStcd() != null) { + allStcdSet.add(station.getStcd()); + } + } + } + + if (!directStcdSet.isEmpty()) { + List stationsFromStcd = engInfoBHMapper.selectBatchIds(new ArrayList<>(directStcdSet)); + for (SdEngInfoBH station : stationsFromStcd) { + if (station.getStcd() != null) { + allStcdSet.add(station.getStcd()); + } + if (station.getHbrvcd() != null) { + allowedHbrvcdSet.add(station.getHbrvcd()); + } + } + } + } + + if (STATION_NAME_CACHE.isEmpty()&&!allStcdSet.isEmpty()) { + List stationList; + if (!allStcdSet.isEmpty()) { + stationList = engInfoBHMapper.selectBatchIds(new ArrayList<>(allStcdSet)); + } else { + stationList = engInfoBHMapper.selectList(null); + } + for (SdEngInfoBH station : stationList) { if (StringUtils.hasText(station.getEnnm())) { STATION_NAME_CACHE.put(station.getEnnm().trim().toLowerCase(), station.getStcd()); @@ -478,7 +540,7 @@ public class FishImportServiceImpl implements IFishImportService { if (StringUtils.hasText(station.getEnnm())) { STATION_CODE_TO_NAME_CACHE.put(station.getStcd().trim().toLowerCase(), station.getEnnm().trim().toLowerCase()); } - if (StringUtils.hasText(station.getBaseId())) { + if (StringUtils.hasText(station.getHbrvcd())) { STATION_TO_BASE_CACHE.put(station.getStcd().trim().toLowerCase(), station.getHbrvcd()); } } @@ -513,8 +575,11 @@ public class FishImportServiceImpl implements IFishImportService { } } - if (HBRVCD_NAME_CACHE.isEmpty()) { - List riverList = sdHbrvDicMapper.selectList(null); + if (HBRVCD_NAME_CACHE.isEmpty()&&!allowedHbrvcdSet.isEmpty()) { + List riverList; + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet); + riverList = sdHbrvDicMapper.selectList(wrapper); for (SdHbrvDic river : riverList) { if (StringUtils.hasText(river.getHbrvnm())) { HBRVCD_NAME_CACHE.put(river.getHbrvnm().trim().toLowerCase(), river.getHbrvcd()); @@ -541,8 +606,8 @@ public class FishImportServiceImpl implements IFishImportService { } } - if (FPSS_BH_CACHE.isEmpty()) { - List sdFpssBHS = fpssBHMapper.selectList(null); + if (FPSS_BH_CACHE.isEmpty()&&!directStcdSet.isEmpty()) { + List sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getStcd, directStcdSet)); for (SdFpssBH sdFpssBH : sdFpssBHS) { if (StringUtils.hasText(sdFpssBH.getStnm())) { FPSS_BH_CACHE.put(sdFpssBH.getStnm().trim().toLowerCase(), sdFpssBH.getStcd()); 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 60e4b2f..a1a2cce 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 @@ -46,6 +46,8 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl authorizedStations = getUserAuthorizedStationCodes(); if (authorizedStations != null && !authorizedStations.isEmpty()) { wrapper.in(SdEngInfoBH::getStcd, authorizedStations); + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return page; } return this.page(page, wrapper); } @@ -82,10 +84,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl authorizedStations = getUserAuthorizedStationCodes(); if (authorizedStations != null && !authorizedStations.isEmpty()) { wrapper.in(SdEngInfoBH::getStcd, authorizedStations); + } else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return new ArrayList<>(); } -// else { -// return new ArrayList<>(); -// } return this.list(wrapper); } 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 4cea76a..40e2cde 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 @@ -50,6 +50,8 @@ public class SdFpssBHServiceImpl extends ServiceImpl i Set authorizedStations = getUserAuthorizedStationCodes(); if (authorizedStations != null && !authorizedStations.isEmpty()) { wrapper.in(SdFpssBH::getRstcd, authorizedStations); + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return page; } wrapper.orderByDesc(SdFpssBH::getOrderIndex); @@ -78,7 +80,7 @@ public class SdFpssBHServiceImpl extends ServiceImpl i .orderByDesc(SdFpssBH::getOrderIndex); result = list(wrapper); } - if (authorizedStations.isEmpty()) { + if (authorizedStations.isEmpty()&&"admin".equals(SecurityUtils.getCurrentUsername())) { return result; } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java index dac49a8..e3ccf55 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java @@ -109,6 +109,8 @@ public class SdHbrvDicServiceImpl extends ServiceImpl(); } + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return new ArrayList<>(); } wrapper.like(hbrvnm != null && !hbrvnm.isEmpty(), SdHbrvDic::getHbrvnm, hbrvnm) .eq(baseid != null && !baseid.isEmpty(), SdHbrvDic::getBaseid, baseid) 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 3523a05..ed4e3a4 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 @@ -87,6 +87,8 @@ public class SdHydrobaseServiceImpl extends ServiceImpl(); } + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return new ArrayList<>(); } // else { // return new ArrayList<>();