fix: 修复流水线任务卡片接单人显示为空的问题 - fillSubTaskStats方法现在正确填充子任务的receiverName - getCompletedTasks方法也从子任务获取接单人信息 - 显示格式: 单人显示姓名,多人显示'XX等N人'

This commit is contained in:
Your Name 2026-01-08 17:25:33 +08:00
parent 4d69910851
commit 03239c27b1

View File

@ -806,6 +806,40 @@ public class TaskService {
task.setCurrentApproverName(approver.getRealName() != null ? approver.getRealName() : approver.getUsername());
}
}
// 对于流水线任务,如果主任务没有接单人,从子任务中获取
if ((task.getReceiverName() == null || task.getReceiverName().isEmpty())
&& task.getIsPipeline() != null && task.getIsPipeline() == 1) {
try {
List<TaskItem> subTasks = taskItemMapper.selectList(
new LambdaQueryWrapper<TaskItem>()
.eq(TaskItem::getTaskId, task.getId())
.isNotNull(TaskItem::getReceiverId)
.orderByAsc(TaskItem::getGroupNo)
);
if (!subTasks.isEmpty()) {
// 获取所有不同的接单人
java.util.Set<String> receiverNames = new java.util.LinkedHashSet<>();
for (TaskItem item : subTasks) {
if (item.getReceiverId() != null) {
User receiver = userService.getUserById(item.getReceiverId());
if (receiver != null && receiver.getRealName() != null) {
receiverNames.add(receiver.getRealName());
}
}
}
if (!receiverNames.isEmpty()) {
if (receiverNames.size() == 1) {
task.setReceiverName(receiverNames.iterator().next());
} else {
task.setReceiverName(receiverNames.iterator().next() + "等" + receiverNames.size() + "人");
}
}
}
} catch (Exception e) {
log.warn("获取流水线任务子任务接单人失败: taskId={}", task.getId());
}
}
}
return result;
}
@ -937,15 +971,35 @@ public class TaskService {
task.setSubTaskInProgress((int) inProgressCount);
task.setSubTaskPending((int) pendingCount);
// 填充子任务的接单人名称
for (TaskItem item : subTasks) {
if (item.getReceiverId() != null && (item.getReceiverName() == null || item.getReceiverName().isEmpty())) {
User receiver = userService.getUserById(item.getReceiverId());
if (receiver != null) {
item.setReceiverName(receiver.getRealName());
}
}
}
// 设置子任务列表(包含处理人信息)
task.setSubTasks(subTasks);
// 如果主任务没有receiverName,从子任务中获取第一个有接单人的
// 如果主任务没有receiverName,从子任务中获取接单人
if (task.getReceiverName() == null || task.getReceiverName().isEmpty()) {
subTasks.stream()
.filter(item -> item.getReceiverName() != null && !item.getReceiverName().isEmpty())
.findFirst()
.ifPresent(item -> task.setReceiverName(item.getReceiverName() + "等"));
// 收集所有不同的接单人名称
java.util.Set<String> receiverNames = new java.util.LinkedHashSet<>();
for (TaskItem item : subTasks) {
if (item.getReceiverName() != null && !item.getReceiverName().isEmpty()) {
receiverNames.add(item.getReceiverName());
}
}
if (!receiverNames.isEmpty()) {
if (receiverNames.size() == 1) {
task.setReceiverName(receiverNames.iterator().next());
} else {
task.setReceiverName(receiverNames.iterator().next() + "等" + receiverNames.size() + "人");
}
}
}
}
} catch (Exception e) {