fix[project]: 仿真策划时,可以添加3D负责人
This commit is contained in:
@@ -197,6 +197,12 @@ public class TaskNode extends BaseEntity {
|
||||
@JsonProperty(value = "payAttentionMemberList")
|
||||
private String payAttentionMemberList;
|
||||
|
||||
/**
|
||||
* 3D负责人
|
||||
*/
|
||||
@JsonProperty(value = "tMemberList")
|
||||
private String tMemberList;
|
||||
|
||||
/**
|
||||
* 任务名称
|
||||
*/
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.sdm.common.entity.req.system.UserQueryReq;
|
||||
import com.sdm.common.entity.req.task.TaskTreeExportExcelFormat;
|
||||
import com.sdm.common.entity.req.task.TaskTreeExportExcelParam;
|
||||
import com.sdm.common.entity.resp.capability.FlowTemplateResp;
|
||||
import com.sdm.common.entity.resp.data.BatchCreateNormalDirResp;
|
||||
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||
import com.sdm.common.entity.resp.PageDataResp;
|
||||
import com.sdm.common.entity.resp.data.SimulationTaskResultCurveResp;
|
||||
@@ -46,6 +47,7 @@ import com.sdm.project.common.MemberTypeEnum;
|
||||
import com.sdm.project.common.NodeMemberTypeEnum;
|
||||
import com.sdm.project.common.TaskExeStatusEnum;
|
||||
import com.sdm.project.common.VersionEnum;
|
||||
import com.sdm.project.dao.SimulationDemandMapper;
|
||||
import com.sdm.project.dao.SimulationNodeMapper;
|
||||
import com.sdm.project.dao.SimulationProjectMapper;
|
||||
import com.sdm.project.dao.SimulationTaskMapper;
|
||||
@@ -54,6 +56,7 @@ import com.sdm.project.model.entity.*;
|
||||
import com.sdm.project.model.po.*;
|
||||
import com.sdm.project.model.req.*;
|
||||
import com.sdm.project.model.resp.WorkspaceReportListResp;
|
||||
import com.sdm.project.model.vo.SpdmDemandVo;
|
||||
import com.sdm.project.model.vo.SpdmNodeExtraVo;
|
||||
import com.sdm.project.model.vo.SpdmNodeMemberVo;
|
||||
import com.sdm.project.model.vo.SpdmNodeVo;
|
||||
@@ -206,6 +209,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
@Autowired
|
||||
private CacheManager cacheManager;
|
||||
|
||||
@Autowired
|
||||
private SimulationDemandMapper demandMapper;
|
||||
|
||||
|
||||
// @Override
|
||||
// @Transactional
|
||||
@@ -1758,6 +1764,13 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
simulationTaskMemberService.saveTaskMemberList(projectNode.getUuid(), MemberTypeEnum.ATTENTION.getCode(), longUserIdList);
|
||||
}
|
||||
|
||||
// 设置3D负责人人
|
||||
if(StringUtils.isNotBlank(projectNode.getTMemberList())){
|
||||
String[] userIdArr = projectNode.getTMemberList().split(",");
|
||||
List<Long> longUserIdList = Arrays.stream(userIdArr).filter(s -> !s.isEmpty()).map(Long::valueOf).collect(Collectors.toList());
|
||||
simulationTaskMemberService.saveTaskMemberList(projectNode.getUuid(), MemberTypeEnum.THREED.getCode(), longUserIdList);
|
||||
}
|
||||
|
||||
List<TaskExtraNode> extraList = projectNode.getExtras();
|
||||
if (CollectionUtils.isNotEmpty(extraList)) {
|
||||
for (TaskExtraNode extra : extraList) {
|
||||
@@ -2344,6 +2357,12 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
for (TaskNode taskNode : taskNodeList) {
|
||||
updatePermission(userId,taskNode.getUuid(),FilePermissionEnum.READ.getValue());
|
||||
}
|
||||
// 20260320 新增任务时,同步新增一个需求
|
||||
try {
|
||||
addDemandByTask(taskNodeList);
|
||||
}catch (Exception ex) {
|
||||
log.error("新增任务时,同步新增一个需求时异常:{}",ex.getMessage());
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(taskNodeExtraList)) {
|
||||
taskNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
|
||||
@@ -2420,6 +2439,265 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
return response;
|
||||
}
|
||||
|
||||
public void addDemandByTask(List<TaskNode> taskNodeList) {
|
||||
log.info("策划任务时,新增需求");
|
||||
// Long tenantId = ThreadLocalContext.getTenantId();
|
||||
// Long jobNumber = ThreadLocalContext.getUserId();
|
||||
// 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();
|
||||
//
|
||||
//
|
||||
//
|
||||
//// if (demandMapper.addDemand(req, tenantId, jobNumber) <= 0) {
|
||||
//// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
//// return SdmResponse.failed("新增需求失败!");
|
||||
//// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// // 获取需求额外属性
|
||||
// List<SpdmDemandExtraReq> demandExtraList = req.getExtras();
|
||||
// String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
||||
// req.setCreateTime(curDateStr);
|
||||
// req.setUuid(RandomUtil.generateString(32));
|
||||
//
|
||||
//
|
||||
// if (mapper.addDemand(req, tenantId, jobNumber) <= 0) {
|
||||
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
// return SdmResponse.failed("新增需求失败!");
|
||||
// }
|
||||
// long demandId = req.getId();
|
||||
// log.info("需求主键id为(无权限校验):{}", demandId);
|
||||
// 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);
|
||||
//
|
||||
// // 只有利元亨需要在创建需求的同时创建任务
|
||||
// if (req.getIsLyric()) {
|
||||
// SimulationDemand demand = new SimulationDemand();
|
||||
// BeanUtils.copyProperties(req, demand);
|
||||
// simulationTaskService.batchCreateTaskFromDemand(Collections.singletonList(demand));
|
||||
// }
|
||||
//
|
||||
// return SdmResponse.success(req.getUuid());
|
||||
}
|
||||
|
||||
// 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();
|
||||
|
||||
Reference in New Issue
Block a user