From 16ef200d3991047b19ec7f3746dbff25d57b7c53 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Tue, 21 Jan 2025 15:44:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(examine):=20=E4=BC=98=E5=8C=96=E8=80=83?= =?UTF-8?q?=E6=A0=B8=E4=BA=BA=E5=91=98=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ExamineUser 类中添加 sortFiled 和 orderBySql 字段,用于自定义排序 - 更新 ExamineUserController,移除不必要的导入 - 修改 ExamineUserMapper.xml,使用 orderBySql 替代固定的排序方式 - 在 ExamineUserServiceImpl 中实现数据权限控制,限制非管理员用户只能查看本部门及子部门的考核人员 --- .../examine/user/ExamineUserController.java | 2 -- .../examine/user/domain/ExamineUser.java | 27 +++++++++++++++---- .../service/impl/ExamineUserServiceImpl.java | 17 +++++++++--- .../business/examine/ExamineUserMapper.xml | 2 +- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/user/ExamineUserController.java b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/user/ExamineUserController.java index 8979ffe..e86c3d9 100644 --- a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/user/ExamineUserController.java +++ b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/user/ExamineUserController.java @@ -4,8 +4,6 @@ import cn.hutool.core.util.StrUtil; import org.springframework.security.access.prepost.PreAuthorize; import tech.unissense.pms.business.examine.user.domain.ExamineUser; import tech.unissense.pms.business.examine.user.service.ExamineUserService; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import tech.unissense.pms.common.core.controller.BaseController; diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/domain/ExamineUser.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/domain/ExamineUser.java index cb6fd9b..6de7c4b 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/domain/ExamineUser.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/domain/ExamineUser.java @@ -1,10 +1,9 @@ package tech.unissense.pms.business.examine.user.domain; -import lombok.Data; -import lombok.NoArgsConstructor; +import cn.hutool.core.util.StrUtil; +import lombok.*; import tech.unissense.pms.common.core.domain.BaseEntity; -import java.io.Serializable; import java.math.BigDecimal; import java.util.List; @@ -55,10 +54,28 @@ public class ExamineUser extends BaseEntity { private String deptId; private String isAsc; + private String sortFiled; + @Setter(value = AccessLevel.NONE) + @Getter(value = AccessLevel.NONE) + private String orderBySql; + private List userIdList; - - + public String getOrderBySql() { + //对排序字段的替换 + if (StrUtil.isEmpty(sortFiled)) { + return null; + } else if ("all".equalsIgnoreCase(sortFiled)) { + return (StrUtil.format("order by IFNULL(score,ifnull(manage_score,ifnull(self_score,-1))) {}", StrUtil.isNotEmpty(isAsc) ? isAsc : "")); + } else if ("manageScore".equalsIgnoreCase(sortFiled)) { + return (StrUtil.format("order by ifnull(manage_score,-1) {}", StrUtil.isNotEmpty(isAsc) ? isAsc : "")); + } else if ("selfScore".equalsIgnoreCase(sortFiled)) { + return (StrUtil.format("order by ifnull(self_score,-1) {}", StrUtil.isNotEmpty(isAsc) ? isAsc : "")); + }else if ("score".equalsIgnoreCase(sortFiled)) { + return (StrUtil.format("order by ifnull(score,-1) {}", StrUtil.isNotEmpty(isAsc) ? isAsc : "")); + } + return null; + } } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java index 5005ffb..367e2ba 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java @@ -17,15 +17,14 @@ import tech.unissense.pms.business.examine.user.service.ExamineUserService; import org.springframework.stereotype.Service; import tech.unissense.pms.business.work.logger.service.IWorkLoggerService; import tech.unissense.pms.common.annotation.DataScope; +import tech.unissense.pms.common.core.domain.entity.SysUser; import tech.unissense.pms.common.utils.SecurityUtils; +import tech.unissense.pms.common.utils.StringUtils; import tech.unissense.pms.system.service.ISysDictDataService; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.stream.Collectors; @@ -102,6 +101,16 @@ public class ExamineUserServiceImpl implements ExamineUserService { @Override @DataScope(deptAlias = "t2", userAlias = "t2") public List list(ExamineUser examineUser) { + SysUser user = SecurityUtils.getLoginUser().getUser(); + if (!user.getDeptId().equals(200L)) { + String sqlPermission = StringUtils.format( + " and ({}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) ))" + , "t2", user.getDeptId(), user.getDeptId()); + + examineUser.setParams(new HashMap() {{ + put("dataScope", sqlPermission); + }}); + } return examineUserMapper.list(examineUser); } diff --git a/pms-business/src/main/resources/mapper/business/examine/ExamineUserMapper.xml b/pms-business/src/main/resources/mapper/business/examine/ExamineUserMapper.xml index 2fe733e..b3ee796 100644 --- a/pms-business/src/main/resources/mapper/business/examine/ExamineUserMapper.xml +++ b/pms-business/src/main/resources/mapper/business/examine/ExamineUserMapper.xml @@ -113,7 +113,7 @@ ${params.dataScope} - order by ifnull(manage_score,-1) ${isAsc} + ${orderBySql}