diff --git a/backend/src/main/java/com/yfd/platform/qgc_data/controller/FishDraftDataController.java b/backend/src/main/java/com/yfd/platform/qgc_data/controller/FishDraftDataController.java index 3534edde..186e6971 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_data/controller/FishDraftDataController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/controller/FishDraftDataController.java @@ -89,10 +89,17 @@ public class FishDraftDataController { return t; }); +// @PostMapping("/page") +// @Operation(summary = "分页查询过鱼数据(关联电站和设施)") +// public ResponseResult queryPageList(@RequestBody DataSourceRequest dataSourceRequest) { +// Page result = fishDraftDataService.queryPageList(dataSourceRequest); +// return ResponseResult.successData(result); +// } + @PostMapping("/page") - @Operation(summary = "分页查询过鱼数据(关联电站和设施)") - public ResponseResult queryPageList(@RequestBody DataSourceRequest dataSourceRequest) { - Page result = fishDraftDataService.queryPageList(dataSourceRequest); + @Operation(summary = "分页查询过鱼数据(关联电站和设施,APPROVED状态时根据当前用户电站权限过滤)") + public ResponseResult queryPageListWithScope(@RequestBody DataSourceRequest dataSourceRequest) { + Page result = fishDraftDataService.queryPageListWithScope(dataSourceRequest); return ResponseResult.successData(result); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishDraftDataMapper.java b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishDraftDataMapper.java index 994d4e48..e1104ae2 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishDraftDataMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/mapper/FishDraftDataMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; +import java.util.Set; /** *

@@ -33,6 +34,24 @@ public interface FishDraftDataMapper extends BaseMapper { @Param("hbrvcd") String hbrvcd, @Param("approvalId") String approvalId); + /** + * 关联查询过鱼数据(分页,含电站权限过滤) + */ + Page selectJoinPageWithStationScope(Page page, + @Param("stcd") String stcd, + @Param("rstcd") String rstcd, + @Param("baseId") String baseId, + @Param("rvcd") String rvcd, + @Param("direction") String direction, + @Param("status") String status, + @Param("ftp") String ftp, + @Param("startTime") String startTime, + @Param("endTime") String endTime, + @Param("userId") String userId, + @Param("hbrvcd") String hbrvcd, + @Param("approvalId") String approvalId, + @Param("stationCodes") Set stationCodes); + /** * 关联查询过鱼数据(不分页) */ diff --git a/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishDraftDataService.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishDraftDataService.java index 742d6c88..2561b9c0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishDraftDataService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/IFishDraftDataService.java @@ -20,6 +20,12 @@ public interface IFishDraftDataService extends IService { */ Page queryPageList(DataSourceRequest dataSourceRequest); + /** + * 分页查询草稿数据(关联电站和设施表,含电站权限过滤) + * 当 status = APPROVED 时,根据当前用户有权限的电站编码过滤数据 + */ + Page queryPageListWithScope(DataSourceRequest dataSourceRequest); + /** * 查询草稿数据列表(关联电站和设施表,不分页) */ diff --git a/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishDraftDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishDraftDataServiceImpl.java index 45c47f12..3f3c9ca1 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishDraftDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_data/service/impl/FishDraftDataServiceImpl.java @@ -8,6 +8,7 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.qgc_base.domain.SdRvcdDic; import com.yfd.platform.qgc_base.mapper.SdRvcdDicMapper; +import com.yfd.platform.qgc_base.service.ICurrentUserDataScopeService; import com.yfd.platform.qgc_data.domain.ApprovalMain; import com.yfd.platform.qgc_data.domain.FishDraftData; import com.yfd.platform.qgc_data.domain.SysUserDataScope; @@ -89,6 +90,9 @@ public class FishDraftDataServiceImpl extends ServiceImpl resultPage = fishDraftDataMapper.selectJoinPage(page, stcd, rstcd, baseId, rvcd, direction, status, ftp, startTime, endTime,userId,hbrvcd,approvalId); + Page resultPage = fishDraftDataMapper.selectJoinPage(page, stcd, rstcd, baseId, rvcd, direction, status, ftp, startTime, endTime, userId, hbrvcd, approvalId); + fillUserNames(resultPage.getRecords()); + return resultPage; + } + + @Override + public Page queryPageListWithScope(DataSourceRequest dataSourceRequest) { + Page page = KendoUtil.getPage(dataSourceRequest); + page.setSize(dataSourceRequest.getTake()); + page.setCurrent(dataSourceRequest.getSkip()); + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); + String approvalId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "approvalId"); + String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd"); + String hbrvcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "hbrvcd"); + String rvcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rvcd"); + String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); + String ftp = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "ftp"); + String direction = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "direction"); + String status = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "status"); + String STRDT = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "strdt"); + String startTime = null; + String endTime = null; + String userId = SecurityUtils.getUserId(); + if (StrUtil.isNotBlank(approvalId)) { + userId = null; + } + if (StrUtil.isNotBlank(STRDT) && STRDT.split(",").length == 2) { + startTime = STRDT.split(",")[0]; + endTime = STRDT.split(",")[1]; + } + + // 当 status = APPROVED 时,加上当前用户的电站权限过滤 + Set stationCodes = null; + if ("APPROVED".equals(status)) { + userId=null; + if (!currentUserDataScopeService.getCurrentUserDataScope().isManagedAdmin()) { + stationCodes = currentUserDataScopeService.getCurrentUserDataScope().getStationCodes(); + // 如果用户没有电站权限且不是管理员,返回空结果 + if (stationCodes == null || stationCodes.isEmpty()) { + page.setRecords(Collections.emptyList()); + page.setTotal(0); + return page; + } + } + } + + Page resultPage = fishDraftDataMapper.selectJoinPageWithStationScope( + page, stcd, rstcd, baseId, rvcd, direction, status, ftp, + startTime, endTime, userId, hbrvcd, approvalId, stationCodes); fillUserNames(resultPage.getRecords()); return resultPage; } @@ -262,7 +315,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl ids) { long count = countByIdsAndLockFlag(ids, 1); - if(count > 0){ + if (count > 0) { return false; } String userId = SecurityUtils.getUserId(); @@ -392,7 +445,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl stationList = engInfoBHMapper.selectByRvcd(null,orgId); + List stationList = engInfoBHMapper.selectByRvcd(null, orgId); if (stationList != null) { for (SdEngInfoBH station : stationList) { if (station.getStcd() != null) { @@ -401,7 +454,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl succeededIds, - Map originalStatusMap, - Exception originalException) { + List succeededIds, + Map originalStatusMap, + Exception originalException) { try { for (List batchIds : splitList(normalizeBatchValues(succeededIds), IN_QUERY_BATCH_SIZE)) { executeInNewTransaction(() -> { diff --git a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml index 205a2796..9d127754 100644 --- a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml +++ b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml @@ -191,6 +191,61 @@ ORDER BY D.TM DESC, D.ROW_INDEX ASC + +