diff --git a/src/main/java/com/biutag/supervision/constants/AppConstants.java b/src/main/java/com/biutag/supervision/constants/AppConstants.java index b146119..df82b17 100644 --- a/src/main/java/com/biutag/supervision/constants/AppConstants.java +++ b/src/main/java/com/biutag/supervision/constants/AppConstants.java @@ -35,6 +35,9 @@ public class AppConstants { // 督审支队的单位id public static final String DSZD = "2785"; + // 长沙公安局的id + public static final String ROOTID = "12630"; + public static final List CWLN = List.of("3651", "3799", "4170", "3994"); diff --git a/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java b/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java index 9d9617c..9d75818 100644 --- a/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java +++ b/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java @@ -60,7 +60,11 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Consumer; + +import static com.biutag.supervision.constants.AppConstants.ROOTID; /** * @author weipeng @@ -238,38 +242,32 @@ public class ReportProjectController { wrapper.groupBy("p.id"); wrapper.eq("p.delete_flag", DeleteStatusEnum.NO.getCode()); - // 鉴权逻辑 + // 账号鉴权 UserAuth user = UserContextHolder.getCurrentUser(); boolean superAuth = AppConstants.USER_TYPE_SUPER.equals(user.getUserType()); boolean firstAuth = superAuth || user.getRoleCodes().contains(RoleCodeEnum.FIRST_ADMIN.getCode()); - // 获取用户的权限部门及其所有子部门 - List userAuthOrgIds = !user.getAuthDepartIds().isEmpty() - ? departService.getAllNodeIds(user.getAuthDepartIds()) - : departService.getAllNodeIds(user.getDepartId()); - - // 根据code参数应用不同的鉴权规则 + List userAuthOrgIds = firstAuth + ? departService.getAllNodeIds(ROOTID) + : (user.getAuthDepartIds().isEmpty() ? departService.getAllNodeIds(user.getDepartId()) : departService.getAllNodeIds(user.getAuthDepartIds())); + if (!superAuth) { + wrapper.and(p -> p.in("p.audit_unit_id", userAuthOrgIds).or().in("p.project_unit_id", userAuthOrgIds)); + } + // 页面鉴权 + Map>> authStrategy = Map.of( + // “审计单位”为督审支队的项目 + "dszd", w -> { + List dszdOrgIds = departService.getAllNodeIds(AppConstants.DSZD); + w.and(p -> p.in("p.audit_unit_id", dszdOrgIds)); + }, + // 内“审计单位”为各分县市局内审的项目 + "self", w -> { + w.and(p -> p.in("p.audit_unit_id", userAuthOrgIds)); +// w.and(p -> p.in("p.audit_unit_id", userAuthOrgIds).or().in("p.project_unit_id", userAuthOrgIds)); + } + ); String code = queryParam.getCode(); - if (firstAuth) { - // 超级管理员和市级管理员 - if ("dszd".equals(code)) { - // 只显示督审支队及以下单位的数据 - List dszdOrgIds = departService.getAllNodeIds(AppConstants.DSZD); - wrapper.and(w -> w.in("p.audit_unit_id", dszdOrgIds).or().in("p.project_unit_id", dszdOrgIds)); - } - // 其他情况(firstAuth + 无code或self)显示全部数据 - } else { - // 非市级管理员,根据code应用不同规则 - if ("dszd".equals(code)) { - // 只显示审计单位或项目单位为督审支队及以下单位的数据 - List dszdOrgIds = departService.getAllNodeIds(AppConstants.DSZD); - wrapper.and(w -> w.in("p.audit_unit_id", dszdOrgIds).or().in("p.project_unit_id", dszdOrgIds)); - } else if ("self".equals(code)) { - // 只显示审计单位或项目单位为自己的权限机构的数据 - wrapper.and(w -> w.eq("p.audit_unit_id", user.getDepartId()).or().eq("p.project_unit_id", user.getDepartId())); - } else { - // 默认显示权限范围内的所有数据 - wrapper.and(w -> w.in("p.audit_unit_id", userAuthOrgIds).or().in("p.project_unit_id", userAuthOrgIds)); - } + if (code != null && authStrategy.containsKey(code)) { + authStrategy.get(code).accept(wrapper); } Page conditionPage = reportProjectService.getConditionPage(new Page<>(queryParam.getCurrent(), queryParam.getSize()), wrapper); diff --git a/src/main/java/com/biutag/supervision/pojo/param/statement/StatementQueryParam.java b/src/main/java/com/biutag/supervision/pojo/param/statement/StatementQueryParam.java index fd990d6..38ae875 100644 --- a/src/main/java/com/biutag/supervision/pojo/param/statement/StatementQueryParam.java +++ b/src/main/java/com/biutag/supervision/pojo/param/statement/StatementQueryParam.java @@ -2,13 +2,12 @@ package com.biutag.supervision.pojo.param.statement; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; -import com.biutag.supervision.pojo.entity.report.ReportProject; import com.biutag.supervision.pojo.param.BasePage; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -56,6 +55,7 @@ public class StatementQueryParam extends BasePage { private List archivingTime; //区分审结、审计备案 + @Schema(description = "区分 dszd:审计情况表 self:项目审计情况备案表 null:审结情况表") private String code;