This commit is contained in:
2026-02-06 11:05:31 +08:00
2 changed files with 21 additions and 52 deletions

View File

@@ -912,8 +912,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
if (req.getFile() != null) {
UploadFilesReq filesReq = new UploadFilesReq();
BeanUtils.copyProperties(req, filesReq);
req.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
req.setFileTypeDictValue(String.valueOf(req.getFileType()));
if (StringUtils.isEmpty(req.getFileTypeDictValue())) {
req.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
req.setFileTypeDictValue(String.valueOf(req.getFileType()));
}
SdmResponse response = uploadKeyResultFiles(filesReq);
if (response.isSuccess() && response.getData() != null) {
JSONObject result = JSONObject.from(response.getData());
@@ -1098,8 +1100,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
BeanUtils.copyProperties(req, filesReq);
filesReq.setUuid(req.getTaskId());
filesReq.setSourceFiles(req.getKeyResultList().stream().map(i -> new UploadFilesReq(i.getFileName(), i.getFileSize(), i.getFileType())).toList());
filesReq.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
filesReq.setFileTypeDictValue(String.valueOf(req.getKeyResultList().get(0).getFileType()));
if (StringUtils.isEmpty(filesReq.getFileTypeDictValue())) {
filesReq.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
filesReq.setFileTypeDictValue(String.valueOf(req.getKeyResultList().get(0).getFileType()));
}
// 批量存储文件信息,返回数据供第二步分片上传使用
SdmResponse<List<BatchAddFileInfoResp>> sdmResponse = dataFeignClient.batchAddFileInfo(filesReq);
if (sdmResponse.isSuccess() && CollectionUtils.isNotEmpty(sdmResponse.getData())) {
@@ -1230,8 +1234,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
GetSimulationTaskFileReq taskFileReq = new GetSimulationTaskFileReq();
taskFileReq.setUuid(req.getTaskId());
taskFileReq.setFileBizType(req.getFileType());
taskFileReq.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
taskFileReq.setFileTypeDictValue(String.valueOf(req.getFileType()));
if (StringUtils.isEmpty(taskFileReq.getFileTypeDictValue())) {
taskFileReq.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
taskFileReq.setFileTypeDictValue(String.valueOf(req.getFileType()));
}
taskFileReq.setCurrent(req.getCurrent());
taskFileReq.setSize(req.getSize());
SdmResponse<PageDataResp<List<SimulationTaskResultCurveResp>>> sdmResponse = analysisFeignClient.getSimulationTaskFile(taskFileReq);
@@ -2120,8 +2126,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
BeanUtils.copyProperties(req, filesReq);
filesReq.setDirId(parentId);
filesReq.setSourceFiles(req.getFileInfoList().stream().map(i -> new UploadFilesReq(i.getFileName(), i.getFileSize(), i.getFileType())).toList());
filesReq.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
filesReq.setFileTypeDictValue(String.valueOf(req.getFileInfoList().get(0).getFileType()));
if (StringUtils.isEmpty(filesReq.getFileTypeDictValue())) {
filesReq.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass());
filesReq.setFileTypeDictValue(String.valueOf(req.getFileInfoList().get(0).getFileType()));
}
// 批量存储文件信息,返回数据供第二步分片上传使用
SdmResponse<List<BatchAddFileInfoResp>> sdmResponse = dataFeignClient.batchAddFileInfo(filesReq);

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) {