fix[project]: 仿真策划创建任务时,同步创建需求

This commit is contained in:
2026-03-22 10:46:40 +08:00
parent cac0def5ec
commit add31723b6

View File

@@ -212,6 +212,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
@Autowired
private SimulationDemandMapper demandMapper;
@Autowired
private DataClientFeignClientImpl dataFeignClient;
// @Override
// @Transactional
@@ -2361,7 +2364,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
try {
addDemandByTask(taskNodeList);
}catch (Exception ex) {
log.error("新增任务时,同步新增一个需求时异常:{}",ex.getMessage());
log.error("新增任务时,同步新增需求时异常:{}",ex.getMessage());
}
}
if (CollectionUtils.isNotEmpty(taskNodeExtraList)) {
@@ -2440,448 +2443,224 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
public void addDemandByTask(List<TaskNode> taskNodeList) {
log.info("策划任务时,新增需求");
// Long tenantId = ThreadLocalContext.getTenantId();
// Long jobNumber = ThreadLocalContext.getUserId();
// String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
// for (TaskNode taskNode : taskNodeList) {
// SpdmDemandVo demandByName = demandMapper.getDemandByNameNoPermission(tenantId,String.join(",", taskNode.getTag10()));
// if (ObjectUtils.isNotEmpty(demandByName)) {
// log.error("需求名称:{},已存在",demandByName.getDemandName());
// continue;
// }
// SpdmAddDemandReq req = new SpdmAddDemandReq();
// req.setCreator(jobNumber);
// // 获取仿真负责人
// String pMemberList = taskNode.getPMemberList();
// // 获取仿真执行人
// String eMemberList = taskNode.getEMemberList();
// // 3D负责人
// String threeDMemberList = taskNode.getTMemberList();
// // 关注人
// String attentionMemberList = taskNode.getAMemberList();
// req.setCreateTime(curDateStr);
// req.setUuid(RandomUtil.generateString(32));
// if (demandMapper.addDemand(req, tenantId, jobNumber) <= 0) {
// log.error("新增需求失败!");
// return;
// }
// long demandId = req.getId();
// List<SpdmDemandRelateMemberReq> allMemberList = new ArrayList<>();
// String uuid = req.getUuid();
// }
//
//
//
// if (StringUtils.isNotBlank(pMemberList)) {
// String[] pMemberArray = pMemberList.split(",");
// for (String userId : pMemberArray) {
// SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
// spdmDemandRelateMemberReq.setDemandId(uuid);
// spdmDemandRelateMemberReq.setType(0);
// spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
// spdmDemandRelateMemberReq.setCreateTime(curDateStr);
// spdmDemandRelateMemberReq.setCreator(jobNumber);
// allMemberList.add(spdmDemandRelateMemberReq);
// }
// }
//
// if (StringUtils.isNotBlank(eMemberList)) {
// String[] eMemberArray = eMemberList.split(",");
// for (String userId : eMemberArray) {
// SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
// spdmDemandRelateMemberReq.setDemandId(uuid);
// spdmDemandRelateMemberReq.setType(1);
// spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
// spdmDemandRelateMemberReq.setCreateTime(curDateStr);
// spdmDemandRelateMemberReq.setCreator(jobNumber);
// allMemberList.add(spdmDemandRelateMemberReq);
// }
// }
//
// if (StringUtils.isNotBlank(threeDMemberList)) {
// String[] threeDMemberArray = threeDMemberList.split(",");
// for (String userId : threeDMemberArray) {
// SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
// spdmDemandRelateMemberReq.setDemandId(uuid);
// spdmDemandRelateMemberReq.setType(2);
// spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
// spdmDemandRelateMemberReq.setCreateTime(curDateStr);
// spdmDemandRelateMemberReq.setCreator(jobNumber);
// allMemberList.add(spdmDemandRelateMemberReq);
// }
// }
//
// if (StringUtils.isNotBlank(attentionMemberList)) {
// String[] attentionMemberArray = attentionMemberList.split(",");
// for (String userId : attentionMemberArray) {
// SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
// spdmDemandRelateMemberReq.setDemandId(uuid);
// spdmDemandRelateMemberReq.setType(3);
// spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
// spdmDemandRelateMemberReq.setCreateTime(curDateStr);
// spdmDemandRelateMemberReq.setCreator(jobNumber);
// allMemberList.add(spdmDemandRelateMemberReq);
// }
// }
//
// if (CollectionUtils.isNotEmpty(allMemberList)) {
// if (mapper.addDemandMember(allMemberList) <= 0) {
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return SdmResponse.failed("新增需求关联成员失败!");
// }
// }
// if (CollectionUtils.isNotEmpty(demandExtraList)) {
// demandExtraList.forEach(demandExtra -> {
// demandExtra.setDemandId(req.getUuid());
// demandExtra.setCreateTime(curDateStr);
// demandExtra.setCreator(jobNumber);
// });
// if (mapper.addDemandExtra(demandExtraList) <= 0) {
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return SdmResponse.failed("新增需求额外属性失败!");
// }
// }
//
//
// // 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
// 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));
// // 利元亨定制
// TagReq tagReq = new TagReq();
// String projectId = req.getProjectId();
// String phaseId = req.getPhaseId();
// String machineId = req.getMachineId();
// String workspaceId = req.getWorkspaceId();
// tagReq.setTag1(projectId);
// tagReq.setTag2(phaseId);
// tagReq.setTag4(machineId);
// tagReq.setTag5(workspaceId);
// demandAttachFolderItemReq.setTagReq(tagReq);
// demandAttachFolderItemReqList.add(demandAttachFolderItemReq);
// demandAttachBatchCreateNormalDirReq.setFolderItems(demandAttachFolderItemReqList);
// demandAttachBatchCreateNormalDirReq.setSkipPermissionCheck(true);
// 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.setParentId(demandAttachFileMetadataInfoId);
// FolderItemReq folderItemReq = new FolderItemReq();
// folderItemReq.setFolderName(req.getDemandName());
// folderItemReq.setFolderUuid(req.getUuid());
// // 利元亨定制
// TagReq tagReq = new TagReq();
// String projectId = req.getProjectId();
// String phaseId = req.getPhaseId();
// String machineId = req.getMachineId();
// String workspaceId = req.getWorkspaceId();
// tagReq.setTag1(projectId);
// tagReq.setTag2(phaseId);
// tagReq.setTag4(machineId);
// tagReq.setTag5(workspaceId);
// folderItemReq.setTagReq(tagReq);
// batchCreateNormalDirReq.setFolderItems(Collections.singletonList(folderItemReq));
// batchCreateNormalDirReq.setSkipPermissionCheck(true);
// log.info("创建需求文件夹参数(无权限校验): {}", batchCreateNormalDirReq);
// SdmResponse dirCreateResp = dataFeignClient.batchCreateNormalDirs(batchCreateNormalDirReq);
// if (ObjectUtils.isEmpty(dirCreateResp) || dirCreateResp.getCode() != ResultCode.SUCCESS.getCode()) {
// log.error("创建项目:{}下的{}需求文件夹(无权限校验)时,创建文件夹失败,原因为:{}", req.getProjectId(),req.getDemandName(), dirCreateResp.getMessage());
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return SdmResponse.failed("您没有选择项目的相应权限,请更换其他项目进行创建");
// }
// log.info("创建需求文件夹响应(无权限校验): {}", dirCreateResp);
//
// // 更新需求创建人对需求文件夹的权限 & 更新需求仿真负责人(确认人)对需求文件夹的权限(预览、下载)
// Long userId = ThreadLocalContext.getUserId();
// UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
// updatePermissionReq.setUuid(uuid);
// Map<Long, Byte> userPermissions = new HashMap<>();
// // 创建人
// userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
// // 仿真负责人
// if (CollectionUtils.isNotEmpty(allMemberList)) {
// // 兼容创建人和负责人是同一个人的情况
// allMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType()) && !Objects.equals(userId, member.getUserId())).forEach(member -> {
// userPermissions.put(member.getUserId(), FilePermissionEnum.BASE.getValue());
// });
// }
//
// // 仿真负责人还需要对选择的节点有创建和预览权限
// UpdatePermissionReq updateNodePermissionReq = new UpdatePermissionReq();
// updateNodePermissionReq.setUuid(req.getWorkspaceId());
// Map<Long, Byte> userForNodePermissions = new HashMap<>();
// if (StringUtils.isNotBlank(pMemberList)) {
// String[] pMemberArray = pMemberList.split(",");
// for (String pUserId : pMemberArray) {
// userForNodePermissions.put(Long.valueOf(pUserId), FilePermissionEnum.ALL_EXCLUDE_DELETE.getValue());
// }
// updateNodePermissionReq.setUserPermissions(userForNodePermissions);
// log.info("创建需求时,更新需求仿真负责人(确认人)工位节点权限的参数为:{}",updateNodePermissionReq);
// SdmResponse updateNodePermissionResponse = dataFeignClient.updatePermission(updateNodePermissionReq);
// log.info("创建需求时,更新需求仿真负责人(确认人)工位节点权限的返回值为:{}",updateNodePermissionResponse);
// }
//
// updatePermissionReq.setUserPermissions(userPermissions);
// log.info("创建需求时(无权限校验),更新需求创建人和需求仿真负责人(确认人)权限的参数为:{}",updatePermissionReq);
// SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
// log.info("创建需求时(无权限校验),更新需求创建人和需求仿真负责人(确认人)权限的返回值为:{}",updatePermissionResponse);
log.info("addDemandByTask 策划任务时,新增需求");
Long tenantId = ThreadLocalContext.getTenantId();
Long jobNumber = ThreadLocalContext.getUserId();
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
for (TaskNode taskNode : taskNodeList) {
SpdmDemandVo demandByName = demandMapper.getDemandByNameNoPermission(tenantId,String.join(",", taskNode.getTag10()));
if (ObjectUtils.isNotEmpty(demandByName)) {
log.error("addDemandByTask 需求名称:{},已存在",demandByName.getDemandName());
continue;
}
SpdmAddDemandReq req = new SpdmAddDemandReq();
req.setCreator(jobNumber);
// 获取仿真负责人
String pMemberList = taskNode.getPMemberList();
// 获取仿真执行人
String eMemberList = taskNode.getEMemberList();
// 3D负责人
String threeDMemberList = taskNode.getTMemberList();
// 关注人
String attentionMemberList = taskNode.getAMemberList();
req.setCreateTime(curDateStr);
req.setUuid(RandomUtil.generateString(32));
if (demandMapper.addDemand(req, tenantId, jobNumber) <= 0) {
log.error("addDemandByTask 新增需求失败!");
return;
}
long demandId = req.getId();
List<SpdmDemandRelateMemberReq> allMemberList = new ArrayList<>();
String uuid = req.getUuid();
if (StringUtils.isNotBlank(pMemberList)) {
String[] pMemberArray = pMemberList.split(",");
for (String userId : pMemberArray) {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(0);
spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq);
}
}
if (StringUtils.isNotBlank(eMemberList)) {
String[] eMemberArray = eMemberList.split(",");
for (String userId : eMemberArray) {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(1);
spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq);
}
}
if (StringUtils.isNotBlank(threeDMemberList)) {
String[] threeDMemberArray = threeDMemberList.split(",");
for (String userId : threeDMemberArray) {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(2);
spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq);
}
}
if (StringUtils.isNotBlank(attentionMemberList)) {
String[] attentionMemberArray = attentionMemberList.split(",");
for (String userId : attentionMemberArray) {
SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq();
spdmDemandRelateMemberReq.setDemandId(uuid);
spdmDemandRelateMemberReq.setType(3);
spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId));
spdmDemandRelateMemberReq.setCreateTime(curDateStr);
spdmDemandRelateMemberReq.setCreator(jobNumber);
allMemberList.add(spdmDemandRelateMemberReq);
}
}
if (CollectionUtils.isNotEmpty(allMemberList)) {
if (demandMapper.addDemandMember(allMemberList) <= 0) {
log.error("addDemandByTask 新增需求:{},关联成员失败",demandId);
}
}
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
String projectNodeId = req.getProjectId();
BatchCreateNormalDirReq batchCreateNormalDirReq = new BatchCreateNormalDirReq();
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(projectNodeId, NodeTypeEnum.PROJECT.getValue(), 0L);
if (fileMetadataInfoResp.getData() == null) {
log.error("addDemandByTask fileMetadataInfoResp为空,projectNodeId为{}",projectNodeId);
return;
}
// 查询需求附件的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("addDemandByTask listSdmResponse为空,project的元数据主键id为{}",projectMetadataInfo.getId());
return;
}
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("addDemandByTask 未查询到需求附件文件夹,当前项目下的子文件夹为:{}",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));
// 利元亨定制
TagReq tagReq = new TagReq();
String projectId = req.getProjectId();
String phaseId = req.getPhaseId();
String machineId = req.getMachineId();
String workspaceId = req.getWorkspaceId();
tagReq.setTag1(projectId);
tagReq.setTag2(phaseId);
tagReq.setTag4(machineId);
tagReq.setTag5(workspaceId);
demandAttachFolderItemReq.setTagReq(tagReq);
demandAttachFolderItemReqList.add(demandAttachFolderItemReq);
demandAttachBatchCreateNormalDirReq.setFolderItems(demandAttachFolderItemReqList);
demandAttachBatchCreateNormalDirReq.setSkipPermissionCheck(true);
log.info("addDemandByTask 创建需求附件文件夹请求参数:{}", demandAttachBatchCreateNormalDirReq);
BatchCreateNormalDirResp batchCreateNormalDirResp;
try {
SdmResponse<BatchCreateNormalDirResp> response = dataFeignClient.batchCreateNormalDirs(demandAttachBatchCreateNormalDirReq);
log.info("addDemandByTask 创建需求附件文件夹响应:{}", response);
if (!response.isSuccess() || ObjectUtils.isEmpty(response.getData())) {
log.error("addDemandByTask 调用创建需求附件文件夹接口失败,原因为:{}", response.getMessage());
return;
}
batchCreateNormalDirResp = response.getData();
} catch (Exception e) {
log.error("addDemandByTask 调用创建需求附件文件夹接口失败", e);
return;
}
if (ObjectUtils.isEmpty(batchCreateNormalDirResp)) {
log.error("addDemandByTask batchCreateNormalDirResp为空");
return;
}
List<BatchCreateNormalDirResp.DirInfo> successList = batchCreateNormalDirResp.getSuccessList();
if (CollectionUtils.isEmpty(successList)) {
log.error("addDemandByTask successList为空");
return;
}
// 需求附件文件夹的元数据主键id
demandAttachFileMetadataInfoId = successList.get(0).getId();
}else {
demandAttachFileMetadataInfoId = demandAttachFileMetadataInfoResp.getId();
}
batchCreateNormalDirReq.setParentId(demandAttachFileMetadataInfoId);
FolderItemReq folderItemReq = new FolderItemReq();
folderItemReq.setFolderName(req.getDemandName());
folderItemReq.setFolderUuid(req.getUuid());
// 利元亨定制
TagReq tagReq = new TagReq();
String projectId = req.getProjectId();
String phaseId = req.getPhaseId();
String machineId = req.getMachineId();
String workspaceId = req.getWorkspaceId();
tagReq.setTag1(projectId);
tagReq.setTag2(phaseId);
tagReq.setTag4(machineId);
tagReq.setTag5(workspaceId);
folderItemReq.setTagReq(tagReq);
batchCreateNormalDirReq.setFolderItems(Collections.singletonList(folderItemReq));
batchCreateNormalDirReq.setSkipPermissionCheck(true);
log.info("addDemandByTask 创建需求文件夹参数(无权限校验): {}", batchCreateNormalDirReq);
SdmResponse dirCreateResp = dataFeignClient.batchCreateNormalDirs(batchCreateNormalDirReq);
if (ObjectUtils.isEmpty(dirCreateResp) || dirCreateResp.getCode() != ResultCode.SUCCESS.getCode()) {
log.error("addDemandByTask 创建项目:{}下的{}需求文件夹(无权限校验)时,创建文件夹失败,原因为:{}", req.getProjectId(),req.getDemandName(), dirCreateResp.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return;
}
log.info("addDemandByTask 创建需求文件夹响应(无权限校验): {}", dirCreateResp);
// 更新需求创建人对需求文件夹的权限 & 更新需求仿真负责人(确认人)对需求文件夹的权限(预览、下载)
Long userId = ThreadLocalContext.getUserId();
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUuid(uuid);
Map<Long, Byte> userPermissions = new HashMap<>();
// 创建人
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
// 仿真负责人
if (CollectionUtils.isNotEmpty(allMemberList)) {
// 兼容创建人和负责人是同一个人的情况
allMemberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType()) && !Objects.equals(userId, member.getUserId())).forEach(member -> {
userPermissions.put(member.getUserId(), FilePermissionEnum.BASE.getValue());
});
}
// 仿真负责人还需要对选择的节点有创建和预览权限
UpdatePermissionReq updateNodePermissionReq = new UpdatePermissionReq();
updateNodePermissionReq.setUuid(req.getWorkspaceId());
Map<Long, Byte> userForNodePermissions = new HashMap<>();
if (StringUtils.isNotBlank(pMemberList)) {
String[] pMemberArray = pMemberList.split(",");
for (String pUserId : pMemberArray) {
userForNodePermissions.put(Long.valueOf(pUserId), FilePermissionEnum.ALL_EXCLUDE_DELETE.getValue());
}
updateNodePermissionReq.setUserPermissions(userForNodePermissions);
log.info("addDemandByTask 创建需求时,更新需求仿真负责人(确认人)工位节点权限的参数为:{}",updateNodePermissionReq);
SdmResponse updateNodePermissionResponse = dataFeignClient.updatePermission(updateNodePermissionReq);
log.info("addDemandByTask 创建需求时,更新需求仿真负责人(确认人)工位节点权限的返回值为:{}",updateNodePermissionResponse);
}
updatePermissionReq.setUserPermissions(userPermissions);
log.info("addDemandByTask 创建需求时(无权限校验),更新需求创建人和需求仿真负责人(确认人)权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("addDemandByTask 创建需求时(无权限校验),更新需求创建人和需求仿真负责人(确认人)权限的返回值为:{}",updatePermissionResponse);
}
}
// private SdmResponse realAddSimulationTaskItems(TaskNodeTree taskNodeTree, String parentId, Long tenantId,HashMap<String, List<String>> idMap,HashMap<String, List<String>> taskIdMap) {
// Long jobNumber = ThreadLocalContext.getUserId();
// SdmResponse response = SdmResponse.success();
// if (CollectionUtils.isEmpty(taskNodeTree.getNodeList())) {
// response = SdmResponse.failed("节点不能为空");
// } else {
// List<TaskNode> projectNodeList = new ArrayList<>();
// List<TaskMemberNode> projectNodeMemberList = new ArrayList<>();
// List<TaskExtraNode> projectNodeExtraList = new ArrayList<>();
// List<TaskNode> taskNodeList = new ArrayList<>();
// List<TaskMemberNode> taskNodeMemberList = new ArrayList<>();
// List<TaskExtraNode> taskNodeExtraList = new ArrayList<>();
// List<TaskNode> projectNodePerformanceList = new ArrayList<>();
// List<TaskExtraNode> projectNodePerformanceExtraList = new ArrayList<>();
// for (TaskNode taskNode : taskNodeTree.getNodeList()) {
// traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList, null,idMap,taskIdMap);
// }
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String createTime = format.format(new Date());
// Map<String, TaskNode> projectNodeMap = Map.of();
// Map<String, TaskNode> taskNodeMap = Map.of();
// if (CollectionUtils.isNotEmpty(projectNodeList)) {
// projectNodeList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (mapper.batchAddSimulationNodes(projectNodeList) <= 0) {
// response = SdmResponse.failed("添加节点失败");
// return response;
// }
// projectNodeMap = projectNodeList.stream().collect(Collectors.groupingBy(
// TaskNode::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// Map<String, ProjectNodePo> projectNodePoMap = Map.of();
// List<ProjectNodePo> newProjectNodeList = mapper.getNodeListByNodeIdList(projectNodeList.stream().map(TaskNode::getParentId).toList());
// if (CollectionUtils.isNotEmpty(newProjectNodeList)) {
// projectNodePoMap = newProjectNodeList.stream().collect(Collectors.groupingBy(
// ProjectNodePo::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// }
// for (TaskNode taskNode : projectNodeList) {
// if (ObjectUtils.isEmpty(projectNodeMap.get(taskNode.getParentId()))
// && ObjectUtils.isEmpty(projectNodePoMap.get(taskNode.getParentId())) && !NodeTypeEnum.PROJECT.getValue().equals(taskNode.getNodeType())) {
// log.error("新增节点时根据parentId{},未查询到节点", taskNode.getParentId());
// response = SdmResponse.failed("新增节点时,创建文件失败");
// return response;
// }
// createDir(taskNode.getUuid(),
// NodeTypeEnum.PROJECT.getValue().equals(taskNode.getNodeType()) ? null : (ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId()))
// ? projectNodePoMap.get(taskNode.getParentId()).getUuid()
// : projectNodeMap.get(taskNode.getParentId()).getUuid()),
// taskNode.getNodeName());
// }
// }
// if (CollectionUtils.isNotEmpty(projectNodeExtraList)) {
// projectNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (mapper.batchAddSimulationNodeExtra(projectNodeExtraList) <= 0) {
// response = SdmResponse.failed("添加节点附加属性失败");
// return response;
// }
// }
// if (CollectionUtils.isNotEmpty(projectNodeMemberList)) {
// projectNodeMemberList.forEach(projectNode -> {
// projectNode.setCreateTime(createTime);
// projectNode.setType(NodeMemberTypeEnum.MANAGER.getCode());
// });
// if (mapper.batchAddSimulationNodeMember(projectNodeMemberList) <= 0) {
// response = SdmResponse.failed("添加节点成员属性失败");
// }
// }
//
// if (CollectionUtils.isNotEmpty(taskNodeList)) {
// taskNodeList.forEach(projectNode -> {
//// projectNode.setCreator(jobNumber);
// projectNode.setCreateTime(createTime);
// });
// if (mapper.batchAddSimulationTask(taskNodeList) <= 0) {
// response = SdmResponse.failed("新增任务失败");
// return response;
// }
// taskNodeMap = taskNodeList.stream().collect(Collectors.groupingBy(
// TaskNode::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// Map<String, ProjectNodePo> projectNodePoMap = Map.of();
// List<ProjectNodePo> newProjectNodeList = mapper.getNodeListByNodeIdList(taskNodeList.stream().map(TaskNode::getParentId).toList());
// if (CollectionUtils.isNotEmpty(newProjectNodeList)) {
// projectNodePoMap = newProjectNodeList.stream().collect(Collectors.groupingBy(
// ProjectNodePo::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// }
// if (projectNodeMap.isEmpty()) {
// // projectNodeMap为空说明是直接添加分析项的情况
// for (TaskNode taskNode : taskNodeList) {
// if (ObjectUtils.isEmpty(projectNodePoMap.get(taskNode.getParentId()))) {
// log.error("projectNodeMap为空根据parentId{},未查询到节点", taskNode.getParentId());
// response = SdmResponse.failed("新增分析项时,创建文件失败");
// return response;
// }
// createDir(taskNode.getUuid(), projectNodePoMap.get(taskNode.getParentId()).getUuid(), taskNode.getNodeName());
// }
// } else {
// for (TaskNode taskNode : taskNodeList) {
// if (ObjectUtils.isEmpty(projectNodePoMap.get(taskNode.getParentId())) && ObjectUtils.isEmpty(projectNodeMap.get(taskNode.getParentId()))) {
// log.error("projectNodeMap不空根据parentId{},未查询到节点", taskNode.getParentId());
// response = SdmResponse.failed("新增分析项时,创建文件失败");
// return response;
// }
// createDir(taskNode.getUuid(),
// ObjectUtils.isNotEmpty(projectNodePoMap.get(taskNode.getParentId())) ? projectNodePoMap.get(taskNode.getParentId()).getUuid() : projectNodeMap.get(taskNode.getParentId()).getUuid(),
// taskNode.getNodeName());
// }
// }
// }
// if (CollectionUtils.isNotEmpty(taskNodeExtraList)) {
// taskNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (mapper.batchAddSimulationTaskExtra(taskNodeExtraList) <= 0) {
// response = SdmResponse.failed("新增任务附加属性失败");
// }
// }
// if (CollectionUtils.isNotEmpty(taskNodeMemberList)) {
// taskNodeMemberList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (mapper.batchAddSimulationTaskMember(taskNodeMemberList) <= 0) {
// response = SdmResponse.failed("新增任务成员属性失败");
// return response;
// }
// }
// if (CollectionUtils.isNotEmpty(projectNodePerformanceList)) {
// projectNodePerformanceList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (mapper.batchAddSimulationPerformance(projectNodePerformanceList) <= 0) {
// response = SdmResponse.failed("新增指标失败");
// return response;
// }
//
// List<TaskNodePo> newTaskNodeList = mapper.getTaskListByNodeIdList(projectNodePerformanceList.stream().map(TaskNode::getTaskId).toList());
// Map<String, TaskNodePo> taskNodePoMap = Map.of();
// if (CollectionUtils.isNotEmpty(newTaskNodeList)) {
// taskNodePoMap = newTaskNodeList.stream().collect(Collectors.groupingBy(
// TaskNodePo::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// }
// if (taskNodeMap.isEmpty()) {
// // taskNodeMap为空说明是直接添加指标的情况
// for (TaskNode taskNode : projectNodePerformanceList) {
// if (ObjectUtils.isEmpty(taskNodePoMap.get(taskNode.getTaskId()))) {
// log.error("taskNodeMap为空根据taskId{},未查询到任务", taskNode.getTaskId());
// response = SdmResponse.failed("新增指标时,创建文件失败");
// return response;
// }
// createDir(taskNode.getUuid(), taskNodePoMap.get(taskNode.getTaskId()).getUuid(), taskNode.getNodeName());
// }
// } else {
// for (TaskNode taskNode : projectNodePerformanceList) {
// if (ObjectUtils.isEmpty(taskNodePoMap.get(taskNode.getTaskId())) && ObjectUtils.isEmpty(taskNodeMap.get(taskNode.getTaskId()))) {
// log.error("taskNodeMap不空根据taskId{},未查询到任务", taskNode.getTaskId());
// response = SdmResponse.failed("新增指标时,创建文件失败");
// return response;
// }
// createDir(taskNode.getUuid(),
// ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getUuid() : taskNodeMap.get(taskNode.getTaskId()).getUuid(),
// taskNode.getNodeName());
// }
// }
// }
// if (CollectionUtils.isNotEmpty(projectNodePerformanceExtraList)) {
// for (TaskExtraNode performanceExtraNode : projectNodePerformanceExtraList) {
// performanceExtraNode.setCreateTime(createTime);
// performanceExtraNode.setValueType(ValueTypeEnum.DEFAULT.getValue());
// }
// if (mapper.batchAddSimulationPerformanceExtra(projectNodePerformanceExtraList) <= 0) {
// response = SdmResponse.failed("新增任务指标附加属性失败");
// return response;
// }
// }
// }
// return response;
// }
// private void createDir(String uuid, String parentUuid, String dirName) {
// CreateDirReq createDirReq = new CreateDirReq();
// createDirReq.setUuId(uuid);
// createDirReq.setParentUuId(parentUuid);
// createDirReq.setDirName(dirName);
// log.info("调用创建文件夹的参数为:{}", createDirReq);
//// SdmResponse response = dataClientAPIClient.createDir(createDirReq);
//// log.info("调用创建文件夹的返回值为:{}", response);
// }
/**
* 创建文件夹
*