Compare commits
2 Commits
d0f24dd598
...
f96c256367
| Author | SHA1 | Date | |
|---|---|---|---|
| f96c256367 | |||
| 19bcad83ee |
@@ -244,9 +244,9 @@ public class LyricVTodoEmulationInfoDM implements Serializable {
|
||||
@TableField(value = "work_hour_plan")
|
||||
private String workHourPlan;
|
||||
|
||||
// @Schema(description = "提出人姓名")
|
||||
// @TableField(value = "introduce_by_name")
|
||||
// private String introduceByName;
|
||||
@Schema(description = "提出人")
|
||||
@TableField(value = "introduce_by")
|
||||
private String introduceBy;
|
||||
|
||||
@Schema(description = "驳回原因")
|
||||
@TableField(value = "turn_down_reason")
|
||||
|
||||
@@ -5,6 +5,7 @@ import lombok.Getter;
|
||||
@Getter
|
||||
public enum MemberTypeEnum {
|
||||
|
||||
CREATOR("创建人", -1),
|
||||
PRINCIPAL("仿真负责人", 0),
|
||||
EXECUTOR("仿真执行人", 1),
|
||||
THREED("3D负责人", 2),
|
||||
|
||||
@@ -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));
|
||||
// permissionList.add(buildUpdatePermissionReq(demandUuid, currentUserId, null));
|
||||
|
||||
// 仿真负责人权限
|
||||
addPermissionReq(todo.getEmulationPerformer(), demandUuid, permissionList, MemberTypeEnum.PRINCIPAL.getCode());
|
||||
// 仿真执行人权限
|
||||
addPermissionReq(todo.getEmulationExecutor(), demandUuid, permissionList, MemberTypeEnum.EXECUTOR.getCode());
|
||||
addPermissionReq(usernameToUserIdMap.get(todo.getVerifier()), demandUuid, permissionList, MemberTypeEnum.PRINCIPAL.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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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,20 +3288,27 @@ 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<>();
|
||||
|
||||
// 添加当前用户权限
|
||||
addUserPermission(permissionReqList, demandUuid, currentUserId,FilePermissionEnum.READ.getValue());
|
||||
// addUserPermission(permissionReqList, demandUuid, currentUserId,FilePermissionEnum.READ.getValue());
|
||||
|
||||
// 仿真负责人(在EP里是确认人):verifier
|
||||
// 需求创建人(在EP里是提出人):introduceBy
|
||||
addDemandMember(todoItem.getVerifierNo(),todoItem.getIntroduceBy(), MemberTypeEnum.PRINCIPAL.getCode(), demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList,usernameToUserIdMap);
|
||||
|
||||
|
||||
// 仿真负责人
|
||||
addDemandMember(todoItem.getEmulationPerformer(), 0, demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList);
|
||||
|
||||
// 仿真执行人
|
||||
addDemandMember(todoItem.getEmulationExecutor(), 1, demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList);
|
||||
// addDemandMember(todoItem.getEmulationExecutor(), 1, demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList);
|
||||
|
||||
// 3D负责人
|
||||
addDemandMember(todoItem.getThreeDimensionalPerformer(), 2, demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList);
|
||||
// addDemandMember(todoItem.getThreeDimensionalPerformer(), 2, demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList);
|
||||
|
||||
// 确认人
|
||||
// addDemandMember(todoItem.getThreeDimensionalPerformer(), 2, demandUuid, currentUserId, currentTimeStr, memberList, permissionReqList);
|
||||
|
||||
return memberList;
|
||||
}
|
||||
@@ -3297,37 +3316,40 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
/**
|
||||
* 添加需求成员
|
||||
*/
|
||||
private void addDemandMember(String userInfo, 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];
|
||||
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);
|
||||
}
|
||||
Long introduceByUserId = 0L;
|
||||
if (StringUtils.isNotBlank(introduceBy)) {
|
||||
introduceByUserId = usernameToUserIdMap.get(introduceBy);
|
||||
}
|
||||
|
||||
Long userId = Long.valueOf(userIdStr);
|
||||
|
||||
// 构建成员信息
|
||||
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,FilePermissionEnum.BASE.getValue());
|
||||
addUserPermission(permissionReqList, demandUuid, verifierUserId,introduceByUserId,FilePermissionEnum.BASE.getValue());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("添加需求成员失败,用户信息:{},成员类型:{}", userInfo, memberType, e);
|
||||
log.error("添加需求成员失败,确认人:{},提出人:{}", verifierNo,introduceBy , e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3336,16 +3358,32 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
*/
|
||||
private void addUserPermission(List<UpdatePermissionReq> permissionReqList,
|
||||
String demandUuid,
|
||||
Long userId,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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user