diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/AnnotationExportController.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/AnnotationExportController.java new file mode 100644 index 0000000..8185fbe --- /dev/null +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/AnnotationExportController.java @@ -0,0 +1,59 @@ +package com.bonus.ai.controller; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.bonus.ai.domain.DataSetBasicFileEntity; +import com.bonus.ai.service.dataset.AnnotationTaskService; +import com.bonus.common.security.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; + + +@RestController +@RequestMapping("/annotations") +public class AnnotationExportController { + + @Resource + private AnnotationTaskService annotationTaskService; + private final ObjectMapper objectMapper = new ObjectMapper(); + + + @RequiresPermissions("dataCenter:task:annotation:export") + @PostMapping("/export/{taskId}") + public void exportAuditedAnnotations(HttpServletResponse response, HttpServletRequest request, @PathVariable Long taskId) { + try { + // Step 1: 获取标注结果 + List annotations = annotationTaskService.geAllAuditAnnotationByTaskId(taskId); + + // Step 2: 按文件生成 JSON + List jsonFiles = new ArrayList<>(); + for (DataSetBasicFileEntity annotation : annotations) { + String fileName = annotation.getFileName() + ".json"; + File jsonFile = createJsonFile(fileName, annotation); + jsonFiles.add(jsonFile); + } + + // Step 3: 压缩为 ZIP + + // Step 4: 设置响应头,提供文件下载 + } + catch (Exception e) { + e.printStackTrace(); + } + + } + + + public File createJsonFile(String fileName, Object data) throws IOException { + File jsonFile = new File(fileName); + objectMapper.writerWithDefaultPrettyPrinter().writeValue(jsonFile, data); + return jsonFile; + } +} diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/AnnotationFileStatusCount.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/AnnotationFileStatusCount.java deleted file mode 100644 index 9d7b47f..0000000 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/AnnotationFileStatusCount.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.bonus.ai.domain.dataset; - -public class AnnotationFileStatusCount { - private String annotationStatus; - private Long recordCount; - - // Getters and Setters -} \ No newline at end of file diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/AnnotationTaskServiceImpl.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/AnnotationTaskServiceImpl.java index 9b41d80..b06d9f2 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/AnnotationTaskServiceImpl.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/Impl/dataset/AnnotationTaskServiceImpl.java @@ -334,5 +334,17 @@ public class AnnotationTaskServiceImpl implements AnnotationTaskService { return annotationTaskMapper.getMyNoAuditTask(reviewerId); } - + @Override + public List geAllAuditAnnotationByTaskId(Long taskId){ + try { + AnnotationTaskEntity task = new AnnotationTaskEntity(); + task.setTaskId(taskId); + task.setFileAnnotationStatus("2"); + return annotationTaskMapper.getTaskBasicFile(task); + }catch (Exception e) + { + e.printStackTrace(); + return new ArrayList<>(); + } + } } diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/AnnotationTaskService.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/AnnotationTaskService.java index 5fcdf8b..e1a8d00 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/AnnotationTaskService.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/dataset/AnnotationTaskService.java @@ -58,5 +58,8 @@ public interface AnnotationTaskService { List getMyNoAnnotationTask(); /**获取由我审核的未完成审核的任务列表*/ List getMyNoAuditTask(); + + /**根据taskid获取所有已经审核的标注结果*/ + List geAllAuditAnnotationByTaskId(Long taskId); ; } diff --git a/bonus-modules/bonus-ai/src/main/resources/mapper/AnnotationTaskMapper.xml b/bonus-modules/bonus-ai/src/main/resources/mapper/AnnotationTaskMapper.xml index 5503706..cd29b56 100644 --- a/bonus-modules/bonus-ai/src/main/resources/mapper/AnnotationTaskMapper.xml +++ b/bonus-modules/bonus-ai/src/main/resources/mapper/AnnotationTaskMapper.xml @@ -313,13 +313,13 @@ WHERE task_id = #{taskId} and file_id = #{fileId} - + + + + + + +