From 2ab427c0c23dd96e8f58977878537eb680c87fba Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Wed, 1 Apr 2026 15:07:18 +0800 Subject: [PATCH] =?UTF-8?q?fix[project]:=20=E8=B4=9F=E8=BD=BD=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E7=9A=84=E4=BB=BB=E5=8A=A1=E5=88=97=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=8F=B7=EF=BC=8C=E5=B7=A5=E4=BD=8D=E5=8F=B7?= =?UTF-8?q?=E7=AD=89=E8=BF=94=E5=9B=9E=E9=80=BB=E8=BE=91=E5=92=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=97=E8=A1=A8=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/model/entity/SimulationTask.java | 48 -------- .../project/model/req/ProjectUserLoadReq.java | 3 + .../model/resp/ProjectUserLoadResp.java | 3 +- .../project/service/impl/TaskServiceImpl.java | 108 +++++++++++------- 4 files changed, 72 insertions(+), 90 deletions(-) diff --git a/project/src/main/java/com/sdm/project/model/entity/SimulationTask.java b/project/src/main/java/com/sdm/project/model/entity/SimulationTask.java index 70ce77bf..4a7ea2f0 100644 --- a/project/src/main/java/com/sdm/project/model/entity/SimulationTask.java +++ b/project/src/main/java/com/sdm/project/model/entity/SimulationTask.java @@ -225,52 +225,4 @@ public class SimulationTask implements Serializable { @Schema(description= "关联的待办的结果文件路径") @TableField(exist = false) private List reportFileUrlList; - - - @Schema(description= "标签筛选参数") - @TableField(exist = false) - private TagReq tagReq; - - @TableField(exist = false) - private String tag1Code; - @TableField(exist = false) - private String tag2Code; - @TableField(exist = false) - private String tag3Code; - @TableField(exist = false) - private String tag4Code; - @TableField(exist = false) - private String tag5Code; - @TableField(exist = false) - private String tag6Code; - @TableField(exist = false) - private String tag7Code; - @TableField(exist = false) - private String tag8Code; - @TableField(exist = false) - private String tag9Code; - @TableField(exist = false) - private String tag10Code; - @TableField(exist = false) - private String tag1Name; - @TableField(exist = false) - private String tag2Name; - @TableField(exist = false) - private String tag3Name; - @TableField(exist = false) - private String tag4Name; - @TableField(exist = false) - private String tag5Name; - @TableField(exist = false) - private String tag6Name; - @TableField(exist = false) - private String tag7Name; - @TableField(exist = false) - private String tag8Name; - @TableField(exist = false) - private String tag9Name; - @TableField(exist = false) - private String tag10Name; - - } diff --git a/project/src/main/java/com/sdm/project/model/req/ProjectUserLoadReq.java b/project/src/main/java/com/sdm/project/model/req/ProjectUserLoadReq.java index ce1fd2c4..2082285e 100644 --- a/project/src/main/java/com/sdm/project/model/req/ProjectUserLoadReq.java +++ b/project/src/main/java/com/sdm/project/model/req/ProjectUserLoadReq.java @@ -1,6 +1,7 @@ package com.sdm.project.model.req; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.sdm.project.model.bo.TaskNodeTag; import jakarta.validation.constraints.NotBlank; import lombok.Data; @@ -27,5 +28,7 @@ public class ProjectUserLoadReq { @NotBlank(message = "结束时间不能为空") private String endTime; + private List idMap; + } diff --git a/project/src/main/java/com/sdm/project/model/resp/ProjectUserLoadResp.java b/project/src/main/java/com/sdm/project/model/resp/ProjectUserLoadResp.java index 34845153..bae992c4 100644 --- a/project/src/main/java/com/sdm/project/model/resp/ProjectUserLoadResp.java +++ b/project/src/main/java/com/sdm/project/model/resp/ProjectUserLoadResp.java @@ -1,6 +1,7 @@ package com.sdm.project.model.resp; import com.sdm.project.model.entity.SimulationTask; +import com.sdm.project.model.vo.SpdmNewTaskVo; import lombok.Data; import java.util.List; @@ -31,7 +32,7 @@ public class ProjectUserLoadResp { /** * 任务列表 */ - private List taskList; + private List taskList; /** * 此字段不为空时,说明当前项目是其他项目的参考项目 diff --git a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java index 12517f3e..44a43cab 100644 --- a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java @@ -100,6 +100,7 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; +import static com.sdm.common.utils.DateUtils.PATTERN_DEFAULT; import static com.sdm.project.service.impl.NodeServiceImpl.getTagProperty; import static com.sdm.project.service.impl.NodeServiceImpl.setTagProperty; @@ -4581,46 +4582,70 @@ public class TaskServiceImpl implements ITaskService { /** * 查询任务数据并构建映射关系 */ - private TaskData queryAndBuildTaskData(Long tenantId, List projectIdList, String beginTime, String endTime) { - // 查询任务列表 - List taskList = simulationTaskService.lambdaQuery() - .in(SimulationTask::getTag1, projectIdList) - .eq(SimulationTask::getTenantId, tenantId) - .ge(StringUtils.isNotBlank(beginTime), SimulationTask::getBeginTime, beginTime) - .le(StringUtils.isNotBlank(endTime), SimulationTask::getEndTime, endTime) - .list(); + private TaskData queryAndBuildTaskData(Long tenantId, List projectIdList, String beginTime, String endTime, List idMap) { - - if (CollectionUtils.isNotEmpty(taskList)) { - for (SimulationTask simulationTask : taskList) { - TagReq tagReq = new TagReq(); - setTagField(tagReq, simulationTask.getTag1(), simulationTask.getTag1Name(),simulationTask.getTag1Code(), TagReq::setTag1, TagReq::setTag1Name, TagReq::setTag1Code); - setTagField(tagReq, simulationTask.getTag2(), simulationTask.getTag2Name(), simulationTask.getTag2Code(),TagReq::setTag2, TagReq::setTag2Name, TagReq::setTag2Code); - setTagField(tagReq, simulationTask.getTag3(), simulationTask.getTag3Name(), simulationTask.getTag3Code(),TagReq::setTag3, TagReq::setTag3Name, TagReq::setTag3Code); - setTagField(tagReq, simulationTask.getTag4(), simulationTask.getTag4Name(), simulationTask.getTag4Code(),TagReq::setTag4, TagReq::setTag4Name, TagReq::setTag4Code); - setTagField(tagReq, simulationTask.getTag5(), simulationTask.getTag5Name(), simulationTask.getTag5Code(),TagReq::setTag5, TagReq::setTag5Name, TagReq::setTag5Code); - setTagField(tagReq, simulationTask.getTag6(), simulationTask.getTag6Name(), simulationTask.getTag6Code(),TagReq::setTag6, TagReq::setTag6Name, TagReq::setTag6Code); - setTagField(tagReq, simulationTask.getTag7(), simulationTask.getTag7Name(), simulationTask.getTag7Code(),TagReq::setTag7, TagReq::setTag7Name, TagReq::setTag7Code); - setTagField(tagReq, simulationTask.getTag8(), simulationTask.getTag8Name(), simulationTask.getTag8Code(),TagReq::setTag8, TagReq::setTag8Name,TagReq::setTag8Code); - setTagField(tagReq, simulationTask.getTag9(), simulationTask.getTag9Name(), simulationTask.getTag9Code(),TagReq::setTag9, TagReq::setTag9Name, TagReq::setTag9Code); - setTagField(tagReq, simulationTask.getTag10(), simulationTask.getTag10Name(), simulationTask.getTag10Code(),TagReq::setTag10, TagReq::setTag10Name, TagReq::setTag10Code); - tagReq.setTaskId(simulationTask.getUuid()); - tagReq.setTaskName(simulationTask.getTaskName()); - tagReq.setTaskCode(simulationTask.getTaskCode()); - simulationTask.setTagReq(tagReq); - } + SpdmTaskListReq taskListReq = new SpdmTaskListReq(); + TagReq tagReq = new TagReq(); + tagReq.setTag1(projectIdList.stream().collect(Collectors.joining(","))); + taskListReq.setTagReq(tagReq); + taskListReq.setType(TaskQryTypeEnum.ALL.getCode()); + SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DEFAULT); + List beginTimeList = new ArrayList<>(); + if (StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime)) { + beginTimeList.add(beginTime); + beginTimeList.add(endTime); + taskListReq.setBeginTime(beginTimeList); + } + taskListReq.setIdMap(idMap); + taskListReq.setCurrent(1); + taskListReq.setSize(9999); + SdmResponse response = list(taskListReq); + List taskList = new ArrayList<>(); + if (response.isSuccess()) { + JSONObject dataObj = (JSONObject) response.getData(); + taskList = (List) dataObj.get("data"); } +// // 查询任务列表 +// List taskList = simulationTaskService.lambdaQuery() +// .in(SimulationTask::getTag1, projectIdList) +// .eq(SimulationTask::getTenantId, tenantId) +// .ge(StringUtils.isNotBlank(beginTime), SimulationTask::getBeginTime, beginTime) +// .le(StringUtils.isNotBlank(endTime), SimulationTask::getEndTime, endTime) +// .list(); +// +// +// if (CollectionUtils.isNotEmpty(taskList)) { +// for (SimulationTask simulationTask : taskList) { +// TagReq tagReq = new TagReq(); +// setTagField(tagReq, simulationTask.getTag1(), simulationTask.getTag1Name(),simulationTask.getTag1Code(), TagReq::setTag1, TagReq::setTag1Name, TagReq::setTag1Code); +// setTagField(tagReq, simulationTask.getTag2(), simulationTask.getTag2Name(), simulationTask.getTag2Code(),TagReq::setTag2, TagReq::setTag2Name, TagReq::setTag2Code); +// setTagField(tagReq, simulationTask.getTag3(), simulationTask.getTag3Name(), simulationTask.getTag3Code(),TagReq::setTag3, TagReq::setTag3Name, TagReq::setTag3Code); +// setTagField(tagReq, simulationTask.getTag4(), simulationTask.getTag4Name(), simulationTask.getTag4Code(),TagReq::setTag4, TagReq::setTag4Name, TagReq::setTag4Code); +// setTagField(tagReq, simulationTask.getTag5(), simulationTask.getTag5Name(), simulationTask.getTag5Code(),TagReq::setTag5, TagReq::setTag5Name, TagReq::setTag5Code); +// setTagField(tagReq, simulationTask.getTag6(), simulationTask.getTag6Name(), simulationTask.getTag6Code(),TagReq::setTag6, TagReq::setTag6Name, TagReq::setTag6Code); +// setTagField(tagReq, simulationTask.getTag7(), simulationTask.getTag7Name(), simulationTask.getTag7Code(),TagReq::setTag7, TagReq::setTag7Name, TagReq::setTag7Code); +// setTagField(tagReq, simulationTask.getTag8(), simulationTask.getTag8Name(), simulationTask.getTag8Code(),TagReq::setTag8, TagReq::setTag8Name,TagReq::setTag8Code); +// setTagField(tagReq, simulationTask.getTag9(), simulationTask.getTag9Name(), simulationTask.getTag9Code(),TagReq::setTag9, TagReq::setTag9Name, TagReq::setTag9Code); +// setTagField(tagReq, simulationTask.getTag10(), simulationTask.getTag10Name(), simulationTask.getTag10Code(),TagReq::setTag10, TagReq::setTag10Name, TagReq::setTag10Code); +// tagReq.setTaskId(simulationTask.getUuid()); +// tagReq.setTaskName(simulationTask.getTaskName()); +// tagReq.setTaskCode(simulationTask.getTaskCode()); +// simulationTask.setTagReq(tagReq); +// } +// } + + // 构建任务映射(项目ID -> 任务列表) - Map> projectTaskMap = CollectionUtils.isEmpty(taskList) + Map> projectTaskMap = CollectionUtils.isEmpty(taskList) ? new HashMap<>() - : taskList.stream().collect(Collectors.groupingBy(SimulationTask::getTag1)); + : taskList.stream().collect(Collectors.groupingBy(SpdmNewTaskVo::getNewTag1)); // 构建任务成员映射(任务ID -> 用户ID集合) Map> taskMemberMap = new HashMap<>(); if (CollectionUtils.isNotEmpty(taskList)) { - List taskIdList = taskList.stream().map(SimulationTask::getUuid).collect(Collectors.toList()); + List taskIdList = taskList.stream().map(SpdmNewTaskVo::getUuid).collect(Collectors.toList()); List taskMemberList = mapper.getMemberList(taskIdList, null); if (CollectionUtils.isNotEmpty(taskMemberList)) { @@ -4639,7 +4664,7 @@ public class TaskServiceImpl implements ITaskService { * 构建项目用户负载响应列表 */ private List buildProjectUserLoadResponse(List projectNodeList, TaskData taskData, Map projectNodeReferenceItemMap, - Long tenantId, String beginTime, String endTime) { + Long tenantId, String beginTime, String endTime, List idMap) { List responseList = new ArrayList<>(); Set processedProjectNames = new HashSet<>(); // 记录已处理的项目名称,避免重复 @@ -4678,7 +4703,8 @@ public class TaskServiceImpl implements ITaskService { tenantId, Collections.singletonList(targetRefProjectNodeUuid), beginTime, - endTime + endTime, + idMap ); // 处理参考项目,并将处理好的参考项目放到responseList中 handleReferenceProject(projectNode, projectNodeList, targetRefTaskData, responseList, processedProjectNames, currentProjectRefName); @@ -4696,7 +4722,7 @@ public class TaskServiceImpl implements ITaskService { resp.setRelateProjectName(referenceItem); // 获取该项目的任务列表 - List taskList = taskData.getProjectTaskMap().get(projectNode.getUuid()); + List taskList = taskData.getProjectTaskMap().get(projectNode.getUuid()); if (CollectionUtils.isEmpty(taskList)) { return resp; // 无任务时返回基础信息 } @@ -4712,7 +4738,7 @@ public class TaskServiceImpl implements ITaskService { // 计算工作量 double totalWorkload = taskList.stream() .filter(task -> task.getDays() != null) - .mapToDouble(SimulationTask::getDays) + .mapToDouble(SpdmNewTaskVo::getDays) .sum(); resp.setWorkload(totalWorkload); @@ -4758,9 +4784,9 @@ public class TaskServiceImpl implements ITaskService { /** * 计算任务关联的用户ID集合 */ - private Set calculateUserIds(List taskList, Map> taskMemberMap) { + private Set calculateUserIds(List taskList, Map> taskMemberMap) { Set userIdSet = new HashSet<>(); - for (SimulationTask task : taskList) { + for (SpdmNewTaskVo task : taskList) { Set taskUserIds = taskMemberMap.get(task.getUuid()); if (CollectionUtils.isNotEmpty(taskUserIds)) { userIdSet.addAll(taskUserIds); @@ -4773,15 +4799,15 @@ public class TaskServiceImpl implements ITaskService { * 封装任务相关的映射关系 */ private static class TaskData { - private final Map> projectTaskMap; + private final Map> projectTaskMap; private final Map> taskMemberMap; - public TaskData(Map> projectTaskMap, Map> taskMemberMap) { + public TaskData(Map> projectTaskMap, Map> taskMemberMap) { this.projectTaskMap = projectTaskMap; this.taskMemberMap = taskMemberMap; } - public Map> getProjectTaskMap() { + public Map> getProjectTaskMap() { return projectTaskMap; } @@ -4889,9 +4915,9 @@ public class TaskServiceImpl implements ITaskService { ? projectIdList : projectNodeList.stream().map(SimulationNode::getUuid).collect(Collectors.toList()); // 5. 查询任务列表并构建映射 - TaskData taskData = queryAndBuildTaskData(tenantId, realProjectIdList, req.getBeginTime(), req.getEndTime()); + TaskData taskData = queryAndBuildTaskData(tenantId, realProjectIdList, req.getBeginTime(), req.getEndTime(),req.getIdMap()); // 6. 构建返回结果 - return SdmResponse.success(buildProjectUserLoadResponse(projectNodeList, taskData, projectNodeReferenceItemMap, tenantId, req.getBeginTime(), req.getEndTime())); + return SdmResponse.success(buildProjectUserLoadResponse(projectNodeList, taskData, projectNodeReferenceItemMap, tenantId, req.getBeginTime(), req.getEndTime(),req.getIdMap())); } @Transactional(rollbackFor = Exception.class)