diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java index fcb31c6e8..06cf4d4f9 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java @@ -684,7 +684,7 @@ public class SysPermissionController { //项目参数任务 if(StringUtils.equals(permission.getId(), SysPermissionEnum.PROJECT_PARAMETER_TASKS.getId())){ boolean existTaskFlag = false; - existTaskFlag = sysPermissionService.judgeToDo(); +// existTaskFlag = sysPermissionService.judgeToDo(); meta.put("existTask",existTaskFlag); } json.put("meta", meta); diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/RoleEnum.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/RoleEnum.java index 0b743f160..2dcb85b76 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/RoleEnum.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/RoleEnum.java @@ -6,6 +6,8 @@ public enum RoleEnum { COUNTRU_CARD_MANAGE("countryCard管理员","countryCardManage","countryCardManage","1564916346120916993",4), ENGINEERING_INTERFACE_PERSON("工程接口人","engineeringInterfacePerson","engineeringInterfacePerson","1534020084667674626",5), ENGINEER("工程师","engineer","engineer","1534020318437208065",6), + HOMOLOGATION_ENGINEER("认证工程师","homologationEngineer","homologationEngineer","1534019729326239745",8), + REGULATION_OWNER("法规工程师","regulationOwner","regulationOwner","1534021004067500034",7), ; String name; diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index 4e3c3a59f..250953aaa 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -289,4 +289,16 @@ public interface ISysUserService extends IService { * @return */ boolean isEngineer(LoginUser currentUser); + + /** + * 验证当前登录用户是否是认证工程师角色 + * @return + */ + boolean isHomologationEngineer(LoginUser currentUser); + + /** + * 验证当前登录用户是否是法规工程师角色 + * @return + */ + boolean isRegulationOwner(LoginUser currentUser); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index bd91b606d..a9db69c51 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -656,4 +656,46 @@ public class SysUserServiceImpl extends ServiceImpl impl } return result; } + + @Override + public boolean isHomologationEngineer(LoginUser currentUser) { + boolean result = false; + RoleEnum engineer = RoleEnum.HOMOLOGATION_ENGINEER; + List userRoleList = this.sysUserRoleMapper.selectList(new QueryWrapper().lambda().eq(SysUserRole::getUserId, currentUser.getId())); + if(CollectionUtils.isNotEmpty(userRoleList)){ + List userRoles = userRoleList.stream().filter(userRole -> { + boolean flag = false; + if(StringUtils.equals(userRole.getRoleId(),engineer.getId())){ + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(userRoles)){ + result = true; + } + } + return result; + } + + @Override + public boolean isRegulationOwner(LoginUser currentUser) { + boolean result = false; + RoleEnum engineer = RoleEnum.REGULATION_OWNER; + List userRoleList = this.sysUserRoleMapper.selectList(new QueryWrapper().lambda().eq(SysUserRole::getUserId, currentUser.getId())); + if(CollectionUtils.isNotEmpty(userRoleList)){ + List userRoles = userRoleList.stream().filter(userRole -> { + boolean flag = false; + if(StringUtils.equals(userRole.getRoleId(),engineer.getId())){ + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(userRoles)){ + result = true; + } + } + return result; + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java index be69a99c0..671006907 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java @@ -87,11 +87,15 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi /** * 2022-11-01 增加数据权限:如果当前登录用户,是工程师、工程接口人角色,只能查看到跟自己相关的数据。其余角色保留之前的查询结果。 + * 2022-11-04 增加法规、认证工程师与上方权限一致。 */ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + boolean isAdministrator = this.sysUserService.isAdministrator(); boolean isEngineer = this.sysUserService.isEngineer(currentUser); boolean isEngineeringInterfacePerson = this.sysUserService.isEngineeringInterfacePerson(currentUser); - if(isEngineer || isEngineeringInterfacePerson){ + boolean isHomologationEngineer = this.sysUserService.isHomologationEngineer(currentUser); + boolean isRegulationOwner = this.sysUserService.isRegulationOwner(currentUser); + if((isEngineer || isEngineeringInterfacePerson || isHomologationEngineer || isRegulationOwner) && !isAdministrator){ params.put("currentUserId",currentUser.getId()); params.put("isEngineerOrEngineeringInterfacePerson",true); } @@ -159,11 +163,15 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi public JSONObject queryComplianceResultList(Map params) { /** * 2022-11-01 增加数据权限:如果当前登录用户,是工程师、工程接口人角色,只能查看到跟自己相关的数据。其余角色保留之前的查询结果。 + * 2022-11-04 增加法规、认证工程师与上方权限一致。 */ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + boolean isAdministrator = this.sysUserService.isAdministrator(); boolean isEngineer = this.sysUserService.isEngineer(currentUser); boolean isEngineeringInterfacePerson = this.sysUserService.isEngineeringInterfacePerson(currentUser); - if(isEngineer || isEngineeringInterfacePerson){ + boolean isHomologationEngineer = this.sysUserService.isHomologationEngineer(currentUser); + boolean isRegulationOwner = this.sysUserService.isRegulationOwner(currentUser); + if((isEngineer || isEngineeringInterfacePerson || isHomologationEngineer || isRegulationOwner) && !isAdministrator){ params.put("currentUserId",currentUser.getId()); params.put("isEngineerOrEngineeringInterfacePerson",true); } @@ -177,8 +185,8 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi QueryWrapper taskDetailQueryWrapper = new QueryWrapper<>(); taskDetailQueryWrapper.lambda().in(ProjectTaskInventoryDetailEO::getProjectTaskInventoryId,projectLawsInventoryIdList); List projectTaskInventoryDetailEOList = this.projectTaskInventoryDetailEOMapper.selectList(taskDetailQueryWrapper); - this.createTaskInventoryEOList(complianceResultList,projectTaskInventoryDetailEOList,currentUser,isEngineer,isEngineeringInterfacePerson); - this.disposeComplianceResult(complianceResultList,cut,isEngineer,isEngineeringInterfacePerson); + this.createTaskInventoryEOList(complianceResultList,projectTaskInventoryDetailEOList,currentUser,isEngineer,isEngineeringInterfacePerson,isHomologationEngineer,isRegulationOwner); + this.disposeComplianceResult(complianceResultList,cut,isEngineer,isEngineeringInterfacePerson,isHomologationEngineer,isRegulationOwner,isAdministrator); } result.put("complianceResultList",complianceResultList); @@ -187,18 +195,19 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi opinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getStandId,id); opinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getGatherResult,GatherResultEnum.COMPLETED.getValue()); //如果当前登录用户是工程师或工程接口人,只查询自己为评估人的法规意见收集数据。 - if(isEngineer || isEngineeringInterfacePerson){ + if(!isAdministrator){ opinionGatherEOQueryWrapper.lambda().like(LawsOpinionGatherEO::getEvaluatorIds,currentUser.getId()); } int opinionGatherCount = this.lawsOpinionGatherEOService.count(opinionGatherEOQueryWrapper); result.put("opinionGather",opinionGatherCount); + //如果登录人不是超级管理员,则只能看到跟自己相关的数据 //查询当前数据是否有法规技术评估流程数据 QueryWrapper evaluationEOQueryWrapper = new QueryWrapper<>(); evaluationEOQueryWrapper.lambda().eq(LawsTechnologyEvaluationEO::getStandId,id); evaluationEOQueryWrapper.lambda().eq(LawsTechnologyEvaluationEO::getFlowStatus,GatherResultEnum.COMPLETED.getValue()); //如果当前登录用户是工程师或工程接口人,只查询自己为评估人的法规技术评估数据。 - if(isEngineer || isEngineeringInterfacePerson){ + if(!isAdministrator){ this.lawsTechnologyEvaluationEOService.createQueryPermission(evaluationEOQueryWrapper,null,false); } int evaluationCount = this.lawsTechnologyEvaluationEOService.count(evaluationEOQueryWrapper); @@ -218,7 +227,9 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi List projectTaskInventoryDetailEOList, LoginUser currentUser, boolean isEngineer, - boolean isEngineeringInterfacePerson) { + boolean isEngineeringInterfacePerson, + boolean isHomologationEngineer, + boolean isRegulationOwner) { if(CollectionUtils.isNotEmpty(complianceResultList) && CollectionUtils.isNotEmpty(projectTaskInventoryDetailEOList)){ for (Map complianceResult : complianceResultList) { String designPid = ""; @@ -239,7 +250,8 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi String verifyTaskDefinitionKey = ""; String verifyTaskDetailId = ""; //2022-11-01 增加数据权限:如果当前登录用户,是工程师、工程接口人角色,只能查看到跟自己相关的数据。其余角色保留之前的查询结果。 - if((isEngineer || isEngineeringInterfacePerson)){ + //2022-11-04 增加法规、认证工程师与上方权限一致。 + if((isEngineer || isEngineeringInterfacePerson || isHomologationEngineer || isRegulationOwner)){ for (ProjectTaskInventoryDetailEO projectTaskInventoryDetail : projectTaskInventoryDetailEOList) { if(StringUtils.equals(complianceResult.get("id").toString(),projectTaskInventoryDetail.getProjectTaskInventoryId())){ /** @@ -359,14 +371,20 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi } } - public void disposeComplianceResult(List> complianceResultList,String cut,boolean isEngineer,boolean isEngineeringInterfacePerson){ + public void disposeComplianceResult(List> complianceResultList, + String cut, + boolean isEngineer, + boolean isEngineeringInterfacePerson, + boolean isHomologationEngineer, + boolean isRegulationOwner, + boolean isAdministrator){ if(CollectionUtils.isNotEmpty(complianceResultList)){ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); List dutyTerritoryDictItemList = sysDictItemService.selectItemsByDictCode("duty_territory"); for (Map complianceResult : complianceResultList) { - if(isEngineer || isEngineeringInterfacePerson){ + if((isEngineer || isEngineeringInterfacePerson || isHomologationEngineer || isRegulationOwner) && !isAdministrator){ if(!StringUtils.equals(complianceResult.get("designInitiatorId").toString(),currentUser.getId()) - || !StringUtils.equals(complianceResult.get("designDutyId").toString(),currentUser.getId())){ + && !StringUtils.equals(complianceResult.get("designDutyId").toString(),currentUser.getId())){ complianceResult.put("designStatus",""); complianceResult.put("designFlowTaskStatus",""); complianceResult.put("designPId",""); @@ -461,9 +479,12 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi List> exportData = new ArrayList<>(); LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + boolean isAdministrator = this.sysUserService.isAdministrator(); boolean isEngineer = this.sysUserService.isEngineer(currentUser); boolean isEngineeringInterfacePerson = this.sysUserService.isEngineeringInterfacePerson(currentUser); - if(isEngineer || isEngineeringInterfacePerson){ + boolean isHomologationEngineer = this.sysUserService.isHomologationEngineer(currentUser); + boolean isRegulationOwner = this.sysUserService.isRegulationOwner(currentUser); + if((isEngineer || isEngineeringInterfacePerson || isHomologationEngineer || isRegulationOwner) && !isAdministrator){ params.put("currentUserId",currentUser.getId()); params.put("isEngineerOrEngineeringInterfacePerson",true); } @@ -484,7 +505,7 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi List> complianceResultList = new ArrayList<>(); if(CollectionUtils.isNotEmpty(idList)){ complianceResultList = this.lawsComplianceBoardMapper.queryComplianceResultList(params); - this.disposeComplianceResult(complianceResultList,cut,isEngineer,isEngineeringInterfacePerson); + this.disposeComplianceResult(complianceResultList,cut,isEngineer,isEngineeringInterfacePerson,isHomologationEngineer,isRegulationOwner,isAdministrator); } String title = ""; @@ -596,16 +617,20 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi String cut = (String) params.get("cut"); /** * 2022-11-01 增加数据权限:如果当前登录用户,是工程师、工程接口人角色,只能查看到跟自己相关的数据。其余角色保留之前的查询结果。 + * 2022-11-04 增加法规、认证工程师与上方权限一致。 */ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + boolean isAdministrator = this.sysUserService.isAdministrator(); boolean isEngineer = this.sysUserService.isEngineer(currentUser); boolean isEngineeringInterfacePerson = this.sysUserService.isEngineeringInterfacePerson(currentUser); - if(isEngineer || isEngineeringInterfacePerson){ + boolean isHomologationEngineer = this.sysUserService.isHomologationEngineer(currentUser); + boolean isRegulationOwner = this.sysUserService.isRegulationOwner(currentUser); + if((isEngineer || isEngineeringInterfacePerson || isHomologationEngineer || isRegulationOwner) && !isAdministrator){ params.put("currentUserId",currentUser.getId()); params.put("isEngineerOrEngineeringInterfacePerson",true); } List> exportData = this.lawsComplianceBoardMapper.queryComplianceResultList(params); - this.disposeComplianceResult(exportData,cut,isEngineer,isEngineeringInterfacePerson); + this.disposeComplianceResult(exportData,cut,isEngineer,isEngineeringInterfacePerson,isHomologationEngineer,isRegulationOwner,isAdministrator); String title = ""; String fileName = ""; if(StringUtils.equals(cut, CutEnum.CN.getValue())){ diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml index 94edf9561..81b37fa4c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml @@ -88,7 +88,8 @@ LEFT JOIN sys_user createBy on createBy.id = pi.create_by LEFT JOIN buss_document_library bdl ON pi.buss_document_library_id = bdl.id - and pi.id IN ( + + and pi.id IN ( SELECT pid.process_info_id FROM @@ -99,7 +100,9 @@ and pid.status = #{params.taskStatus} - ) + ) + + and pi.flow_type in @@ -287,18 +290,20 @@ #{item} - and ( - pi.id IN ( - SELECT - pid.process_info_id - FROM - process_info_detail pid - where pid.user_id = #{params.currentUserId} - - and pid.status = #{params.taskStatus} - + + and ( + pi.id IN ( + SELECT + pid.process_info_id + FROM + process_info_detail pid + where pid.user_id = #{params.currentUserId} + + and pid.status = #{params.taskStatus} + + ) ) - ) + and pi.create_by = #{params.createBy}