From 765f5a3b9e719b7a76f82affc255288d123368fc Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 13 Nov 2023 10:58:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...EnterpriseStandardAuthUserServiceImpl.java | 214 +++++++++++++++--- 1 file changed, 178 insertions(+), 36 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java index 0b298904..63c51d54 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java @@ -1,6 +1,7 @@ package com.jero.modules.laws.enterprise.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.constant.enums.YesOrNoEnum; @@ -133,16 +134,35 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl authUserList = list(authUserWrapper); - Set authStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); + Set tempAuthStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); + // 查询临时授权部门 + LambdaQueryWrapper tempAuthDeptWrapper = new LambdaQueryWrapper<>(); + tempAuthDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds); + tempAuthDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); + tempAuthDeptWrapper.isNotNull(EnterpriseStandardAuthDept::getAuthExpireDate); + tempAuthDeptWrapper.isNotNull(EnterpriseStandardAuthDept::getAuthDept); + List tempAuthDeptList = authDeptService.list(tempAuthDeptWrapper); + tempAuthDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); + tempAuthDeptList.addAll(authDeptService.list(tempAuthDeptWrapper)); + // 找出授权部门 和 临时授权部门 + tempAuthStandardIds.addAll(tempAuthDeptList.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toSet())); - // 查询授权部门-和临时授权部门 + // 查询授权部门 LambdaQueryWrapper authDeptWrapper = new LambdaQueryWrapper<>(); authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds); - authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); + authDeptWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate); List authDeptList = authDeptService.list(authDeptWrapper); - authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); authDeptList.addAll(authDeptService.list(authDeptWrapper)); - authStandardIds.addAll(authDeptList.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toSet())); + + // 企标级别授权的部门 + List standardLevelList = standardLevelService.list(); + List gradeList = gradeService.list(); + Map gradeMap = gradeList.stream().collect(Collectors.toMap(LawsGrade::getLevel, e -> e)); + + List levelOneDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(1).getId())) + .map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); + List levelTwoDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(2).getId())) + .map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); // 起草部门有所有企标的查看权限 if (!departNames.isEmpty() && departNames.contains(draftDepartName)) { @@ -152,9 +172,14 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl map : records) { String standardId = (String) map.get(FieldCommon.ID); + Set curAuthSet = authDeptList.stream() + .filter(e -> e.getAuthDept() != null) + .filter(e -> StrUtil.isNotEmpty(e.getAuthDept())) + .filter(e -> e.getStandardId().equals(standardId)) + .collect(Collectors.toSet()); LawsEnterpriseStandard es = esMap.get(standardId); - // 授权部门和临时权限 - if (authStandardIds.contains(standardId)) { + // 临时权限 + if (tempAuthStandardIds.contains(standardId)) { map.put(FieldCommon.DETAIL_FLAG, true); continue; } @@ -165,6 +190,28 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl 0) { + // 如果授权部门不等于0 + if (curAuthSet.stream().map(EnterpriseStandardAuthDept::getAuthDept).anyMatch(departIds::contains)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + } else { + // 企标等级分类级别可查看部门 + if ("2".equals(gradeClassification)) { + if (levelOneDeptIds.stream().anyMatch(departIds::contains)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + } + if ("3".equals(gradeClassification)) { + if (levelTwoDeptIds.stream().anyMatch(departIds::contains)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + } + } map.put(FieldCommon.DETAIL_FLAG, false); } @@ -200,37 +247,77 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl authUserList = list(authUserWrapper); - Set authStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); + Set tempAuthStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); + // 查询临时授权部门 + LambdaQueryWrapper tempAuthDeptWrapper = new LambdaQueryWrapper<>(); + tempAuthDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds); + tempAuthDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); + tempAuthDeptWrapper.isNotNull(EnterpriseStandardAuthDept::getAuthExpireDate); + tempAuthDeptWrapper.isNotNull(EnterpriseStandardAuthDept::getAuthDept); + List tempAuthDeptList = authDeptService.list(tempAuthDeptWrapper); + tempAuthDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); + tempAuthDeptList.addAll(authDeptService.list(tempAuthDeptWrapper)); + // 找出授权部门 和 临时授权部门 + tempAuthStandardIds.addAll(tempAuthDeptList.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toSet())); - // 查询授权部门-和临时授权部门 + // 查询授权部门 LambdaQueryWrapper authDeptWrapper = new LambdaQueryWrapper<>(); authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds); - authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); + authDeptWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate); List authDeptList = authDeptService.list(authDeptWrapper); - authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); authDeptList.addAll(authDeptService.list(authDeptWrapper)); - authStandardIds.addAll(authDeptList.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toSet())); + + // 企标级别授权的部门 + List standardLevelList = standardLevelService.list(); + List gradeList = gradeService.list(); + Map gradeMap = gradeList.stream().collect(Collectors.toMap(LawsGrade::getLevel, e -> e)); + + List levelOneDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(1).getId())) + .map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); + List levelTwoDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(2).getId())) + .map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); // 起草部门有所有企标的查看权限 if (!departNames.isEmpty() && departNames.contains(draftDepartName)) { // 全部设置为有权限 records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, true)); - return true; } for (Map map : records) { String standardId = (String) map.get(FieldCommon.ID); + Set curAuthSet = authDeptList.stream() + .filter(e -> e.getAuthDept() != null) + .filter(e -> StrUtil.isNotEmpty(e.getAuthDept())) + .filter(e -> e.getStandardId().equals(standardId)) + .collect(Collectors.toSet()); LawsEnterpriseStandard es = esMap.get(standardId); - // 授权部门和临时权限 - if (authStandardIds.contains(standardId)) { + // 临时权限 + if (tempAuthStandardIds.contains(standardId)) { map.put(FieldCommon.DETAIL_FLAG, true); continue; } // 等级分类 String gradeClassification = es.getGradeClassification(); - // 全公司可以看 - if ("1".equals(gradeClassification)) { - map.put(FieldCommon.DETAIL_FLAG, true); - continue; + // 授权部门 + if (curAuthSet.size() > 0) { + // 如果授权部门不等于0 + if (curAuthSet.stream().map(EnterpriseStandardAuthDept::getAuthDept).anyMatch(departIds::contains)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + } else { + // 企标等级分类级别可查看部门 + if ("2".equals(gradeClassification)) { + if (levelOneDeptIds.stream().anyMatch(departIds::contains)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + } + if ("3".equals(gradeClassification)) { + if (levelTwoDeptIds.stream().anyMatch(departIds::contains)) { + map.put(FieldCommon.DETAIL_FLAG, true); + continue; + } + } } map.put(FieldCommon.DETAIL_FLAG, false); } @@ -369,10 +456,6 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl departIdModels = sysUserDepartService.queryDepartIdsOfUser(userId); List departIds = departIdModels.stream().map(DepartIdModel::getKey).collect(Collectors.toList()); List departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList()); - // 起草部门有全部企标的查看权限 - if (departNames.contains(draftDepartName)) { - return true; - } if (StringUtils.isBlank(standardId) && StringUtils.isBlank(standardNumber)) { throw new JeroBootException(ResultCommon.EMPTY_COMMON, "id和标准号不能同时为空"); @@ -383,12 +466,6 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl authUserList = list(authUserWrapper); - if (authUserList.size() > 0) { - return true; - } - // 查询授权部门-和临时授权部门 + Set tempAuthStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet()); + // 查询临时授权部门 + LambdaQueryWrapper tempAuthDeptWrapper = new LambdaQueryWrapper<>(); + tempAuthDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, standardId); + tempAuthDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); + tempAuthDeptWrapper.isNotNull(EnterpriseStandardAuthDept::getAuthExpireDate); + tempAuthDeptWrapper.isNotNull(EnterpriseStandardAuthDept::getAuthDept); + List tempAuthDeptList = authDeptService.list(tempAuthDeptWrapper); + tempAuthDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); + tempAuthDeptList.addAll(authDeptService.list(tempAuthDeptWrapper)); + // 找出授权部门 和 临时授权部门 + tempAuthStandardIds.addAll(tempAuthDeptList.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toSet())); + + // 查询授权部门 LambdaQueryWrapper authDeptWrapper = new LambdaQueryWrapper<>(); authDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, standardId); - authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds); - authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); + authDeptWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate); List authDeptList = authDeptService.list(authDeptWrapper); - if (authDeptList.size() > 0) { + authDeptList.addAll(authDeptService.list(authDeptWrapper)); + + // 企标级别授权的部门 + List standardLevelList = standardLevelService.list(); + List gradeList = gradeService.list(); + Map gradeMap = gradeList.stream().collect(Collectors.toMap(LawsGrade::getLevel, e -> e)); + + List levelOneDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(1).getId())) + .map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); + List levelTwoDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(2).getId())) + .map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); + + // 起草部门有所有企标的查看权限 + if (!departNames.isEmpty() && departNames.contains(draftDepartName)) { + // 全部设置为有权限 return true; } + + String finalStandardId = standardId; + Set curAuthSet = authDeptList.stream() + .filter(e -> e.getAuthDept() != null) + .filter(e -> StrUtil.isNotEmpty(e.getAuthDept())) + .filter(e -> e.getStandardId().equals(finalStandardId)) + .collect(Collectors.toSet()); + + LawsEnterpriseStandard es = enterpriseStandardService.getById(standardId); + + // 临时权限 + if (tempAuthStandardIds.contains(standardId)) { + return true; + } + // 等级分类 + String gradeClassification = es.getGradeClassification(); + // 全公司可以看 + if ("1".equals(gradeClassification)) { + return true; + } + // 授权部门 + if (curAuthSet.size() > 0) { + // 如果授权部门不等于0 + if (curAuthSet.stream().map(EnterpriseStandardAuthDept::getAuthDept).anyMatch(departIds::contains)) { + return true; + } + } else { + // 企标等级分类级别可查看部门 + if ("2".equals(gradeClassification)) { + if (levelOneDeptIds.stream().anyMatch(departIds::contains)) { + return true; + } + } + if ("3".equals(gradeClassification)) { + if (levelTwoDeptIds.stream().anyMatch(departIds::contains)) { + return true; + } + } + } return false; } @@ -459,6 +598,9 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl authDeptList = new ArrayList<>(); + if (authDeptIdList.length == 0) { + return; + } for (String deptId : authDeptIdList) { EnterpriseStandardAuthDept authDept1 = new EnterpriseStandardAuthDept(); authDept1.setStandardId(id);