feat: include actual receiver dept list in task hall export
This commit is contained in:
parent
f483ad4738
commit
5dbbec8ac9
@ -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<Long, String> taskActualReceiverDeptListMap = buildTaskActualReceiverDeptListMap(filteredItems, deptMap);
|
||||
|
||||
// 🔥 第一遍遍历:收集所有出现的任务类型名称(用于动态列)
|
||||
java.util.LinkedHashSet<String> 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<Long, String> buildTaskActualReceiverDeptListMap(List<TaskItem> items, Map<Long, String> deptMap) {
|
||||
Map<Long, LinkedHashSet<String>> 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<Long, String> result = new HashMap<>();
|
||||
for (Map.Entry<Long, LinkedHashSet<String>> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user