fix[project]: 负载弹窗的任务列表的项目号,工位号等返回逻辑和任务列表保持一致

This commit is contained in:
2026-04-01 15:07:18 +08:00
parent 63771ca960
commit 2ab427c0c2
4 changed files with 72 additions and 90 deletions

View File

@@ -225,52 +225,4 @@ public class SimulationTask implements Serializable {
@Schema(description= "关联的待办的结果文件路径")
@TableField(exist = false)
private List<String> 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;
}

View File

@@ -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<TaskNodeTag> idMap;
}

View File

@@ -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<SimulationTask> taskList;
private List<SpdmNewTaskVo> taskList;
/**
* 此字段不为空时,说明当前项目是其他项目的参考项目

View File

@@ -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<String> projectIdList, String beginTime, String endTime) {
// 查询任务列表
List<SimulationTask> 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<String> projectIdList, String beginTime, String endTime, List<TaskNodeTag> 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<String> 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<SpdmNewTaskVo> taskList = new ArrayList<>();
if (response.isSuccess()) {
JSONObject dataObj = (JSONObject) response.getData();
taskList = (List<SpdmNewTaskVo>) dataObj.get("data");
}
// // 查询任务列表
// List<SimulationTask> 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<String, List<SimulationTask>> projectTaskMap = CollectionUtils.isEmpty(taskList)
Map<String, List<SpdmNewTaskVo>> projectTaskMap = CollectionUtils.isEmpty(taskList)
? new HashMap<>()
: taskList.stream().collect(Collectors.groupingBy(SimulationTask::getTag1));
: taskList.stream().collect(Collectors.groupingBy(SpdmNewTaskVo::getNewTag1));
// 构建任务成员映射任务ID -> 用户ID集合
Map<String, Set<Long>> taskMemberMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(taskList)) {
List<String> taskIdList = taskList.stream().map(SimulationTask::getUuid).collect(Collectors.toList());
List<String> taskIdList = taskList.stream().map(SpdmNewTaskVo::getUuid).collect(Collectors.toList());
List<SpdmTaskMemberVo> taskMemberList = mapper.getMemberList(taskIdList, null);
if (CollectionUtils.isNotEmpty(taskMemberList)) {
@@ -4639,7 +4664,7 @@ public class TaskServiceImpl implements ITaskService {
* 构建项目用户负载响应列表
*/
private List<ProjectUserLoadResp> buildProjectUserLoadResponse(List<SimulationNode> projectNodeList, TaskData taskData, Map<String, String> projectNodeReferenceItemMap,
Long tenantId, String beginTime, String endTime) {
Long tenantId, String beginTime, String endTime, List<TaskNodeTag> idMap) {
List<ProjectUserLoadResp> responseList = new ArrayList<>();
Set<String> 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<SimulationTask> taskList = taskData.getProjectTaskMap().get(projectNode.getUuid());
List<SpdmNewTaskVo> 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<Long> calculateUserIds(List<SimulationTask> taskList, Map<String, Set<Long>> taskMemberMap) {
private Set<Long> calculateUserIds(List<SpdmNewTaskVo> taskList, Map<String, Set<Long>> taskMemberMap) {
Set<Long> userIdSet = new HashSet<>();
for (SimulationTask task : taskList) {
for (SpdmNewTaskVo task : taskList) {
Set<Long> 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<String, List<SimulationTask>> projectTaskMap;
private final Map<String, List<SpdmNewTaskVo>> projectTaskMap;
private final Map<String, Set<Long>> taskMemberMap;
public TaskData(Map<String, List<SimulationTask>> projectTaskMap, Map<String, Set<Long>> taskMemberMap) {
public TaskData(Map<String, List<SpdmNewTaskVo>> projectTaskMap, Map<String, Set<Long>> taskMemberMap) {
this.projectTaskMap = projectTaskMap;
this.taskMemberMap = taskMemberMap;
}
public Map<String, List<SimulationTask>> getProjectTaskMap() {
public Map<String, List<SpdmNewTaskVo>> 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)