fix: 78192

企业标准-临时权限设置 没有查看权限的人进行设置,操作成功了
This commit is contained in:
2023-11-07 11:26:03 +08:00
parent 860092acfa
commit 44f6fd2d62
5 changed files with 93 additions and 3 deletions
@@ -89,4 +89,6 @@ public class ResultCommon {
public static final String FOLDER_ONLY_ONE = "folder.only.one";
public static final String YOU_HAVE_NOT_DATA_AUTH = "you.have.not.data.auth";
}
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.constant.ResultCommon;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
@@ -68,6 +69,14 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Override
public void saveTempPermission(LawsStandardTempPermission lawsStandardTempPermission) {
List<String> standardIdList = lawsStandardTempPermission.getStandardIdList();
for (String id : standardIdList) {
if (!this.hasESAuth(UserUtils.getUserId(), Collections.singletonList(id))) {
LawsEnterpriseStandard es = enterpriseStandardService.getById(id);
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.YOU_HAVE_NOT_DATA_AUTH, es.getStandardNumber()));
}
}
List<EnterpriseStandardAuthUser> esAuthUsers = new ArrayList<>();
for (String standardId : lawsStandardTempPermission.getStandardIdList()) {
for (String userId : lawsStandardTempPermission.getUserIdList()) {
@@ -152,6 +161,82 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
}
public boolean hasESAuth(String userId, List<String> standardIds) {
List<Map<String, Object>> records = new ArrayList<>();
for (String id : standardIds) {
Map<String, Object> map = new HashMap<>();
map.put(FieldCommon.ID, id);
records.add(map);
}
List<DepartIdModel> departIdModels = sysUserDepartService.queryDepartIdsOfUser(userId);
List<String> departIds = departIdModels.stream().map(DepartIdModel::getKey).collect(Collectors.toList());
List<String> departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList());
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>()
.in(CollUtil.isNotEmpty(standardIds), LawsEnterpriseStandard::getId, standardIds)
.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()));
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getId, e -> e));
// 查询临时授权人员
Date date = new Date();
LambdaQueryWrapper<EnterpriseStandardAuthUser> authUserWrapper = new LambdaQueryWrapper<>();
authUserWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthUser::getStandardId, standardIds);
authUserWrapper.eq(EnterpriseStandardAuthUser::getAuthUser, userId);
authUserWrapper.ge(EnterpriseStandardAuthUser::getAuthExpireDate, date);
List<EnterpriseStandardAuthUser> authUserList = list(authUserWrapper);
Set<String> authStandardIds = authUserList.stream().map(EnterpriseStandardAuthUser::getStandardId).collect(Collectors.toSet());
// 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds);
authDeptWrapper.in(CollUtil.isNotEmpty(departIds), EnterpriseStandardAuthDept::getAuthDept, departIds);
List<EnterpriseStandardAuthDept> 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<LawsEnterpriseStandardLevel> standardLevelList = standardLevelService.list();
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
// 起草部门有所有企标的查看权限
if (!departNames.isEmpty() && departNames.contains(draftDepartName)) {
// 全部设置为有权限
records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, true));
}
for (Map<String, Object> map : records) {
String standardId = (String) map.get(FieldCommon.ID);
LawsEnterpriseStandard es = esMap.get(standardId);
// 授权部门和临时权限
if (authStandardIds.contains(standardId)) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
// 等级分类
String gradeClassification = es.getGradeClassification();
// 全公司可以看
if (gradeClassification.equals("1")) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
// 企标等级分类级别可查看部门
if (gradeClassification.equals("2") || gradeClassification.equals("3") || gradeClassification.equals("4")) {
if (levelDeptIds.stream().anyMatch(departIds::contains)) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
}
map.put(FieldCommon.DETAIL_FLAG, false);
}
// 遍历map
for (Map<String, Object> map : records) {
if (!(boolean) map.get(FieldCommon.DETAIL_FLAG)) {
return false;
}
}
return true;
}
@Override
public void editFlagSet(List<Map<String, Object>> records) {
// 只有创建人和管理员才有维护的权限
@@ -56,4 +56,5 @@ tag.error.2=\u8BE5\u5C55\u793A\u533A\u57DF\u6709\u5173\u8054\u6570\u636E\uFF0C\u
check.data.error=\u8BF7\u9009\u62E9\u6570\u636E
import.template.error=\u5BFC\u5165\u6A21\u677F\u9519\u8BEF
zip.charset.error=zip\u538B\u7F29\u5305\u7F16\u7801\u9519\u8BEF
folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939
folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939
you.have.not.data.auth=\u60A8\u6CA1\u6709{0}\u7684\u6570\u636E\u6743\u9650\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9
@@ -59,4 +59,5 @@ tag.error.2=This exhibition area has associated data and cannot be deleted!
check.data.error=Please select data
import.template.error=Import template error
zip.charset.error=Zip charset error
folder.only.one=Only one folder can be selected
folder.only.one=Only one folder can be selected
you.have.not.data.auth=You haven't data permission of {0}, please select again!
@@ -58,4 +58,5 @@ tag.error.2=\u8BE5\u5C55\u793A\u533A\u57DF\u6709\u5173\u8054\u6570\u636E\uFF0C\u
check.data.error=\u8BF7\u9009\u62E9\u6570\u636E
import.template.error=\u5BFC\u5165\u6A21\u677F\u9519\u8BEF
zip.charset.error=zip\u538B\u7F29\u5305\u7F16\u7801\u9519\u8BEF
folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939
folder.only.one=\u538B\u7F29\u5305\u4E0B\u6709\u4E14\u53EA\u80FD\u6709\u4E00\u4E2A\u6587\u4EF6\u5939
you.have.not.data.auth=\u60A8\u6CA1\u6709{0}\u7684\u6570\u636E\u6743\u9650\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9