From 4158ab0c2d4cb939c735800f2c190fad26eb4bf0 Mon Sep 17 00:00:00 2001 From: wang Date: Sat, 7 Feb 2026 11:29:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=88=90=E6=9C=AC=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/ServiceDepartmentImportForm.java | 4 +- .../domain/form/ServiceLawyerImportForm.java | 4 +- .../service/ServiceApplicationsService.java | 124 ++++++++++++++++++ 3 files changed, 128 insertions(+), 4 deletions(-) diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceDepartmentImportForm.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceDepartmentImportForm.java index 6e4e92c..c7c42e7 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceDepartmentImportForm.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceDepartmentImportForm.java @@ -27,14 +27,14 @@ public class ServiceDepartmentImportForm { private Double quarterlyServiceDuration = 0.0; @ExcelProperty("季度累计服务成本") - @ExcelIgnore + //@ExcelIgnore private BigDecimal quarterlyServiceCost = BigDecimal.ZERO; @ExcelProperty("年度累计服务时长") private Double annualServiceDuration = 0.0; @ExcelProperty("年度累计服务成本") - @ExcelIgnore + //@ExcelIgnore private BigDecimal annualServiceCost = BigDecimal.ZERO; } \ No newline at end of file diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerImportForm.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerImportForm.java index 3766635..0a08d18 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerImportForm.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/domain/form/ServiceLawyerImportForm.java @@ -30,13 +30,13 @@ public class ServiceLawyerImportForm { private Double quarterlyServiceDuration = 0.0; @ExcelProperty("季度累计服务成本") - @ExcelIgnore + //@ExcelIgnore private BigDecimal quarterlyServiceCost = BigDecimal.ZERO; @ExcelProperty("年度累计服务时长") private Double annualServiceDuration = 0.0; @ExcelProperty("年度累计服务成本") - @ExcelIgnore + //@ExcelIgnore private BigDecimal annualServiceCost = BigDecimal.ZERO; } \ No newline at end of file diff --git a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java index 022afc2..671d401 100644 --- a/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java +++ b/yun-admin/src/main/java/net/lab1024/sa/admin/module/service/service/ServiceApplicationsService.java @@ -730,6 +730,52 @@ public class ServiceApplicationsService { return ResponseDTO.ok(); } + /** + * 根据用户权限屏蔽成本数据 + * @param statisticsList 统计数据列表 + */ + private void maskCostDataForUser(List statisticsList) { + if (statisticsList == null || statisticsList.isEmpty()) { + return; + } + + RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); + if (requestUser == null) { + // 用户未登录,屏蔽所有成本数据 + statisticsList.forEach(this::clearCostData); + return; + } + + // 检查用户的costVisibleFlag权限 + Boolean costVisibleFlag = requestUser.getCostVisibleFlag(); + if (costVisibleFlag == null || !costVisibleFlag) { + // 用户没有成本查看权限,清空成本数据 + statisticsList.forEach(this::clearCostData); + } + // 如果有权限,则保持原数据不变 + } + + /** + * 清空成本相关数据 + * @param statisticsVO 统计VO对象 + */ + private void clearCostData(LawyerStatisticsVO statisticsVO) { + if (statisticsVO != null) { + statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); + statisticsVO.setAnnualServiceCost(BigDecimal.ZERO); + + // 如果有律师服务列表,也需要清空其中的成本数据 + if (statisticsVO.getLawyerServiceVOList() != null) { + statisticsVO.getLawyerServiceVOList().forEach(lawyerService -> { + if (lawyerService != null) { + lawyerService.setQuarterlyServiceCost(BigDecimal.ZERO); + lawyerService.setAnnualServiceCost(BigDecimal.ZERO); + } + }); + } + } + } + /** * 律所统计 * @param queryForms @@ -800,6 +846,8 @@ public class ServiceApplicationsService { lawyerStatisticsVO.setLawyerServiceVOList(lawyerServiceVOList); }); } + //屏蔽成本数据 + maskCostDataForUser(lawyerStatisticsWithParamYear); return lawyerStatisticsWithParamYear; } @@ -849,9 +897,81 @@ public class ServiceApplicationsService { LawyerStatisticsQueryForm queryForm1 = SmartBeanUtil.copy(queryForm, LawyerStatisticsQueryForm.class); monthStatisticsDepartment(queryForm1, null, lawyerStatisticsWithParamYear); } + //屏蔽成本数据(导出专用) + maskCostDataForLawyerExport(lawyerStatisticsWithParamYear); //写入数据到文件 exportExcel(response, "律所统计信息.xlsx", "律所统计信息", ServiceDepartmentImportForm.class, lawyerStatisticsWithParamYear); } + /** 导出专用的成本数据屏蔽方法(ServiceDepartmentImportForm) + * @param statisticsList 统计数据列表 + */ + private void maskCostDataForLawyerExport(List statisticsList) { + if (statisticsList == null || statisticsList.isEmpty()) { + return; + } + + RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); + if (requestUser == null) { + // 用户未登录,屏蔽所有成本数据 + statisticsList.forEach(this::clearCostForLawyer); + return; + } + + // 检查用户的costVisibleFlag权限 + Boolean costVisibleFlag = requestUser.getCostVisibleFlag(); + if (costVisibleFlag == null || !costVisibleFlag) { + // 用户没有成本查看权限,清空成本数据 + statisticsList.forEach(this::clearCostForLawyer); + } + // 如果有权限,则保持原数据不变 + } + + /** + * 清空律师统计数据的成本相关数据 + * @param statisticsVO 律师统计对象 + */ + private void clearCostForLawyer(ServiceDepartmentImportForm statisticsVO) { + if (statisticsVO != null) { + statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); + statisticsVO.setAnnualServiceCost(BigDecimal.ZERO); + } + } + + /** 导出专用的成本数据屏蔽方法(针对ServiceLawyerImportForm) + * @param statisticsList 统计数据列表 + */ + private void maskCostDataForExport(List statisticsList) { + if (statisticsList == null || statisticsList.isEmpty()) { + return; + } + + RequestEmployee requestUser = AdminRequestUtil.getRequestUser(); + if (requestUser == null) { + // 用户未登录,屏蔽所有成本数据 + statisticsList.forEach(this::clearCostDataForLawyer); + return; + } + + // 检查用户的costVisibleFlag权限 + Boolean costVisibleFlag = requestUser.getCostVisibleFlag(); + if (costVisibleFlag == null || !costVisibleFlag) { + // 用户没有成本查看权限,清空成本数据 + statisticsList.forEach(this::clearCostDataForLawyer); + } + // 如果有权限,则保持原数据不变 + } + + /** + * 清空律师统计数据的成本相关数据 + * @param statisticsVO 律师统计对象 + */ + private void clearCostDataForLawyer(ServiceLawyerImportForm statisticsVO) { + if (statisticsVO != null) { + statisticsVO.setQuarterlyServiceCost(BigDecimal.ZERO); + statisticsVO.setAnnualServiceCost(BigDecimal.ZERO); + } + } + @Transactional public ResponseDTO batchReview(@Valid ServiceApplicationsUpdateForm updateForm) { @@ -1196,6 +1316,8 @@ public class ServiceApplicationsService { } monthStatistics(queryForm, lawyerStatisticsVOPageResult.getList(),null); } + // 根据用户权限控制成本数据显示 + maskCostDataForUser(lawyerStatisticsVOPageResult.getList()); return lawyerStatisticsVOPageResult; } @@ -1235,6 +1357,8 @@ public class ServiceApplicationsService { LawyerStatisticsQueryForm queryForm1 = SmartBeanUtil.copy(queryForm, LawyerStatisticsQueryForm.class); monthStatistics(queryForm1, null, lawyerStatisticsWithParamYear); } + + maskCostDataForExport(lawyerStatisticsWithParamYear); //写入数据到文件 exportExcel(response, "律师统计信息.xlsx", "律师统计信息", ServiceLawyerImportForm.class, lawyerStatisticsWithParamYear); }