Эх сурвалжийг харах

add TargetIdentificationTask

allen 10 сар өмнө
parent
commit
8f62e66b3f

+ 7 - 4
script/sql/postgresql/data(postgresql).sql

@@ -797,6 +797,7 @@ DROP TABLE IF EXISTS public.target_identification_subtask;
 
 CREATE TABLE "public"."target_identification_subtask" (
  "id" "pg_catalog"."int8" NOT NULL,
+ "task_id" "pg_catalog"."int8",
  "name" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
  "status" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
  "create_by" "pg_catalog"."int8",
@@ -807,8 +808,7 @@ CREATE TABLE "public"."target_identification_subtask" (
  "tenant_id" "pg_catalog"."int8" DEFAULT 0,
  version           integer                 DEFAULT 0,
  del_flag      smallint               DEFAULT '0'::smallint         NOT NULL,
- "system" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
- CONSTRAINT "target_identification_task_pk" PRIMARY KEY ("id")
+ CONSTRAINT "target_identification_subtask_pk" PRIMARY KEY ("id")
 );
 
 ALTER TABLE "public"."target_identification_subtask"
@@ -816,6 +816,8 @@ ALTER TABLE "public"."target_identification_subtask"
 
 COMMENT ON COLUMN "public"."target_identification_subtask"."id" IS '主键ID';
 
+COMMENT ON COLUMN "public"."target_identification_subtask"."task_id" IS '任务ID';
+
 COMMENT ON COLUMN "public"."target_identification_subtask"."name" IS '任务名称';
 
 COMMENT ON COLUMN "public"."target_identification_subtask"."status" IS '任务状态';
@@ -842,6 +844,7 @@ DROP TABLE IF EXISTS public.target_identification_subtask_details;
 
 CREATE TABLE "public"."target_identification_subtask_details" (
  "id" "pg_catalog"."int8" NOT NULL,
+ "subtask_id" "pg_catalog"."int8",
  "name" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
  "status" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
  "algorithm_id" "pg_catalog"."int8",
@@ -862,7 +865,6 @@ CREATE TABLE "public"."target_identification_subtask_details" (
  "tenant_id" "pg_catalog"."int8" DEFAULT 0,
  version           integer                 DEFAULT 0,
  del_flag      smallint               DEFAULT '0'::smallint         NOT NULL,
- "system" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
  CONSTRAINT "target_identification_subtask_details_pk" PRIMARY KEY ("id")
 );
 
@@ -871,6 +873,8 @@ ALTER TABLE "public"."target_identification_subtask_details"
 
 COMMENT ON COLUMN "public"."target_identification_subtask_details"."id" IS '主键ID';
 
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."subtask_id" IS '子任务id';
+
 COMMENT ON COLUMN "public"."target_identification_subtask_details"."name" IS '任务名称';
 
 COMMENT ON COLUMN "public"."target_identification_subtask_details"."status" IS '任务状态';
@@ -931,7 +935,6 @@ CREATE TABLE "public"."data_amplification_task" (
  "tenant_id" "pg_catalog"."int8" DEFAULT 0,
  version           integer                 DEFAULT 0,
  del_flag      smallint               DEFAULT '0'::smallint         NOT NULL,
- "system" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
  CONSTRAINT "data_amplification_task_pkey" PRIMARY KEY ("id")
 );
 

+ 4 - 3
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationTaskController.java

@@ -2,6 +2,7 @@ package com.taais.biz.controller;
 
 import java.util.List;
 
+import com.taais.biz.domain.dto.task.CreateTargetIdentificationTaskDto;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import cn.dev33.satoken.annotation.SaCheckPermission;
@@ -108,9 +109,9 @@ public class TargetIdentificationTaskController extends BaseController {
         return CommonResult.success();
     }
 
-    public CommonResult<String> createTask(Object o){
-        String errorMsg = targetIdentificationTaskService.createTask(o);
-        if(StringUtils.isNotEmpty(errorMsg)){
+    public CommonResult<String> createTask(CreateTargetIdentificationTaskDto taskDto) {
+        String errorMsg = targetIdentificationTaskService.createTask(taskDto);
+        if (StringUtils.isNotEmpty(errorMsg)) {
             return CommonResult.fail(errorMsg);
         } else {
             return CommonResult.success();

+ 3 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/TargetIdentificationSubtask.java

@@ -27,6 +27,9 @@ private static final long serialVersionUID = 1L;
     @Id
     private Long id;
 
+    // 任务id
+    private Long taskId;
+
     /** 任务名称 */
     private String name;
 

+ 3 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/TargetIdentificationSubtaskDetails.java

@@ -29,6 +29,9 @@ private static final long serialVersionUID = 1L;
     @Id
     private Long id;
 
+    // 子任务id
+    private Long subTaskId;
+
     /** 任务名称 */
     private String name;
 

+ 3 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/TargetIdentificationSubtaskBo.java

@@ -23,6 +23,9 @@ public class TargetIdentificationSubtaskBo extends BaseEntity{
     @NotNull(message = "主键ID不能为空")
     private Long id;
 
+    // 任务id
+    private Long taskId;
+
     /**
      * 任务名称
      */

+ 6 - 12
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/TargetIdentificationSubtaskDetailsBo.java

@@ -25,6 +25,9 @@ public class TargetIdentificationSubtaskDetailsBo extends BaseEntity{
     @NotNull(message = "主键ID不能为空")
     private Long id;
 
+    // 子任务id
+    private Long subtaskId;
+
     /**
      * 任务名称
      */
@@ -43,6 +46,9 @@ public class TargetIdentificationSubtaskDetailsBo extends BaseEntity{
     @NotNull(message = "算法不能为空")
     private Long algorithmId;
 
+    @NotNull(message = "算法不能为空")
+    private String algorithmType;
+
     /**
      * 数据批次号
      */
@@ -76,40 +82,28 @@ public class TargetIdentificationSubtaskDetailsBo extends BaseEntity{
     /**
      * 开始时间
      */
-    @NotNull(message = "开始时间不能为空")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date startTime;
 
     /**
      * 结束时间
      */
-    @NotNull(message = "结束时间不能为空")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endTime;
 
     /**
      * 耗时
      */
-    @NotNull(message = "耗时不能为空")
     private Long costSecond;
 
     /**
      * $column.columnComment
      */
-    @NotBlank(message = "$column.columnComment不能为空")
     private String log;
 
     /**
      * 备注
      */
-    @NotBlank(message = "备注不能为空")
     private String remarks;
 
-    /**
-     * $column.columnComment
-     */
-    @NotBlank(message = "$column.columnComment不能为空")
-    private String system;
-
-
 }

+ 2 - 3
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/dto/task/CreateTargetIdentificationTaskDto.java

@@ -3,7 +3,6 @@ package com.taais.biz.domain.dto.task;
 import lombok.Data;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author allen
@@ -23,9 +22,9 @@ public class CreateTargetIdentificationTaskDto {
     private String taskType;
 
     // 测试项 target_identification_task_item 1训练,2测试
-    private List<String> taskItems;
+    private List<String> taskItemList;
 
-    private List<TaskDto> trainAlgTask;
+    private List<TaskDto> algTaskList;
     //训练数据 "批次号1.批次号2"
     private List<String> trainBatchNumList;
 

+ 4 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskDetailsVo.java

@@ -1,7 +1,7 @@
 package com.taais.biz.domain.vo;
 
 import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
+
 import com.taais.biz.domain.TargetIdentificationSubtaskDetails;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
@@ -33,6 +33,9 @@ private static final long serialVersionUID = 1L;
     @ExcelProperty(value = "主键ID")
     private Long id;
 
+    // 子任务id
+    private Long subtaskId;
+
     /** 任务名称 */
     @ExcelProperty(value = "任务名称")
     private String name;

+ 3 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskVo.java

@@ -31,6 +31,9 @@ private static final long serialVersionUID = 1L;
     @ExcelProperty(value = "主键ID")
     private Long id;
 
+    // 任务id
+    private Long taskId;
+
     /** 任务名称 */
     @ExcelProperty(value = "任务名称")
     private String name;

+ 2 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/service/ITargetIdentificationTaskService.java

@@ -3,6 +3,7 @@ package com.taais.biz.service;
 import java.util.List;
 
 import com.taais.biz.domain.TargetIdentificationTask;
+import com.taais.biz.domain.dto.task.CreateTargetIdentificationTaskDto;
 import com.taais.biz.domain.vo.TargetIdentificationTaskVo;
 import com.taais.biz.domain.bo.TargetIdentificationTaskBo;
 import com.taais.common.orm.core.service.IBaseService;
@@ -63,5 +64,5 @@ public interface ITargetIdentificationTaskService extends IBaseService<TargetIde
      */
     boolean deleteByIds(Long[] ids);
 
-    String createTask(Object o);
+    String createTask(CreateTargetIdentificationTaskDto o);
 }

+ 82 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationTaskServiceImpl.java

@@ -6,6 +6,13 @@ import java.util.List;
 import cn.hutool.core.util.ObjectUtil;
 import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
+import com.taais.biz.constant.BizConstant;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskBo;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskDetailsBo;
+import com.taais.biz.domain.dto.task.CreateTargetIdentificationTaskDto;
+import com.taais.biz.domain.dto.task.TaskDto;
+import com.taais.biz.service.ITargetIdentificationSubtaskDetailsService;
+import com.taais.biz.service.ITargetIdentificationSubtaskService;
 import com.taais.common.core.utils.MapstructUtils;
 import com.taais.common.core.utils.StringUtils;
 import com.taais.common.orm.core.page.PageQuery;
@@ -32,6 +39,11 @@ public class TargetIdentificationTaskServiceImpl extends BaseServiceImpl<TargetI
     @Resource
     private TargetIdentificationTaskMapper targetIdentificationTaskMapper;
 
+    @Resource
+    private ITargetIdentificationSubtaskService subtaskService;
+    @Resource
+    private ITargetIdentificationSubtaskDetailsService subtaskDetailsService;
+
     @Override
     public QueryWrapper query() {
         return super.query().from(TARGET_IDENTIFICATION_TASK);
@@ -130,7 +142,76 @@ public class TargetIdentificationTaskServiceImpl extends BaseServiceImpl<TargetI
     }
 
     @Override
-    public String createTask(Object o) {
+    @Transactional
+    public String createTask(CreateTargetIdentificationTaskDto taskDto) {
+        String errorMsg = "";
+        // 检查数据是否有问题
+        errorMsg = checkTask(taskDto);
+
+        if (StringUtils.isNotEmpty(errorMsg)){
+            return errorMsg;
+        }
+        // 创建任务
+        TargetIdentificationTaskBo taskBo = new TargetIdentificationTaskBo();
+        taskBo.setName(taskDto.getTaskName());
+        taskBo.setStatus(BizConstant.TASK_STATUS_PENDING);
+        // todo 确保保存后有id
+        this.insert(taskBo);
+
+        // 创建训练子任务
+        if(taskDto.getTaskItemList().contains(CreateTargetIdentificationTaskDto.TASK_TYPE_SINGLE_DATA_AND_MORE_ALGORITHM)){
+            createTrainTask(taskBo.getId(),taskDto);
+        }
+        // 创建测试子任务
+        if (taskDto.getTaskItemList().contains(CreateTargetIdentificationTaskDto.TASK_TYPE_SINGLE_DATA_AND_MORE_ALGORITHM){
+            createTestTask(taskBo.getId(),taskDto);
+        }
+        return null;
+    }
+
+    private void createTestTask(Long taskId, CreateTargetIdentificationTaskDto taskDto) {
+        List<TaskDto> algTaskList = taskDto.getAlgTaskList();
+        List<String> testBatchNumList = taskDto.getTestBatchNumList();
+        TargetIdentificationSubtaskBo subtask = new TargetIdentificationSubtaskBo();
+        subtask.setName("测试");
+        subtask.setStatus(BizConstant.TASK_STATUS_PENDING);
+        subtask.setTaskId(taskId);
+        // todo set others params
+
+        // todo 保证有主键id
+
+        subtaskService.insert(subtask);
+
+        for (TaskDto algTask : algTaskList) {
+            // 通过算法id 获取算法配置
+            Long algorithmId = algTask.getAlgorithmId();
+            // todo
+            String algUrl = "";
+            String algName = "";
+            // algConfig = xxxService.getById(algorithmId)
+            // alg algUrl = algConfig.getTestUrl()
+            // alg algName = algConfig.getName()
+
+            for (String batchNum : testBatchNumList) {
+                createSubTaskDetails(subtask, algUrl,algName, algTask, testBatchNumList);
+            }
+        }
+    }
+
+    private void createSubTaskDetails(TargetIdentificationSubtaskBo subtask, String algUrl, String algName, TaskDto algTask, List<String> testBatchNumList) {
+        //
+        TargetIdentificationSubtaskDetailsBo subtaskDetail = new TargetIdentificationSubtaskDetailsBo();
+        // 通过算法id获取算法配置
+        subtaskDetail.setName(algName);
+        subtaskDetailsService.insert(subtaskDetail);
+    }
+
+    private void createTrainTask(Long taskId, CreateTargetIdentificationTaskDto taskDto) {
+
+    }
+
+    // todo 检查数据是否有问题
+    private String checkTask(CreateTargetIdentificationTaskDto taskDto) {
         return null;
     }