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;