From e4451c7eb4f885216595dd6500a78a13531b002b Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 7 Jan 2026 11:29:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BE=85=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E4=BB=BB=E5=8A=A1=E5=8D=A1=E7=89=87=E5=92=8C=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 为 Task 实体添加 typeDetails 字段(非持久化) 2. getAllPendingApprovalTasks 方法添加品牌、类目、平台名称填充 3. 从子任务聚合 typeDetails 到主任务 --- .../main/java/com/designhub/entity/Task.java | 9 ++++ .../com/designhub/service/TaskService.java | 51 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/backend/src/main/java/com/designhub/entity/Task.java b/backend/src/main/java/com/designhub/entity/Task.java index 93dfc24..9a8dbcf 100644 --- a/backend/src/main/java/com/designhub/entity/Task.java +++ b/backend/src/main/java/com/designhub/entity/Task.java @@ -376,6 +376,12 @@ public class Task implements Serializable { @TableField(exist = false) private java.util.List allDeliveryPaths; + /** + * 任务类型明细 JSON(非数据库字段,从子任务聚合) + */ + @TableField(exist = false) + private String typeDetails; + // ==================== Getters and Setters (手动添加以解决Lombok编译问题) ==================== public Long getId() { return id; } @@ -593,5 +599,8 @@ public class Task implements Serializable { public java.util.List getAllDeliveryPaths() { return allDeliveryPaths; } public void setAllDeliveryPaths(java.util.List allDeliveryPaths) { this.allDeliveryPaths = allDeliveryPaths; } + + public String getTypeDetails() { return typeDetails; } + public void setTypeDetails(String typeDetails) { this.typeDetails = typeDetails; } } diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 2fbfa49..06cfa25 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -621,6 +621,57 @@ public class TaskService { task.setCurrentApproverName(approver.getRealName() != null ? approver.getRealName() : approver.getUsername()); } } + // 填充品牌名称 + if (task.getBrandId() != null) { + Brand brand = brandMapper.selectById(task.getBrandId()); + if (brand != null) { + task.setBrandName(brand.getName()); + } + } + // 填充类目名称 + if (task.getCategoryId() != null) { + Category category = categoryMapper.selectById(task.getCategoryId()); + if (category != null) { + task.setCategoryName(category.getName()); + } + } + // 填充平台名称 + if (task.getPlatformId() != null) { + Platform platform = platformMapper.selectById(task.getPlatformId()); + if (platform != null) { + task.setPlatformName(platform.getName()); + } + } + // 从子任务聚合任务类型明细 + if (task.getIsPipeline() != null && task.getIsPipeline() == 1) { + java.util.List items = taskItemMapper.selectByTaskId(task.getId()); + if (items != null && !items.isEmpty()) { + // 聚合所有子任务的 typeDetails + java.util.List> allDetails = new java.util.ArrayList<>(); + for (TaskItem item : items) { + if (item.getTypeDetails() != null && !item.getTypeDetails().isEmpty()) { + try { + com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper(); + java.util.List> itemDetails = objectMapper.readValue( + item.getTypeDetails(), + new com.fasterxml.jackson.core.type.TypeReference>>() {} + ); + allDetails.addAll(itemDetails); + } catch (Exception e) { + log.warn("解析子任务 {} 的 typeDetails 失败: {}", item.getId(), e.getMessage()); + } + } + } + if (!allDetails.isEmpty()) { + try { + com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper(); + task.setTypeDetails(objectMapper.writeValueAsString(allDetails)); + } catch (Exception e) { + log.warn("序列化任务 {} 的 typeDetails 失败: {}", task.getId(), e.getMessage()); + } + } + } + } } return result;