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 AUTH_DEPT = "auth_dept";
// 字典值统一后缀
public static final String _DICT_TEXT = "_dictText";
// 标准拆分单后缀
@@ -762,6 +762,9 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
lawsNodeRelationService.removeByStandardId(id);
lawsNodeRelationService.addRelation(standardSystem, standardNumber, id);
// 企标授权部门处理
esAuthUserService.resetAuthDept(id, parameterMap.get(FieldCommon.AUTH_DEPT).toString());
return MessageUtils.getMessage(ResultCommon.OK);
}
@@ -31,4 +31,11 @@ public interface EnterpriseStandardAuthUserService extends IService<EnterpriseSt
boolean detailPermissionByUser(String standardNumber, String userId, String user);
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.service.ILawsEnterpriseStandardLevelService;
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.service.ISysDepartService;
import com.jero.modules.system.service.ISysRoleService;
import com.jero.modules.system.model.DepartIdModel;
import com.jero.modules.system.service.ISysUserDepartService;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -49,9 +48,6 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Resource
private ISysUserService sysUserService;
@Resource
private ISysDepartService sysDepartService;
@Resource
private ILawsEnterpriseStandardService enterpriseStandardService;
@@ -59,10 +55,10 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
private ILawsEnterpriseStandardLevelService standardLevelService;
@Resource
private ISysRoleService sysRoleService;
private ISysUserService sysUserRoleService;
@Resource
private ISysUserService sysUserRoleService;
private ISysUserDepartService sysUserDepartService;
// 注入draftDepartName
@Value("${draftDepartName}")
@@ -91,9 +87,9 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, false));
SysUser currentUser = sysUserService.getById(UserUtils.getUserId());
String userId = currentUser.getId();
String deptId = currentUser.getDepartIds();
SysDepart dept = sysDepartService.getById(deptId);
String curDeptName = dept == null ? "" : dept.getDepartName();
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<String> standardIds = new ArrayList<>();
records.forEach(kv -> standardIds.add(String.valueOf(kv.get(FieldCommon.ID))));
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>()
@@ -113,7 +109,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.in(CollUtil.isNotEmpty(standardIds), EnterpriseStandardAuthDept::getStandardId, standardIds);
authDeptWrapper.eq(EnterpriseStandardAuthDept::getAuthDept, deptId);
authDeptWrapper.in(EnterpriseStandardAuthDept::getAuthDept, departIds);
List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper);
authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date);
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());
// 起草部门有所有企标的查看权限
if (draftDepartName.equals(curDeptName)) {
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);
// 等级分类
String gradeClassification = es.getGradeClassification();
String mainDraftUser = es.getMainDraftingUser();
// 主起草人可以看
if (userId.equals(mainDraftUser)) {
// 授权部门和临时权限
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")) {
if (levelDeptIds.contains(deptId)) {
if (gradeClassification.equals("2") || gradeClassification.equals("3") || gradeClassification.equals("4")) {
if (levelDeptIds.stream().anyMatch(departIds::contains)) {
map.put(FieldCommon.DETAIL_FLAG, true);
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);
}
@@ -173,6 +156,14 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 只有创建人和管理员才有维护的权限
String userId = UserUtils.getUserId();
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
List<String> roleList = sysUserRoleService.getRole(currentUser.getUsername());
if (roleList != null && roleList.contains(FieldCommon.ROLE_ADMIN)) {
@@ -191,12 +182,11 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Override
public boolean detailPermissionByUser(String standardId, String standardNumber, String userId) {
SysUser user = sysUserService.getById(userId);
String deptId = user.getDepartIds();
SysDepart dept = sysDepartService.getById(deptId);
String curDeptName = dept == null ? "" : dept.getDepartName();
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());
// 起草部门有全部企标的查看权限
if (draftDepartName.equals(curDeptName)) {
if (departNames.contains(draftDepartName)) {
return true;
}
@@ -218,7 +208,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 企标级别授权的部门
List<LawsEnterpriseStandardLevel> standardLevelList = standardLevelService.list();
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
if (levelDeptIds.contains(deptId)) {
if (levelDeptIds.stream().anyMatch(departIds::contains)) {
return true;
}
}
@@ -236,7 +226,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
// 查询授权部门-和临时授权部门
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
authDeptWrapper.eq(EnterpriseStandardAuthDept::getStandardId, standardId);
authDeptWrapper.eq(EnterpriseStandardAuthDept::getAuthDept, deptId);
authDeptWrapper.in(EnterpriseStandardAuthDept::getAuthDept, departIds);
authDeptWrapper.ge(EnterpriseStandardAuthDept::getAuthExpireDate, date);
List<EnterpriseStandardAuthDept> authDeptList = authDeptService.list(authDeptWrapper);
if (authDeptList.size() > 0) {
@@ -272,6 +262,25 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
}
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);
}
}