From fb5ff2f3bb55f1d6d7cdbcee9e6841bf84845dae Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Tue, 7 Mar 2023 16:17:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=BA=93-=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E6=B8=85=E5=8D=95-=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91=E6=9F=A5=E8=AF=A2=E6=9D=83?= =?UTF-8?q?=E9=99=90=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/enums/ProjectRoleEnum.java | 11 +++ ...ectCertificationInventoryEOController.java | 3 +- .../ProjectCertificationInventoryEO.java | 3 + ...rojectCertificationInventoryEOService.java | 10 +++ ...ctCertificationInventoryEOServiceImpl.java | 70 +++++++++++++++++++ 5 files changed, 95 insertions(+), 2 deletions(-) diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java index 4cf5ba39d..5c67bfbee 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java @@ -1,5 +1,7 @@ package com.jero.modules.system.enums; +import org.apache.commons.lang3.StringUtils; + /** * 项目角色枚举类 */ @@ -27,6 +29,15 @@ public enum ProjectRoleEnum { this.code = code; } + public static ProjectRoleEnum getByValue(String value) { + for (ProjectRoleEnum projectRoleEnum : ProjectRoleEnum.values()) { + if(StringUtils.equals(value,projectRoleEnum.getValue())){ + return projectRoleEnum; + } + } + return null; + } + public String getName() { return name; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectCertificationInventoryEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectCertificationInventoryEOController.java index 24e08fa85..a7db40a4c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectCertificationInventoryEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectCertificationInventoryEOController.java @@ -59,8 +59,7 @@ public class ProjectCertificationInventoryEOController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(projectCertificationInventoryEO, req.getParameterMap()); Page page = new Page(pageNo, pageSize); - IPage pageList = projectCertificationInventoryEOService.page(page, queryWrapper); - this.projectCertificationInventoryEOService.disposeData(pageList.getRecords(),cut); + IPage pageList = this.projectCertificationInventoryEOService.queryPage(queryWrapper,page,projectCertificationInventoryEO,cut); return Result.OK(pageList); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java index 2880be9f8..2a34dc9c2 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectCertificationInventoryEO.java @@ -183,4 +183,7 @@ public class ProjectCertificationInventoryEO implements Serializable { @TableField(exist = false) private String ids; + + @TableField(exist = false) + private String roleCode; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java index bfec7292f..51bb2538a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectCertificationInventoryEOService.java @@ -1,6 +1,9 @@ package com.jero.modules.project.service; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.modules.project.entity.ProjectCertificationInventoryEO; import com.baomidou.mybatisplus.extension.service.IService; @@ -104,4 +107,11 @@ public interface IProjectCertificationInventoryEOService extends IService> getRoleByUserId(Map params); Result getFlowStatusList(String cut); + + IPage queryPage(QueryWrapper queryWrapper, + Page page, + ProjectCertificationInventoryEO projectCertificationInventoryEO, + String cut); + + void createQueryPermission(QueryWrapper queryWrapper, String roleCode); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java index f804be764..cfcd8962d 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java @@ -3,6 +3,8 @@ package com.jero.modules.project.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; @@ -545,4 +547,72 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl queryPage(QueryWrapper queryWrapper, + Page page, + ProjectCertificationInventoryEO projectCertificationInventoryEO, + String cut) { + + String roleCode = projectCertificationInventoryEO.getRoleCode(); + // 创建查询权限 + this.createQueryPermission(queryWrapper,roleCode); + IPage pageList = this.page(page, queryWrapper); + this.disposeData(pageList.getRecords(),cut); + return pageList; + } + + @Override + public void createQueryPermission(QueryWrapper queryWrapper, String roleCode) { + /** + * 处理查询权限 + * studio、法规工程师、领导、系统管理员、Viewer、品牌管理员: 可以查询所有数据 + * 认证工程师:可以查询所有数据 + * 接口人:可查看所有接口人为自己的数据 + * 责任人:可以查看流程状态为:任务待确认、结果待提交 、审查通过(并且责任人为自己) + */ + ProjectRoleEnum projectRoleEnum = ProjectRoleEnum.getByValue(roleCode); + if(ObjectUtils.isEmpty(projectRoleEnum)){ + throw new JeroBootException("当前用户角色有误,请重新选择后角色进行操作!"); + } + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + switch (projectRoleEnum){ + case STUDIO_ENGINEER: + break; + case REGULATI_ENGINEER: + break; + case MANAGER: + break; + case ADMIN: + break; + case VIEWER: + break; + case BRAND_ADMINISTRATOR: + break; + case HOMOLOGATION_ENGINEER: + break; + case INTERFACE_PERSON: + queryWrapper.lambda().eq(ProjectCertificationInventoryEO::getSdt,currentUser.getId()); + break; + case PERSON_LIABLE: + List flowStatusList = new ArrayList<>(); + flowStatusList.add(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()); + flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()); + + queryWrapper.lambda().and(queryWrap -> { + queryWrap.and(query -> { + query.eq(ProjectCertificationInventoryEO::getDutyPerson,currentUser.getId()); + query.in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList); + }).or(query -> { + query.eq(ProjectCertificationInventoryEO::getSdt,currentUser.getId()); + query.eq(ProjectCertificationInventoryEO::getFlowStatus,CertificationInventoryFlowStatusEnum.REVIEW_AND_PASS.getValue()); + }); + }); + break; + default: + throw new JeroBootException("当前用户角色有误,请重新选择后角色进行操作!"); + } + } }