From 5dbbec8ac9a555689242fc5f1be76526a4d532e7 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 24 Feb 2026 16:27:15 +0800 Subject: [PATCH] feat: include actual receiver dept list in task hall export --- .../com/designhub/service/ExportService.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/designhub/service/ExportService.java b/backend/src/main/java/com/designhub/service/ExportService.java index 1f0187f..cd4f97a 100644 --- a/backend/src/main/java/com/designhub/service/ExportService.java +++ b/backend/src/main/java/com/designhub/service/ExportService.java @@ -15,6 +15,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -149,6 +150,7 @@ public class ExportService { taskItemsMap.put(virtualId, List.of(correspondingItem)); virtualTaskToItemMap.put(virtualId, correspondingItem); } + Map taskActualReceiverDeptListMap = buildTaskActualReceiverDeptListMap(filteredItems, deptMap); // 🔥 第一遍遍历:收集所有出现的任务类型名称(用于动态列) java.util.LinkedHashSet allTypeNames = new java.util.LinkedHashSet<>(); @@ -241,6 +243,12 @@ public class ExportService { row.put("publisherDept", deptMap.getOrDefault(task.getPublisherDeptId(), "")); row.put("receiver", userMap.getOrDefault(task.getReceiverId(), "")); row.put("receiverDept", deptMap.getOrDefault(task.getReceiverDeptId(), "")); + TaskItem currentItem = virtualTaskToItemMap.get(task.getId()); + if (currentItem != null) { + row.put("actualReceiverDeptList", taskActualReceiverDeptListMap.getOrDefault(currentItem.getTaskId(), "")); + } else { + row.put("actualReceiverDeptList", ""); + } row.put("status", getStatusText(task.getStatus())); row.put("releaseType", getReleaseTypeText(task.getReleaseType())); row.put("isUrgent", task.getIsUrgent() != null && task.getIsUrgent() == 1 ? "是" : "否"); @@ -279,6 +287,7 @@ public class ExportService { headerList.add("发布部门"); fieldList.add("publisherDept"); headerList.add("接收人"); fieldList.add("receiver"); headerList.add("接收部门"); fieldList.add("receiverDept"); + headerList.add("实际接单部门列表"); fieldList.add("actualReceiverDeptList"); headerList.add("状态"); fieldList.add("status"); headerList.add("发布类型"); fieldList.add("releaseType"); headerList.add("是否紧急"); fieldList.add("isUrgent"); @@ -296,6 +305,26 @@ public class ExportService { ExcelExportUtil.exportExcel(response, fileName, "任务明细", headers, fieldNames, exportList); log.info("任务大厅数据导出完成,共 {} 条", exportList.size()); } + + private Map buildTaskActualReceiverDeptListMap(List items, Map deptMap) { + Map> taskDeptSetMap = new HashMap<>(); + for (TaskItem item : items) { + if (item.getTaskId() == null || item.getReceiverDeptId() == null) { + continue; + } + String deptName = deptMap.getOrDefault(item.getReceiverDeptId(), ""); + if (deptName == null || deptName.isBlank()) { + continue; + } + taskDeptSetMap.computeIfAbsent(item.getTaskId(), k -> new LinkedHashSet<>()).add(deptName); + } + + Map result = new HashMap<>(); + for (Map.Entry> entry : taskDeptSetMap.entrySet()) { + result.put(entry.getKey(), String.join("、", entry.getValue())); + } + return result; + } /** * 获取状态文本 @@ -552,4 +581,3 @@ public class ExportService { ExcelExportUtil.exportExcel(response, fileName, "设计师统计", headers, fieldNames, stats); } } -