Merge remote-tracking branch 'origin/main'

This commit is contained in:
2026-02-02 09:49:19 +08:00
2 changed files with 86 additions and 32 deletions

View File

@@ -660,6 +660,11 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
String parentUuid = getLastNodeId(taskNodeList.get(0));
log.info("下发任务时parentId为{}", parentUuid);
String demandId = req.getDemandId();
// 关联的需求
SpdmDemandVo demand = mapper.getDemandListById(Collections.singletonList(demandId)).get(0);
Long demandCreator = demand.getCreator();
List<BatchUpdatePermissionReq.FilePermissionItem> filePermissions = new ArrayList<>();
List<TaskMemberNode> projectNodeMemberList = new ArrayList<>();
List<TaskExtraNode> projectNodeExtraList = new ArrayList<>();
List<TaskNode> allPerformanceList = new ArrayList<>();
@@ -683,14 +688,21 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
taskMemberNode.setUserId(userId);
taskMemberNode.setType(MemberTypeEnum.PRINCIPAL.getCode());
projectNodeMemberList.add(taskMemberNode);
// 更新文件权限
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(Long.valueOf(userId));
updatePermissionReq.setUuid(task.getUuid());
// 更新需求负责人对需求文件权限
BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem();
item.setUuid(task.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
userPermissions.put(Long.valueOf(userId), FilePermissionEnum.ALL.getValue());
item.setUserPermissions(userPermissions);
filePermissions.add(item);
// 更新需求负责人对任务文件夹的权限
BatchUpdatePermissionReq.FilePermissionItem demandItem = new BatchUpdatePermissionReq.FilePermissionItem();
demandItem.setUuid(task.getUuid());
Map<Long, Byte> demandUserPermissions = new HashMap<>();
demandUserPermissions.put(demandCreator, FilePermissionEnum.BASE.getValue());
demandItem.setUserPermissions(demandUserPermissions);
filePermissions.add(demandItem);
}
}
if (StringUtils.isNotBlank(eUserIdStr)) {
@@ -704,16 +716,13 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
projectNodeMemberList.add(taskMemberNode);
// 发送消息通知
sendMessage(MessageTemplateEnum.TASK_ISSUE, task.getNodeName(), userId, task.getUuid());
// 更新文件权限
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(Long.valueOf(userId));
updatePermissionReq.setUuid(task.getUuid());
// 更新需求执行人对需求文件权限
BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem();
item.setUuid(task.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse);
userPermissions.put(Long.valueOf(userId), FilePermissionEnum.ALL.getValue());
item.setUserPermissions(userPermissions);
filePermissions.add(item);
}
}
List<TaskExtraNode> extraList = task.getExtras();
@@ -785,16 +794,21 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
createDir(taskNode.getUuid(), parentUuid, taskNode.getNodeName());
}
for (TaskNode taskNode : taskNodeList) {
// 更新文件权限
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(jobNumber);
updatePermissionReq.setUuid(taskNode.getUuid());
// 更新需求创建人对需求文件权限
BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem();
item.setUuid(taskNode.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse);
item.setUserPermissions(userPermissions);
filePermissions.add(item);
// 更新需求创建人对任务文件夹的权限
BatchUpdatePermissionReq.FilePermissionItem demandItem = new BatchUpdatePermissionReq.FilePermissionItem();
demandItem.setUuid(taskNode.getUuid());
Map<Long, Byte> demandUserPermissions = new HashMap<>();
demandUserPermissions.put(demandCreator, FilePermissionEnum.BASE.getValue());
demandItem.setUserPermissions(demandUserPermissions);
filePermissions.add(demandItem);
}
}
if (CollectionUtils.isNotEmpty(projectNodeExtraList)) {
@@ -819,15 +833,13 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
return response;
}
for (TaskNode taskNode : allPerformanceList) {
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(jobNumber);
updatePermissionReq.setUuid(taskNode.getUuid());
// 更新文件权限
BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem();
item.setUuid(taskNode.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse);
userPermissions.put(Long.valueOf(jobNumber), FilePermissionEnum.ALL.getValue());
item.setUserPermissions(userPermissions);
filePermissions.add(item);
}
List<TaskNodePo> newTaskNodeList = projectMapper.getTaskListByNodeIdList(allPerformanceList.stream().map(TaskNode::getTaskId).toList());
@@ -863,6 +875,20 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
return response;
}
}
// 执行批量更新权限
if (CollectionUtils.isNotEmpty(filePermissions)) {
BatchUpdatePermissionReq batchReq = new BatchUpdatePermissionReq();
batchReq.setFilePermissions(filePermissions);
log.info("从需求分发任务时,批量更新权限,任务数量:{}", filePermissions.size());
SdmResponse response1 = dataFeignClient.batchUpdatePermission(batchReq);
log.info("从需求分发任务时,批量更新权限结果:{}", response1);
if (!response1.isSuccess()) {
log.error("批量更新任务权限失败:{}", response1.getMessage());
}
}
}
}
return response;

View File

@@ -135,6 +135,7 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
List<Long> longUserIdList = Arrays.stream(userIdArr).filter(s -> !s.isEmpty()).map(Long::valueOf).collect(Collectors.toList());
simulationTaskMemberService.deleteTaskMemberList(req.getUuid(), MemberTypeEnum.EXECUTOR.getCode());
simulationTaskMemberService.saveTaskMemberList(req.getUuid(), MemberTypeEnum.EXECUTOR.getCode(), longUserIdList);
// 对关联的需求文件夹设置权限
}
// 设置仿真负责人
if (StringUtils.isNotBlank(req.getPMemberList())) {
@@ -159,6 +160,7 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
Map<String, String> tagMap = tagMapService.getTagMapName();
List<BatchUpdatePermissionReq.FilePermissionItem> filePermissionItemList = new ArrayList<>();
for (SimulationDemand demand : demandList) {
SimulationTask task = convertDemandToTask(demand, tagMap);
// 任务挂载在workspace工位节点下需要从task的tag中获取workspaceId
@@ -169,6 +171,32 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
taskExtrasToCreate.addAll(createTaskExtras(demand, task.getUuid()));
taskMembersToCreate.addAll(createTaskMembers(demand, task.getUuid()));
taskAttentionsToCreate.addAll(createTaskAttentions(demand, task.getUuid()));
// 任务对应需求
// 1.需求创建人对关联的任务文件夹有预览、下载权限
// 2.需求负责人(仿真负责人、确认人)对关联的任务文件夹有预览、下载权限
// 但是目前任务负责人就是从需求负责人继承的,权限也会继承
// 构建单个任务的权限配置
BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem();
item.setUuid(task.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(demand.getCreator(), FilePermissionEnum.BASE.getValue());
item.setUserPermissions(userPermissions);
filePermissionItemList.add(item);
}
// 批量更新需求创建人对任务文件夹的权限
if (CollectionUtils.isNotEmpty(filePermissionItemList)) {
BatchUpdatePermissionReq batchReq = new BatchUpdatePermissionReq();
batchReq.setFilePermissions(filePermissionItemList);
log.info("从需求批量创建任务时,批量更新需求创建人对任务文件夹的权限,任务数量:{}", filePermissionItemList.size());
SdmResponse response = dataFeignClient.batchUpdatePermission(batchReq);
log.info("从需求批量创建任务时,批量更新需求创建人对任务文件夹的权限结果:{}", response);
if (!response.isSuccess()) {
log.error("批量更新任务权限失败:{}", response.getMessage());
}
}
// 批量保存任务主表、扩展表、成员表、关注表