diff --git a/backend/src/main/java/com/designhub/controller/TaskController.java b/backend/src/main/java/com/designhub/controller/TaskController.java index 3062454..38302a9 100644 --- a/backend/src/main/java/com/designhub/controller/TaskController.java +++ b/backend/src/main/java/com/designhub/controller/TaskController.java @@ -153,12 +153,23 @@ public class TaskController { boolean hasItems = jsonNode.has("items") && jsonNode.get("items").isArray() && jsonNode.get("items").size() > 0; if (isPipeline || hasItems) { - // 流水线任务更新 - com.designhub.dto.PipelineTaskDTO dto = objectMapper.convertValue(taskData, com.designhub.dto.PipelineTaskDTO.class); + // 流水线任务更新(PipelineTaskDTO 的 productBarcodes 是 List,不需要转换) + com.designhub.dto.PipelineTaskDTO dto = objectMapper.treeToValue(jsonNode, com.designhub.dto.PipelineTaskDTO.class); taskService.updatePipelineTask(id, dto, userId); } else { - // 普通任务更新 - Task task = objectMapper.convertValue(taskData, Task.class); + // 普通任务更新:处理 productBarcodes 字段,如果是数组,转换为逗号分隔的字符串 + if (jsonNode.has("productBarcodes") && jsonNode.get("productBarcodes").isArray()) { + com.fasterxml.jackson.databind.node.ArrayNode barcodesArray = (com.fasterxml.jackson.databind.node.ArrayNode) jsonNode.get("productBarcodes"); + java.util.List barcodesList = new java.util.ArrayList<>(); + for (com.fasterxml.jackson.databind.JsonNode barcodeNode : barcodesArray) { + if (barcodeNode.isTextual()) { + barcodesList.add(barcodeNode.asText()); + } + } + String barcodesString = String.join(",", barcodesList); + ((com.fasterxml.jackson.databind.node.ObjectNode) jsonNode).put("productBarcodes", barcodesString); + } + Task task = objectMapper.treeToValue(jsonNode, Task.class); taskService.updateTask(id, task, userId); } } catch (Exception e) {