fix: 企标等级映射二级三级问题

This commit is contained in:
2023-11-12 19:30:04 +08:00
parent 662e7c36e5
commit f94ab7ea9a
@@ -17,7 +17,9 @@ import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.entity.LawsStandardTempPermission;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel;
import com.jero.modules.sys.entity.LawsGrade;
import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService;
import com.jero.modules.sys.service.ILawsGradeService;
import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.model.DepartIdModel;
@@ -66,6 +68,9 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Value("${draftDepartName}")
private String draftDepartName;
@Resource
private ILawsGradeService gradeService;
@Override
public void saveTempPermission(LawsStandardTempPermission lawsStandardTempPermission) {
@@ -141,7 +146,13 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 企标级别授权的部门
List<LawsEnterpriseStandardLevel> standardLevelList = standardLevelService.list();
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
List<LawsGrade> gradeList = gradeService.list();
Map<Integer, LawsGrade> gradeMap = gradeList.stream().collect(Collectors.toMap(LawsGrade::getLevel, e -> e));
List<String> levelOneDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(1).getId()))
.map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
List<String> levelTwoDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(2).getId()))
.map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
// 起草部门有所有企标的查看权限
if (!departNames.isEmpty() && departNames.contains(draftDepartName)) {
@@ -151,7 +162,6 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
for (Map<String, Object> map : records) {
String standardId = (String) map.get(FieldCommon.ID);
LawsEnterpriseStandard es = esMap.get(standardId);
String mainDraftingUnit = es.getMainDraftingUnit();
// 授权部门和临时权限
if (authStandardIds.contains(standardId)) {
map.put(FieldCommon.DETAIL_FLAG, true);
@@ -165,8 +175,14 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
continue;
}
// 企标等级分类级别可查看部门
if ("2".equals(gradeClassification) || "3".equals(gradeClassification)) {
if (levelDeptIds.stream().anyMatch(departIds::contains)) {
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;
}
@@ -177,6 +193,13 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
}
public boolean hasESAuth(String userId, List<String> standardIds) {
SysUser currentUser = sysUserService.getById(userId);
// 管理员有所有企标的权限
List<String> roleList = sysUserRoleService.getRole(currentUser.getUsername());
if (roleList != null && roleList.contains(FieldCommon.ROLE_ADMIN)) {
return true;
}
List<Map<String, Object>> records = new ArrayList<>();
for (String id : standardIds) {
Map<String, Object> map = new HashMap<>();
@@ -212,7 +235,14 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 企标级别授权的部门
List<LawsEnterpriseStandardLevel> standardLevelList = standardLevelService.list();
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
List<LawsGrade> gradeList = gradeService.list();
Map<Integer, LawsGrade> gradeMap = gradeList.stream().collect(Collectors.toMap(LawsGrade::getLevel, e -> e));
List<String> levelOneDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(1).getId()))
.map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
List<String> levelTwoDeptIds = standardLevelList.stream().filter(l -> l.getGradeId().equals(gradeMap.get(2).getId()))
.map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
// 起草部门有所有企标的查看权限
if (!departNames.isEmpty() && departNames.contains(draftDepartName)) {
@@ -230,13 +260,19 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 等级分类
String gradeClassification = es.getGradeClassification();
// 全公司可以看
if (gradeClassification.equals("1")) {
if ("1".equals(gradeClassification)) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
// 企标等级分类级别可查看部门
if (gradeClassification.equals("2") || gradeClassification.equals("3") || gradeClassification.equals("4")) {
if (levelDeptIds.stream().anyMatch(departIds::contains)) {
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;
}