fix[project]: 仿真策划导入外部表单,对导入的用户信息做转换

This commit is contained in:
2026-03-20 15:34:00 +08:00
parent be16fd1c0b
commit 555d93135c
2 changed files with 44 additions and 38 deletions

View File

@@ -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<NodeAllBase> findAllTaskNodesNonRecursive(List<NodeAllBase> nodeList) {
List<NodeAllBase> taskNodes = new ArrayList<>();
if (nodeList == null || nodeList.isEmpty()) {
return taskNodes;
}
// 使用队列实现广度优先遍历
Queue<NodeAllBase> 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<NodeAllBase> nodeList = exportExternalForm.getNodes();
// 过滤出任务
List<NodeAllBase> taskList = nodeList.stream().filter(node -> NodeTypeEnum.TASK.getValue().equals(node.getNodeType())).collect(Collectors.toList());
List<NodeAllBase> taskList = findAllTaskNodesNonRecursive(nodeList);
if (CollectionUtils.isNotEmpty(taskList)) {
for (NodeAllBase task : taskList) {
// 仿真负责人

View File

@@ -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<SpdmDemandRelateMemberReq> allMemberList = new ArrayList<>();
// String uuid = req.getUuid();
// }
//
//
//
//
// // 获取需求额外属性
// 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) {
@@ -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<String, List<String>> idMap,HashMap<String, List<String>> taskIdMap) {