feat: 外标引用标准列表权限

This commit is contained in:
2024-04-11 09:14:18 +08:00
parent e227a12404
commit c65befd0d8
3 changed files with 111 additions and 10 deletions
@@ -1,6 +1,7 @@
package com.jero.modules.laws.common.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
@@ -32,6 +33,7 @@ import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit;
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardAuthUserMapper;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectContentService;
@@ -52,11 +54,13 @@ import com.jero.modules.personal.service.ILawsStandardCollectionService;
import com.jero.modules.split.common.FileUnZip;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.sys.service.ILawsGradeService;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysUserDepartService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.util.SysWaterMarkUtil;
import com.jero.modules.system.util.UserUtils;
@@ -201,6 +205,24 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
DECRYPT_SECRET_KEY = decryptSecretKey;
}
@Resource
private ISysUserService sysUserRoleService;
@Resource
private ISysUserDepartService sysUserDepartService;
@Resource
private ILawsGradeService gradeService;
@Resource
private EnterpriseStandardAuthUserMapper authUserMapper;
@Value("#{'${adminRoleCode}'.split(',')}")
private List<String> adminRoleCodeList;
@Value("#{'${enterpriseDetailRoleCode}'.split(',')}")
private List<String> enterpriseDetailRoleCodeList;
/**
* @Author: liao
* @Date: 2023/8/23 16:57
@@ -913,7 +935,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
lawsNodeRelationService.addRelation(standardSystem, standardNumber, id);
// 企标授权部门处理
if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(module)) {
if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(module) ||
TableNameEnum.FOREIGN_REGULATIONS.getValue().equals(module)) {
Object authDept = parameterMap.get(FieldCommon.AUTH_DEPT);
if (authDept != null) {
esAuthUserService.resetAuthDept(id, parameterMap.get(FieldCommon.AUTH_DEPT).toString());
@@ -1302,7 +1325,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
List<EnterpriseStandardAuthDept> authDeptList = enterpriseAuthDeptService.list(authDeptWrapper);
// 将authDeptList的所有auth_dept取出来转换成逗号拼接的字符串
if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())) {
if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue()) ||
module.equals(TableNameEnum.FOREIGN_REGULATIONS.getValue())) {
String authDept = authDeptList.stream().map(EnterpriseStandardAuthDept::getAuthDept)
.collect(Collectors.joining(","));
initMap.put(FieldCommon.AUTH_DEPT, authDept);
@@ -2092,7 +2116,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
// 拼接多表关联查询条件
Set<String> idSet = new HashSet<>();
boolean idSearch = false;
// 企标独有权限
// 授权部门
if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())) {
// 授权部门
String authDept = (String) parameterMap.get(FieldCommon.AUTH_DEPT);
@@ -2106,15 +2130,52 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
parameterMap.remove(FieldCommon.AUTH_DEPT);
}
}
if (module.equals(TableNameEnum.FOREIGN_REGULATIONS.getValue())) {
// 外标判断当前登陆人是不是汽车研究总院及子部门的员工,如果是则可以查看引进标准,不做任何操作
// 如果不是则需要将引进标准的id从所有id中排除掉
// 外标引用标准
// 如果当前登陆人是那几种管理员角色,则不需要授权部门筛选
String userId = UserUtils.getUserId();
SysUser user = sysUserService.getById(userId);
// 管理员有所有外标的权限
List<String> roleList = sysUserRoleService.getRole(user.getUsername());
adminRoleCodeList.addAll(enterpriseDetailRoleCodeList);
if (module.equals(TableNameEnum.FOREIGN_REGULATIONS.getValue())
&& roleList != null
&& roleList.stream().noneMatch(adminRoleCodeList::contains)) {
// 获取汽车研发总院及其所有子部门
List<SysDepartTreeModel> departList = departService.queryTreeByKeyWord("汽车研究总院");
List<String> departIdList = departList.stream().map(SysDepartTreeModel::getId).collect(Collectors.toList());
String userId = UserUtils.getUserId();
// sysUserService.getUserByDepIds()
List<String> departIdList = departService.getAllId(departList);
List<SysUser> userByDepIds = sysUserService.getUserByDepIds(departIdList, user.getUsername());
List<LawsOverseasStandard> list = lawsOverseasStandardService.list();
List<String> allFbIdList = list.stream().map(LawsOverseasStandard::getId).collect(Collectors.toList());
LambdaQueryWrapper<LawsTreeNode> treeNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getNodeName, "引进标准");
treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getModuleCode, TableNameEnum.FOREIGN_REGULATIONS.getValue());
LawsTreeNode node = lawsTreeNodeService.getOne(treeNodeLambdaQueryWrapper);
// 获取引进标准的id
LambdaQueryWrapper<LawsNodeRelation> nodeRelationLambdaQueryWrapper = new LambdaQueryWrapper<>();
nodeRelationLambdaQueryWrapper.eq(LawsNodeRelation::getNodeId, node.getId());
List<LawsNodeRelation> fbList = lawsNodeRelationService.list(nodeRelationLambdaQueryWrapper);
List<String> fbIdList = fbList.stream().map(LawsNodeRelation::getUniqueRelationFlag).collect(Collectors.toList());
idSearch = true;
// 外标判断当前登陆人是不是汽车研究总院及子部门的员工,如果是则根据授权部门进行权限限制
// 如果不是则需要将引进标准的id从所有id中排除掉
if (!CollectionUtils.isEmpty(userByDepIds)) {
LambdaQueryWrapper<EnterpriseStandardAuthDept> esAdWrapper = new LambdaQueryWrapper<>();
// 查询当前用户的部门
List<SysDepart> userDepartList = departService.queryUserDeparts(user.getId());
// 找出授权部门表有的数据
List<String> userDepartIdList = userDepartList.stream().map(SysDepart::getId).collect(Collectors.toList());
esAdWrapper.in(!userDepartIdList.isEmpty(), EnterpriseStandardAuthDept::getAuthDept, userDepartIdList);
esAdWrapper.in(!fbIdList.isEmpty(), EnterpriseStandardAuthDept::getStandardId, fbIdList);
esAdWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate);
List<EnterpriseStandardAuthDept> authDeptFb = enterpriseAuthDeptService.list(esAdWrapper);
List<String> authDeptIdList = authDeptFb.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toList());
if (fbIdList.size() == authDeptIdList.size()) {
idSearch = false;
}
fbIdList.removeAll(authDeptIdList);
}
allFbIdList.removeAll(fbIdList);
idSet.addAll(allFbIdList);
}
// 体系
String standardSystem = (String) parameterMap.get(FieldCommon.STANDARD_SYSTEM);