fix: 修复创建任务时productBarcodes数组转字符串的问题

This commit is contained in:
Your Name 2026-01-22 17:11:02 +08:00
parent 9fe9297d27
commit 3d11d48dde

View File

@ -37,13 +37,37 @@ public class TaskController {
@Operation(summary = "创建任务", description = "发起新的设计任务")
@PostMapping
public Result<Long> createTask(@RequestBody Task task, @RequestHeader("Authorization") String authHeader) {
log.info("创建任务: {}", task.getTitle());
public Result<Long> createTask(@RequestBody Object taskData, @RequestHeader("Authorization") String authHeader) {
String token = jwtUtil.extractTokenFromHeader(authHeader);
Long userId = jwtUtil.getUserIdFromToken(token);
task.setPublisherId(userId);
Long taskId = taskService.createTask(task);
return Result.success(taskId);
try {
com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper();
String json = objectMapper.writeValueAsString(taskData);
com.fasterxml.jackson.databind.JsonNode jsonNode = objectMapper.readTree(json);
// 处理 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<String> 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);
log.info("创建任务: {}", task.getTitle());
task.setPublisherId(userId);
Long taskId = taskService.createTask(task);
return Result.success(taskId);
} catch (Exception e) {
log.error("解析任务数据失败", e);
throw new com.designhub.exception.BusinessException(com.designhub.common.ResultCode.PARAM_ERROR, "任务数据格式错误");
}
}
@Operation(summary = "创建流水线任务", description = "创建包含多个子任务的流水线任务")