From bee845a2d573feb9f659bac0ecf9ccf939698e7e Mon Sep 17 00:00:00 2001 From: weiweiw <14335254+weiweiw22@user.noreply.gitee.com> Date: Wed, 27 Nov 2024 16:25:18 +0800 Subject: [PATCH] enhance --- .../dataset/AnnotationTaskController.java | 18 +++++++- .../domain/dataset/AnnotationTaskEntity.java | 3 ++ .../dataset/AnnotationTaskServiceImpl.java | 16 +++++++ .../dataset/AnnotationTaskService.java | 3 ++ .../resources/mapper/AnnotationTaskMapper.xml | 44 ++++++++++++++----- sql/bonus_ai.sql | 2 + 6 files changed, 73 insertions(+), 13 deletions(-) diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/AnnotationTaskController.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/AnnotationTaskController.java index 4eeb190..752f610 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/AnnotationTaskController.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/dataset/AnnotationTaskController.java @@ -173,7 +173,7 @@ public class AnnotationTaskController extends BaseController { - /**手工标注或审核 + /**手工标注 * @param subTask 标注文件的信息 * @return 返回影响的行数或错误信 */ @@ -188,6 +188,22 @@ public class AnnotationTaskController extends BaseController { } } + /**手工审核 + * @param subTask 标注文件的信息 + * @return 返回影响的行数或错误信 + */ + @RequiresPermissions("dataCenter:task:audit") + @PostMapping("/audit") + public AjaxResult audit(@Validated @RequestBody AnnotationTaskAnnotatorEntity subTask) { + int result = annotationTaskService.audit(subTask); + if (result >0) { + return AjaxResult.success("手工标注保存成功"); + }else { + return AjaxResult.error("手工标注保存失败"); + } + } + + /**智能标注,预留接口 * @param subTask 标注文件的信息 * @return 返回影响的行数或错误信 diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/AnnotationTaskEntity.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/AnnotationTaskEntity.java index b1c13e3..cec3b4c 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/AnnotationTaskEntity.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/dataset/AnnotationTaskEntity.java @@ -41,6 +41,9 @@ public class AnnotationTaskEntity extends BaseEntity { /**删除标志(0代表存在 1代表删除) */ private String delFlag; + private String startTime; + private String endTime; + /**标注人员列表*/ private List annotators; 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 d53725a..167876a 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 @@ -11,9 +11,11 @@ import com.bonus.ai.mapper.DatasetFileMapper; import com.bonus.ai.service.dataset.AnnotationTaskService; import com.bonus.ai.utils.AverageUtil; import com.bonus.common.core.utils.SpringUtils; +import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.web.page.TableDataInfo; import com.bonus.common.security.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.security.SecurityUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; @@ -271,6 +273,7 @@ public class AnnotationTaskServiceImpl implements AnnotationTaskService { @Override public int manualAnnotate(AnnotationTaskAnnotatorEntity subTask) { try { + subTask.setAnnotationResource("0"); return annotationTaskMapper.updateAnnotationInfo(subTask); }catch(Exception e){ e.printStackTrace(); @@ -279,6 +282,19 @@ public class AnnotationTaskServiceImpl implements AnnotationTaskService { } + @Override + public int audit(AnnotationTaskAnnotatorEntity subTask){ + try { + if (StringUtils.isEmpty(subTask.getAuditFailedReason())){ + subTask.setAuditFailedReason(""); + } + return annotationTaskMapper.updateAnnotationInfo(subTask); + }catch(Exception e){ + e.printStackTrace(); + } + return 0; + } + /** * AI标注 */ 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 3c45c66..7d33b22 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 @@ -26,6 +26,9 @@ public interface AnnotationTaskService { /**手工标注*/ int manualAnnotate(AnnotationTaskAnnotatorEntity subTask); + /**手工审核*/ + int audit(AnnotationTaskAnnotatorEntity subTask); + /**AI自动标注*/ int aiAnnotate(AnnotationTaskAnnotatorEntity subTask); 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 e9b4824..89a9787 100644 --- a/bonus-modules/bonus-ai/src/main/resources/mapper/AnnotationTaskMapper.xml +++ b/bonus-modules/bonus-ai/src/main/resources/mapper/AnnotationTaskMapper.xml @@ -84,11 +84,13 @@ SUM(CASE WHEN ap.annotation_status = '2' THEN 1 ELSE 0 END) AS status2Count, SUM(CASE WHEN ap.annotation_status = '3' THEN 1 ELSE 0 END) AS status3Count, COUNT(*) AS totalCount, - atv.version_name as lastVersionName + atv.version_name as lastVersionName, + DATE_FORMAT(at.start_time, '%Y-%m-%d %H:%i:%s') AS startTime, + DATE_FORMAT(at.end_time, '%Y-%m-%d %H:%i:%s') AS endTime FROM ai_annotation_task at - left join ai_annotation_task_annotator_map ap on at.task_id = ap.task_id - LEFT join ai_dataset ad on ad.dataset_id = at.dataset_id - LEFT join sys_user su on su.user_id = at.create_by + LEFT JOIN ai_annotation_task_annotator_map ap on at.task_id = ap.task_id + LEFT JOIN ai_dataset ad on ad.dataset_id = at.dataset_id + LEFT JOIN sys_user su on su.user_id = at.create_by LEFT JOIN ( SELECT task_id, dataset_id, version_name FROM ai_dataset_version @@ -102,6 +104,10 @@ AND at.task_name LIKE CONCAT('%', #{taskName}, '%') + + AND at.start_time >= STR_TO_DATE(#{startTime}, '%Y-%m-%d %H:%i:%s') + AND STR_TO_DATE(#{endTime}, '%Y-%m-%d %H:%i:%s') >= at.end_time + AND (ap.annotator_id = #{annotatorId} or ap.reviewer_id = #{reviewerId} or at.create_by = #{createBy}) @@ -160,6 +166,8 @@ #{updateTime}, + + INSERT INTO ai_annotation_task_annotator_map @@ -195,7 +203,6 @@ VALUES - #{taskId}, @@ -228,11 +235,10 @@ #{annotationResource}, - - + UPDATE ai_annotation_task @@ -260,12 +266,13 @@ WHERE task_id = #{taskId} - + + - + UPDATE ai_annotation_task_annotator_map - annotation_result = #{annotationResult}, + + annotation_result = #{annotationResult}, + annotation_time = sysdate(), + annotateTaskStatus = '1', + + + audit_failed_reason = #{auditFailedReason}, + review_time = sysdate(), + annotation_status = '3', + + + annotateTaskStatus = #{annotateTaskStatus}, + review_time = sysdate(), + annotation_resource = #{annotationResource}, - annotation_status = #{annotateTaskStatus}, label_studio_project_id = #{labelStudioProjectId}, update_by = #{updateBy}, - WHERE task_id = #{taskId} + WHERE task_id = #{taskId} and file_id = #{fileId}