1、调整同步的需求权限

This commit is contained in:
2026-02-05 21:55:28 +08:00
parent 19bcad83ee
commit f96c256367
2 changed files with 83 additions and 62 deletions

View File

@@ -355,6 +355,18 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
BatchCreateDirItem projectCreateItem = buildProjectDirItem(projectNode);
List<DirNodeInfo> demandDirNodeList = new ArrayList<>();
// 将利元亨的用户工号与userId映射
Map<String, Long> usernameToUserIdMap = new HashMap<>();
UserListReq userListReq = new UserListReq();
userListReq.setTenantId(tenantId);
userListReq.setCurrent(1);
userListReq.setSize(9999);
SdmResponse<PageDataResp<List<CIDUserResp>>> pageDataRespSdmResponse = sysUserFeignClient.listUser(userListReq);
if (pageDataRespSdmResponse.isSuccess() && pageDataRespSdmResponse.getData().getData() != null) {
List<CIDUserResp> userList = pageDataRespSdmResponse.getData().getData();
usernameToUserIdMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUsername, CIDUserResp::getUserId));
}
// 处理当前项目下的所有待办
for (LyricVTodoEmulationInfoDM todo : projectTodoList) {
try {
@@ -363,7 +375,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
SpdmAddDemandReq demandReq = buildDemandReq(todo, demandUuid, curDateStr);
List<SpdmDemandRelateMemberReq> memberList = buildDemandMemberList(todo, demandUuid, jobNumber, curDateStr);
// 2. 构建权限更新参数
buildPermissionReqList(demandUuid, jobNumber, todo, updatePermissionList);
buildPermissionReqList(demandUuid, jobNumber, todo, updatePermissionList,usernameToUserIdMap);
// 3. 构建需求文件夹节点
demandDirNodeList.add(buildDemandDirNode(demandUuid, projectNode, demandReq.getDemandName()));
// 4. 异步保存需求数据
@@ -541,14 +553,15 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
private void buildPermissionReqList(String demandUuid,
Long currentUserId,
LyricVTodoEmulationInfoDM todo,
List<UpdatePermissionReq> permissionList) {
List<UpdatePermissionReq> permissionList,
Map<String, Long> usernameToUserIdMap) {
// 当前用户权限
// permissionList.add(buildUpdatePermissionReq(demandUuid, currentUserId, null));
// 仿真负责人权限
addPermissionReq(todo.getVerifier(), demandUuid, permissionList, MemberTypeEnum.PRINCIPAL.getCode());
addPermissionReq(usernameToUserIdMap.get(todo.getVerifier()), demandUuid, permissionList, MemberTypeEnum.PRINCIPAL.getCode());
// 需求创建人权限
addPermissionReq(todo.getIntroduceBy(), demandUuid, permissionList, MemberTypeEnum.CREATOR.getCode());
addPermissionReq(usernameToUserIdMap.get(todo.getIntroduceBy()), demandUuid, permissionList, MemberTypeEnum.CREATOR.getCode());
}
/**
@@ -571,14 +584,11 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
/**
* 添加成员权限请求
*/
private void addPermissionReq(String memberStr, String demandUuid, List<UpdatePermissionReq> permissionList, Integer type) {
if (StringUtils.isBlank(memberStr)) {
private void addPermissionReq(Long userId, String demandUuid, List<UpdatePermissionReq> permissionList, Integer type) {
if (ObjectUtils.isEmpty(userId) || userId == 0L) {
return;
}
String userIdStr = memberStr.split("-")[0];
if (isConvertibleToLong(userIdStr)) {
permissionList.add(buildUpdatePermissionReq(demandUuid, Long.valueOf(userIdStr), type));
}
permissionList.add(buildUpdatePermissionReq(demandUuid, userId, type));
}
/**

View File

@@ -573,7 +573,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
// 4. 设置当前阶段
dmProjectNodeList.forEach(spdmNodeVo -> {
String nodeCode = spdmNodeVo.getNodeCode();
if (org.apache.commons.lang3.StringUtils.isNotBlank(nodeCode)) {
if (StringUtils.isNotBlank(nodeCode)) {
spdmNodeVo.setCurrentPhase(projectStageMap.get(nodeCode));
}
});
@@ -3197,6 +3197,18 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
Map<String, String> workspaceNodeMap) {
List<DirNodeInfo> demandDirNodeList = new ArrayList<>();
List<UpdatePermissionReq> permissionReqList = new ArrayList<>();
// 将利元亨的用户工号与userId映射
Map<String, Long> usernameToUserIdMap = new HashMap<>();
UserListReq userListReq = new UserListReq();
userListReq.setTenantId(tenantId);
userListReq.setCurrent(1);
userListReq.setSize(9999);
SdmResponse<PageDataResp<List<CIDUserResp>>> pageDataRespSdmResponse = sysUserFeignClient.listUser(userListReq);
if (pageDataRespSdmResponse.isSuccess() && pageDataRespSdmResponse.getData().getData() != null) {
List<CIDUserResp> userList = pageDataRespSdmResponse.getData().getData();
usernameToUserIdMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUsername, CIDUserResp::getUserId));
}
// 筛选出所有工位节点
for (LyricVTodoEmulationInfoDM todoItem : todoInfoList) {
try {
@@ -3207,7 +3219,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
// 2. 构建成员信息和权限信息
List<SpdmDemandRelateMemberReq> memberList = buildDemandMemberList(
todoItem, demandUuid, currentUserId, currentTimeStr, permissionReqList);
todoItem, demandUuid, currentUserId, currentTimeStr, permissionReqList,usernameToUserIdMap);
// 3. 构建文件夹节点信息
DirNodeInfo demandDirNode = buildDemandDirNode(demandUuid, todoItem.getSubject(), projectNodeMap.get(NodeTypeEnum.PROJECT.getValue() + "_" + todoItem.getProject()).getUuid());
@@ -3276,7 +3288,8 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
String demandUuid,
Long currentUserId,
String currentTimeStr,
List<UpdatePermissionReq> permissionReqList) {
List<UpdatePermissionReq> permissionReqList,
Map<String, Long> usernameToUserIdMap) {
List<SpdmDemandRelateMemberReq> memberList = new ArrayList<>();
// 添加当前用户权限
@@ -3284,7 +3297,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
// 仿真负责人在EP里是确认人verifier
// 需求创建人在EP里是提出人introduceBy
addDemandMember(todoItem.getVerifier(),todoItem.getIntroduceBy(), MemberTypeEnum.PRINCIPAL.getCode(), demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList);
addDemandMember(todoItem.getVerifierNo(),todoItem.getIntroduceBy(), MemberTypeEnum.PRINCIPAL.getCode(), demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList,usernameToUserIdMap);
@@ -3303,48 +3316,40 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
/**
* 添加需求成员
*/
private void addDemandMember(String userInfo,String introduceBy, int memberType, String demandUuid,
private void addDemandMember(String verifierNo,String introduceBy, int memberType, String demandUuid,
Long currentUserId, String currentTimeStr,
List<SpdmDemandRelateMemberReq> memberList,
List<UpdatePermissionReq> permissionReqList) {
if (StringUtils.isBlank(userInfo)) {
List<UpdatePermissionReq> permissionReqList,
Map<String, Long> usernameToUserIdMap) {
log.info("verifierNo为{}introduceBy为{}",verifierNo,introduceBy);
if (StringUtils.isBlank(verifierNo) && StringUtils.isBlank(introduceBy)) {
log.error("确认人和提出人都为空");
return;
}
try {
String userIdStr = userInfo.split("-")[0];
log.info("introduceBy");
String introduceByUserIdStr = introduceBy.split("-")[0];
log.info("introduceByUserIdStr");
if (!isConvertibleToLong(userIdStr)) {
log.warn("用户ID转换失败原始数据{}", userInfo);
return;
// TODO
Long verifierUserId = 0L;;
if (StringUtils.isNotBlank(verifierNo)) {
verifierUserId = usernameToUserIdMap.get(verifierNo);
// 构建仿真负责人信息
SpdmDemandRelateMemberReq memberReq = new SpdmDemandRelateMemberReq();
memberReq.setDemandId(demandUuid);
memberReq.setType(memberType);
memberReq.setUserId(verifierUserId);
memberReq.setCreateTime(currentTimeStr);
memberReq.setCreator(currentUserId);
memberList.add(memberReq);
}
if (!isConvertibleToLong(introduceByUserIdStr)) {
log.warn("提出人用户ID转换失败原始数据{}", userInfo);
return;
Long introduceByUserId = 0L;
if (StringUtils.isNotBlank(introduceBy)) {
introduceByUserId = usernameToUserIdMap.get(introduceBy);
}
Long userId = Long.valueOf(userIdStr);
Long introduceByUserId = Long.valueOf(introduceByUserIdStr);
// 构建成员信息
SpdmDemandRelateMemberReq memberReq = new SpdmDemandRelateMemberReq();
memberReq.setDemandId(demandUuid);
memberReq.setType(memberType);
memberReq.setUserId(userId);
memberReq.setCreateTime(currentTimeStr);
memberReq.setCreator(currentUserId);
memberList.add(memberReq);
// 添加权限
addUserPermission(permissionReqList, demandUuid, userId,introduceByUserId,FilePermissionEnum.BASE.getValue());
addUserPermission(permissionReqList, demandUuid, verifierUserId,introduceByUserId,FilePermissionEnum.BASE.getValue());
} catch (Exception e) {
log.error("添加需求成员失败,用户信息:{},成员类型{}", userInfo, memberType, e);
log.error("添加需求成员失败,确认人:{},提出人{}", verifierNo,introduceBy , e);
}
}
@@ -3353,26 +3358,32 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
*/
private void addUserPermission(List<UpdatePermissionReq> permissionReqList,
String demandUuid,
Long userId,Long introduceByUserId,byte filePermissionEnumValue) {
UpdatePermissionReq permissionReq = new UpdatePermissionReq();
permissionReq.setUserId(userId);
permissionReq.setUuid(demandUuid);
Long verifierUserId,Long introduceByUserId,byte filePermissionEnumValue) {
if (verifierUserId != 0L) {
UpdatePermissionReq permissionReq = new UpdatePermissionReq();
permissionReq.setUserId(verifierUserId);
permissionReq.setUuid(demandUuid);
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(verifierUserId, filePermissionEnumValue);
permissionReq.setUserPermissions(userPermissions);
permissionReq.setPermission(filePermissionEnumValue);
permissionReqList.add(permissionReq);
}
if (introduceByUserId != 0L) {
UpdatePermissionReq introduceByPermissionReq = new UpdatePermissionReq();
introduceByPermissionReq.setUserId(introduceByUserId);
introduceByPermissionReq.setUuid(demandUuid);
Map<Long, Byte> introduceByUserPermissions = new HashMap<>();
introduceByUserPermissions.put(introduceByUserId, FilePermissionEnum.ALL.getValue());
introduceByPermissionReq.setUserPermissions(introduceByUserPermissions);
introduceByPermissionReq.setPermission(FilePermissionEnum.ALL.getValue());
permissionReqList.add(introduceByPermissionReq);
}
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(userId, filePermissionEnumValue);
permissionReq.setUserPermissions(userPermissions);
permissionReq.setPermission(filePermissionEnumValue);
permissionReqList.add(permissionReq);
UpdatePermissionReq introduceByPermissionReq = new UpdatePermissionReq();
introduceByPermissionReq.setUserId(introduceByUserId);
introduceByPermissionReq.setUuid(demandUuid);
Map<Long, Byte> introduceByUserPermissions = new HashMap<>();
introduceByUserPermissions.put(introduceByUserId, FilePermissionEnum.ALL.getValue());
introduceByPermissionReq.setUserPermissions(introduceByUserPermissions);
introduceByPermissionReq.setPermission(FilePermissionEnum.ALL.getValue());
permissionReqList.add(introduceByPermissionReq);
}
/**