From 107382136a6d0e607775bfe51817c00c65916d4d Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Wed, 15 Apr 2026 09:25:04 +0800 Subject: [PATCH] =?UTF-8?q?fix[project]:=20getTaskTree=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=85=B3=E8=81=94=E9=9C=80=E6=B1=82=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ProjectServiceImpl.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) 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 3f47befe..6b1f2ecb 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 @@ -522,6 +522,54 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } } + /** + * 关联任务与需求的需求类型(demandType) + * @param newTaskList 任务列表 + */ + private void relateDemandType(List newTaskList) { + // 1. 任务列表为空直接返回 + if (CollectionUtils.isEmpty(newTaskList)) { + return; + } + + // 2. 提取有效demandId + List demandIdList = newTaskList.stream() + .map(TaskNodePo::getDemandId) + .filter(StringUtils::isNotBlank) + .distinct() + .toList(); + + log.info("relateDemandType 查询需求ID列表:{}", demandIdList); + if (CollectionUtils.isEmpty(demandIdList)) { + return; + } + + // 3. 查询需求信息 + List demandList = demandMapper.getDemandListById(demandIdList); + if (CollectionUtils.isEmpty(demandList)) { + log.info("relateDemandType 根据ID未查询到对应需求信息"); + return; + } + + // 4. 转成 Map:uuid -> demandType + Map demandDemandTypeMap = demandList.stream() + .filter(demand -> StringUtils.isNotBlank(demand.getDemandType())) + .collect(Collectors.toMap( + SpdmDemandVo::getUuid, + SpdmDemandVo::getDemandType, + (oldVal, newVal) -> oldVal + )); + + // 5. 批量设置 demandType + for (TaskNodePo taskNodePo : newTaskList) { + String demandId = taskNodePo.getDemandId(); + if (StringUtils.isNotBlank(demandId)) { + taskNodePo.setDemandType(demandDemandTypeMap.get(demandId)); + } + } + + } + @Override public SdmResponse getTaskTree(ProjectTreeTagReq req) { List idMapList = req.getIdMap(); @@ -560,6 +608,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { if (CollectionUtils.isNotEmpty(taskTreeTaskList)) { log.info("查询到的任务为:{}", taskTreeTaskList.stream().map(TaskNodePo::getId).toList()); taskTreeTaskList.forEach(task -> task.setNodeType("task")); + relateDemandType(taskTreeTaskList); taskTreePerformanceList = mapper.getPerformanceListByNodeIdList(taskTreeTaskList.stream().map(TaskNodePo::getUuid).toList()); if (CollectionUtils.isNotEmpty(taskTreePerformanceList)) { log.info("查询到的指标为:{}", taskTreePerformanceList.stream().map(PerformanceNodePo::getId).toList());