feat: 起草部门的人员具有所有企标的查看编辑权限

This commit is contained in:
2023-11-01 17:40:22 +08:00
parent 3b22cbe7d5
commit 616f38bf69
4 changed files with 61 additions and 39 deletions
@@ -95,6 +95,9 @@ public class FieldCommon {
// 被引用标准 // 被引用标准
public static final String REFERENCED_STANDARD = "referenced_standard"; public static final String REFERENCED_STANDARD = "referenced_standard";
// 授权部门
public static final String AUTH_DEPT = "auth_dept";
// 字典值统一后缀 // 字典值统一后缀
public static final String _DICT_TEXT = "_dictText"; public static final String _DICT_TEXT = "_dictText";
// 标准拆分单后缀 // 标准拆分单后缀
@@ -762,6 +762,9 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
lawsNodeRelationService.removeByStandardId(id); lawsNodeRelationService.removeByStandardId(id);
lawsNodeRelationService.addRelation(standardSystem, standardNumber, id); lawsNodeRelationService.addRelation(standardSystem, standardNumber, id);
// 企标授权部门处理
esAuthUserService.resetAuthDept(id, parameterMap.get(FieldCommon.AUTH_DEPT).toString());
return MessageUtils.getMessage(ResultCommon.OK); return MessageUtils.getMessage(ResultCommon.OK);
} }
@@ -31,4 +31,11 @@ public interface EnterpriseStandardAuthUserService extends IService<EnterpriseSt
boolean detailPermissionByUser(String standardNumber, String userId, String user); boolean detailPermissionByUser(String standardNumber, String userId, String user);
boolean verifyESDeleteAuth(String ids, String userId); boolean verifyESDeleteAuth(String ids, String userId);
/**
* 企标编辑保存后 重置授权部门
* @param id
* @param string
*/
void resetAuthDept(String id,String string);
} }
@@ -18,10 +18,9 @@ import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel; import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel;
import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService; import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService;
import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysDepartService; import com.jero.modules.system.model.DepartIdModel;
import com.jero.modules.system.service.ISysRoleService; import com.jero.modules.system.service.ISysUserDepartService;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -49,9 +48,6 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Resource @Resource
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Resource
private ISysDepartService sysDepartService;
@Resource @Resource
private ILawsEnterpriseStandardService enterpriseStandardService; private ILawsEnterpriseStandardService enterpriseStandardService;
@@ -59,10 +55,10 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
private ILawsEnterpriseStandardLevelService standardLevelService; private ILawsEnterpriseStandardLevelService standardLevelService;
@Resource @Resource
private ISysRoleService sysRoleService; private ISysUserService sysUserRoleService;
@Resource @Resource
private ISysUserService sysUserRoleService; private ISysUserDepartService sysUserDepartService;
// 注入draftDepartName // 注入draftDepartName
@Value("${draftDepartName}") @Value("${draftDepartName}")
@@ -91,9 +87,9 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, false)); records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, false));
SysUser currentUser = sysUserService.getById(UserUtils.getUserId()); SysUser currentUser = sysUserService.getById(UserUtils.getUserId());
String userId = currentUser.getId(); String userId = currentUser.getId();
String deptId = currentUser.getDepartIds(); List<DepartIdModel> departIdModels = sysUserDepartService.queryDepartIdsOfUser(userId);
SysDepart dept = sysDepartService.getById(deptId); List<String> departIds = departIdModels.stream().map(DepartIdModel::getKey).collect(Collectors.toList());
String curDeptName = dept == null ? "" : dept.getDepartName(); List<String> departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList());
List<String> standardIds = new ArrayList<>(); List<String> standardIds = new ArrayList<>();
records.forEach(kv -> standardIds.add(String.valueOf(kv.get(FieldCommon.ID)))); records.forEach(kv -> standardIds.add(String.valueOf(kv.get(FieldCommon.ID))));
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>() List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>()
@@ -113,7 +109,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 查询授权部门-和临时授权部门 // 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds); authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds);
authDeptWrapper.eq(EnterpriseStandardAuthDept::getAuthDept, deptId); authDeptWrapper.in(EnterpriseStandardAuthDept::getAuthDept, departIds);
List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper); List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper);
authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date);
authDeptList.addAll(authDeptService.list(authDeptWrapper)); authDeptList.addAll(authDeptService.list(authDeptWrapper));
@@ -124,45 +120,32 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
// 起草部门有所有企标的查看权限 // 起草部门有所有企标的查看权限
if (draftDepartName.equals(curDeptName)) { if (!departNames.isEmpty() && departNames.contains(draftDepartName)) {
// 全部设置为有权限 // 全部设置为有权限
records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, true)); records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, true));
} }
for (Map<String, Object> map : records) { for (Map<String, Object> map : records) {
String standardId = (String) map.get(FieldCommon.ID); String standardId = (String) map.get(FieldCommon.ID);
LawsEnterpriseStandard es = esMap.get(standardId); LawsEnterpriseStandard es = esMap.get(standardId);
// 等级分类 // 授权部门和临时权限
String gradeClassification = es.getGradeClassification(); if (authStandardIds.contains(standardId)) {
String mainDraftUser = es.getMainDraftingUser();
// 主起草人可以看
if (userId.equals(mainDraftUser)) {
map.put(FieldCommon.DETAIL_FLAG, true); map.put(FieldCommon.DETAIL_FLAG, true);
continue; continue;
} }
// 等级分类
String gradeClassification = es.getGradeClassification();
// 全公司可以看 // 全公司可以看
if (gradeClassification.equals("1")) { if (gradeClassification.equals("1")) {
map.put(FieldCommon.DETAIL_FLAG, true); map.put(FieldCommon.DETAIL_FLAG, true);
continue; continue;
} }
// 企标等级分类级别可查看部门 // 企标等级分类级别可查看部门
if (gradeClassification.equals("2") || gradeClassification.equals("3")) { if (gradeClassification.equals("2") || gradeClassification.equals("3") || gradeClassification.equals("4")) {
if (levelDeptIds.contains(deptId)) { if (levelDeptIds.stream().anyMatch(departIds::contains)) {
map.put(FieldCommon.DETAIL_FLAG, true); map.put(FieldCommon.DETAIL_FLAG, true);
continue; continue;
} }
} }
// 企标等级分类级别可查看部门
if (gradeClassification.equals("4")) {
if (deptId.equals(es.getMainDraftingUnit())) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
}
// 授权部门和临时权限
if (authStandardIds.contains(standardId)) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
map.put(FieldCommon.DETAIL_FLAG, false); map.put(FieldCommon.DETAIL_FLAG, false);
} }
@@ -173,6 +156,14 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 只有创建人和管理员才有维护的权限 // 只有创建人和管理员才有维护的权限
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
SysUser currentUser = sysUserService.getById(userId); SysUser currentUser = sysUserService.getById(userId);
// 起草部门的人也有维护的权限
List<DepartIdModel> departIdModels = sysUserDepartService.queryDepartIdsOfUser(userId);
List<String> departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList());
// 起草部门有全部企标的查看权限
if (departNames.contains(draftDepartName)) {
records.forEach(kv -> kv.put(FieldCommon.EDIT_FLAG, true));
return;
}
// 获取当前用户的角色roleCode // 获取当前用户的角色roleCode
List<String> roleList = sysUserRoleService.getRole(currentUser.getUsername()); List<String> roleList = sysUserRoleService.getRole(currentUser.getUsername());
if (roleList != null && roleList.contains(FieldCommon.ROLE_ADMIN)) { if (roleList != null && roleList.contains(FieldCommon.ROLE_ADMIN)) {
@@ -191,12 +182,11 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Override @Override
public boolean detailPermissionByUser(String standardId, String standardNumber, String userId) { public boolean detailPermissionByUser(String standardId, String standardNumber, String userId) {
SysUser user = sysUserService.getById(userId); List<DepartIdModel> departIdModels = sysUserDepartService.queryDepartIdsOfUser(userId);
String deptId = user.getDepartIds(); List<String> departIds = departIdModels.stream().map(DepartIdModel::getKey).collect(Collectors.toList());
SysDepart dept = sysDepartService.getById(deptId); List<String> departNames = departIdModels.stream().map(DepartIdModel::getTitle).collect(Collectors.toList());
String curDeptName = dept == null ? "" : dept.getDepartName();
// 起草部门有全部企标的查看权限 // 起草部门有全部企标的查看权限
if (draftDepartName.equals(curDeptName)) { if (departNames.contains(draftDepartName)) {
return true; return true;
} }
@@ -218,7 +208,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 企标级别授权的部门 // 企标级别授权的部门
List<LawsEnterpriseStandardLevel> standardLevelList = standardLevelService.list(); List<LawsEnterpriseStandardLevel> standardLevelList = standardLevelService.list();
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()); List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
if (levelDeptIds.contains(deptId)) { if (levelDeptIds.stream().anyMatch(departIds::contains)) {
return true; return true;
} }
} }
@@ -236,7 +226,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 查询授权部门-和临时授权部门 // 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, standardId); authDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, standardId);
authDeptWrapper.eq(EnterpriseStandardAuthDept::getAuthDept, deptId); authDeptWrapper.in(EnterpriseStandardAuthDept::getAuthDept, departIds);
authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date); authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date);
List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper); List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper);
if (authDeptList.size() > 0) { if (authDeptList.size() > 0) {
@@ -272,6 +262,25 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
} }
return true; return true;
} }
@Override
public void resetAuthDept(String id, String authDept) {
// 逗号拼接转换List
String[] authDeptIdList = authDept.split(",");
// 先删后增
LambdaQueryWrapper<EnterpriseStandardAuthDept> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EnterpriseStandardAuthDept::getStandardId, id);
authDeptService.remove(wrapper);
List<EnterpriseStandardAuthDept> authDeptList = new ArrayList<>();
for (String deptId : authDeptIdList) {
EnterpriseStandardAuthDept authDept1 = new EnterpriseStandardAuthDept();
authDept1.setStandardId(id);
authDept1.setAuthDept(deptId);
authDeptList.add(authDept1);
}
authDeptService.saveBatch(authDeptList);
}
} }