fix[project]: 仿真策划创建任务时,同步创建需求
This commit is contained in:
@@ -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);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 创建文件夹
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user