fix:从需求批量创建任务,0206提出 需要创建任务,不挂载到节点下, 由需求分发的时候,挂载节点,创建文件夹,更新权限

This commit is contained in:
2026-02-06 10:55:18 +08:00
parent 0d8fbb4dea
commit bd321f3651

View File

@@ -146,6 +146,11 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
return SdmResponse.success();
}
/**
* 从需求批量创建任务,0206提出 需要创建任务,不挂载到节点下
* 由需求分发的时候,挂载节点,创建文件夹,更新权限
* @param demandList 需求列表
*/
@Override
public void batchCreateTaskFromDemand(List<SimulationDemand> demandList) {
log.info("从需求批量创建任务,需求数量:{}", demandList);
@@ -163,44 +168,10 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
List<BatchUpdatePermissionReq.FilePermissionItem> filePermissionItemList = new ArrayList<>();
for (SimulationDemand demand : demandList) {
SimulationTask task = convertDemandToTask(demand, tagMap);
// 任务挂载在workspace工位节点下需要从task的tag中获取workspaceId
String workspaceId = getWorkspaceIdFromTask(task, tagMap);
task.setNodeId(workspaceId);
tasksToCreate.add(task);
taskExtrasToCreate.addAll(createTaskExtras(demand, task.getUuid()));
taskMembersToCreate.addAll(createTaskMembers(demand, task.getUuid()));
taskAttentionsToCreate.addAll(createTaskAttentions(demand, task.getUuid()));
// 任务对应需求
// 1.需求创建人对关联的任务文件夹有预览、下载权限
// 2.需求负责人(仿真负责人、确认人)对关联的任务文件夹有预览、下载权限
// 但是目前任务负责人就是从需求负责人继承的,权限也会继承
// 构建单个任务的权限配置(仅当需求创建人不为空时)
if (demand.getCreator() != null) {
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);
} else {
log.warn("需求创建人为空跳过任务权限配置需求ID: {}, 任务UUID: {}", demand.getUuid(), task.getUuid());
}
}
// 批量更新需求创建人对任务文件夹的权限
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());
}
}
// 批量保存任务主表、扩展表、成员表、关注表
@@ -214,16 +185,6 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
if (CollectionUtils.isNotEmpty(taskAttentionsToCreate)) {
simulationTaskAttentionService.saveBatch(taskAttentionsToCreate);
}
// 批量创建任务目录和更新权限
for (SimulationTask task : tasksToCreate) {
// 任务挂载在workspace工位节点下需要从task的tag中获取workspaceId
String workspaceId = getWorkspaceIdFromTask(task, tagMap);
createTaskDir(task.getUuid(), workspaceId, task.getTaskName());
}
// 批量更新任务权限(使用批量接口)
batchUpdateTaskPermissions(tasksToCreate);
}
private SimulationTask convertDemandToTask(SimulationDemand demand, Map<String, String> tagMap) {