1、创建需求时,如果需求附件文件夹未创建就进行创建

This commit is contained in:
2026-02-03 21:07:10 +08:00
parent 599cd0cd15
commit 65e5163b71

View File

@@ -1271,7 +1271,65 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
}
}
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
String projectNodeId = req.getProjectId();
BatchCreateNormalDirReq batchCreateNormalDirReq = new BatchCreateNormalDirReq();
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(projectNodeId, NodeTypeEnum.PROJECT.getValue(), 0L);
if (fileMetadataInfoResp.getData() == null) {
log.error("fileMetadataInfoResp为空,projectNodeId为{}",projectNodeId);
return SdmResponse.failed("新增需求失败!");
}
// 查询需求附件的uuid元数据表中【parentId是project的元数据主键id且originalName为需求附件】
FileMetadataInfoResp projectMetadataInfo = fileMetadataInfoResp.getData();
SdmResponse<List<FileMetadataInfoResp>> listSdmResponse = dataFeignClient.listDir(DirTypeEnum.PROJECT_NODE_DIR.getValue(), projectMetadataInfo.getId());
if (!listSdmResponse.isSuccess() || CollectionUtils.isEmpty(listSdmResponse.getData())) {
log.error("listSdmResponse为空,project的元数据主键id为{}",projectMetadataInfo.getId());
return SdmResponse.failed("新增需求失败!");
}
List<FileMetadataInfoResp> childrenMetadataInfoList = listSdmResponse.getData();
FileMetadataInfoResp demandAttachFileMetadataInfoResp = childrenMetadataInfoList.stream().filter(metadataInfo -> AttachFileTypeEnum.DEMAND_FILE.getValue().equals(metadataInfo.getOriginalName())).findFirst().orElse(null);
Long demandAttachFileMetadataInfoId;
if (ObjectUtils.isEmpty(demandAttachFileMetadataInfoResp)) {
log.info("未查询到需求附件文件夹,当前项目下的子文件夹为:{}",childrenMetadataInfoList);
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
List<FolderItemReq> demandAttachFolderItemReqList = new ArrayList<>();
BatchCreateNormalDirReq demandAttachBatchCreateNormalDirReq = new BatchCreateNormalDirReq();
demandAttachBatchCreateNormalDirReq.setParentUUId(projectNodeId);
FolderItemReq demandAttachFolderItemReq = new FolderItemReq();
demandAttachFolderItemReq.setFolderName(AttachFileTypeEnum.DEMAND_FILE.getValue());
demandAttachFolderItemReq.setFolderUuid(RandomUtil.generateString(32));
demandAttachFolderItemReqList.add(demandAttachFolderItemReq);
demandAttachBatchCreateNormalDirReq.setFolderItems(demandAttachFolderItemReqList);
log.info("创建需求附件文件夹请求参数:{}", demandAttachBatchCreateNormalDirReq);
BatchCreateNormalDirResp batchCreateNormalDirResp;
try {
SdmResponse<BatchCreateNormalDirResp> response = dataFeignClient.batchCreateNormalDirs(demandAttachBatchCreateNormalDirReq);
log.info("创建需求附件文件夹响应:{}", response);
if (!response.isSuccess() || ObjectUtils.isEmpty(response.getData())) {
log.error("调用创建需求附件文件夹接口失败,原因为:{}", response.getMessage());
return SdmResponse.failed("创建需求附件文件夹失败:,原因为:" + response.getMessage());
}
batchCreateNormalDirResp = response.getData();
} catch (Exception e) {
log.error("调用创建需求附件文件夹接口失败", e);
return SdmResponse.failed("创建需求附件文件夹失败:" + e.getMessage());
}
if (ObjectUtils.isEmpty(batchCreateNormalDirResp)) {
log.error("batchCreateNormalDirResp为空");
return SdmResponse.failed("创建需求附件文件夹失败");
}
List<BatchCreateNormalDirResp.DirInfo> successList = batchCreateNormalDirResp.getSuccessList();
if (CollectionUtils.isEmpty(successList)) {
log.error("successList为空");
return SdmResponse.failed("创建需求附件文件夹失败");
}
// 需求附件文件夹的元数据主键id
demandAttachFileMetadataInfoId = successList.get(0).getId();
}else {
demandAttachFileMetadataInfoId = demandAttachFileMetadataInfoResp.getId();
}
batchCreateNormalDirReq.setParentUUId(req.getProjectId());
FolderItemReq folderItemReq = new FolderItemReq();
folderItemReq.setFolderName(req.getDemandName());