diff --git a/project/src/main/java/com/sdm/project/bo/ExportOperate.java b/project/src/main/java/com/sdm/project/bo/ExportOperate.java index 3316b1e8..82b109b5 100644 --- a/project/src/main/java/com/sdm/project/bo/ExportOperate.java +++ b/project/src/main/java/com/sdm/project/bo/ExportOperate.java @@ -20,10 +20,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -35,7 +32,7 @@ public class ExportOperate { private String scriptPath; /** 临时导出路径 */ - private static final String TEMP_EXPORT_PATH = "/opt/export/"; + private static final String TEMP_EXPORT_PATH = "D:\\scripts\\"; /** Python脚本名称 */ private static final String PYTHON_INPUT_SCRIPT_NAME = "inputExcel.py"; @@ -252,6 +249,35 @@ public class ExportOperate { } } + /** + * 找到任务树中所有的任务节点 + * @param nodeList + * @return + */ + public static List findAllTaskNodesNonRecursive(List nodeList) { + List taskNodes = new ArrayList<>(); + if (nodeList == null || nodeList.isEmpty()) { + return taskNodes; + } + + // 使用队列实现广度优先遍历 + Queue queue = new LinkedList<>(nodeList); + + while (!queue.isEmpty()) { + NodeAllBase currentNode = queue.poll(); + // 判断当前节点是否是 task + if (NodeTypeEnum.TASK.getValue().equals(currentNode.getNodeType())) { + taskNodes.add(currentNode); + } + // 将子节点加入队列,继续遍历 + if (currentNode.getChildren() != null && !currentNode.getChildren().isEmpty()) { + queue.addAll(currentNode.getChildren()); + } + } + + return taskNodes; + } + /** * 解析脚本输出的JSON文件 * @param jsonFile JSON文件路径 @@ -269,7 +295,7 @@ public class ExportOperate { // 前端导入的文件中的用户信息是工号,需要转成userId List nodeList = exportExternalForm.getNodes(); // 过滤出任务 - List taskList = nodeList.stream().filter(node -> NodeTypeEnum.TASK.getValue().equals(node.getNodeType())).collect(Collectors.toList()); + List taskList = findAllTaskNodesNonRecursive(nodeList); if (CollectionUtils.isNotEmpty(taskList)) { for (NodeAllBase task : taskList) { // 仿真负责人 diff --git a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java index 29976da0..46f37dd9 100644 --- a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java @@ -2443,6 +2443,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { 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)) { @@ -2459,33 +2460,19 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { // String threeDMemberList = taskNode.getTMemberList(); // // 关注人 // String attentionMemberList = taskNode.getAMemberList(); -// -// -// -//// if (demandMapper.addDemand(req, tenantId, jobNumber) <= 0) { -//// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); -//// return SdmResponse.failed("新增需求失败!"); -//// } +// req.setCreateTime(curDateStr); +// req.setUuid(RandomUtil.generateString(32)); +// if (demandMapper.addDemand(req, tenantId, jobNumber) <= 0) { +// log.error("新增需求失败!"); +// return; +// } +// long demandId = req.getId(); +// List allMemberList = new ArrayList<>(); +// String uuid = req.getUuid(); // } // // // -// -// // 获取需求额外属性 -// List 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 allMemberList = new ArrayList<>(); -// String uuid = req.getUuid(); // if (StringUtils.isNotBlank(pMemberList)) { // String[] pMemberArray = pMemberList.split(","); // for (String userId : pMemberArray) { @@ -2687,15 +2674,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { // 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> idMap,HashMap> taskIdMap) {