Browse Source

add TargetIdentificationTask

allen 10 months ago
parent
commit
e23b193e89
39 changed files with 2503 additions and 6 deletions
  1. 287 0
      script/sql/postgresql/data(postgresql).sql
  2. BIN
      script/sql/postgresql/taais20240815-2.sql
  3. BIN
      script/sql/postgresql/taais2024811.sql
  4. 3 2
      taais-admin/src/main/resources/application-dev.yml
  5. 109 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationSubtaskController.java
  6. 109 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationSubtaskDetailsController.java
  7. 119 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationTaskController.java
  8. 1 1
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/Data.java
  9. 47 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/TargetIdentificationSubtask.java
  10. 79 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/TargetIdentificationSubtaskDetails.java
  11. 47 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/TargetIdentificationTask.java
  12. 51 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/TargetIdentificationSubtaskBo.java
  13. 115 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/TargetIdentificationSubtaskDetailsBo.java
  14. 51 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/TargetIdentificationTaskBo.java
  15. 32 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/dto/task/CreateTargetIdentificationTaskDto.java
  16. 1 1
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/DataVo.java
  17. 92 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskDetailsImportVo.java
  18. 100 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskDetailsVo.java
  19. 49 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskImportVo.java
  20. 57 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskVo.java
  21. 49 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationTaskImportVo.java
  22. 57 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationTaskVo.java
  23. 119 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/listener/TargetIdentificationSubtaskDetailsImportListener.java
  24. 119 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/listener/TargetIdentificationSubtaskImportListener.java
  25. 119 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/listener/TargetIdentificationTaskImportListener.java
  26. 16 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/TargetIdentificationSubtaskDetailsMapper.java
  27. 16 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/TargetIdentificationSubtaskMapper.java
  28. 16 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/TargetIdentificationTaskMapper.java
  29. 66 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/service/ITargetIdentificationSubtaskDetailsService.java
  30. 66 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/service/ITargetIdentificationSubtaskService.java
  31. 67 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/service/ITargetIdentificationTaskService.java
  32. 152 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationSubtaskDetailsServiceImpl.java
  33. 132 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationSubtaskServiceImpl.java
  34. 137 0
      taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationTaskServiceImpl.java
  35. 7 0
      taais-modules/taais-biz/src/main/resources/mapper/identification/TargetIdentificationSubtaskDetailsMapper.xml
  36. 7 0
      taais-modules/taais-biz/src/main/resources/mapper/identification/TargetIdentificationSubtaskMapper.xml
  37. 7 0
      taais-modules/taais-biz/src/main/resources/mapper/identification/TargetIdentificationTaskMapper.xml
  38. 1 1
      taais-modules/taais-system/src/main/java/com/taais/system/service/impl/SysDictDataServiceImpl.java
  39. 1 1
      taais-modules/taais-system/src/main/java/com/taais/system/service/impl/SysDictTypeServiceImpl.java

+ 287 - 0
script/sql/postgresql/data(postgresql).sql

@@ -747,3 +747,290 @@ values(2024061115344104, '算法数据集合删除', 2024061115344100, '4',  '',
 
 insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
 values(2024061115344105, '算法数据集合导出', 2024061115344100, '5',  '', '', 1, 0, 'F', '0', '0', 'task:dataSet:export',       '', 1, now(), 1, null, '');
+
+DROP TABLE IF EXISTS public.target_identification_task;
+
+CREATE TABLE "public"."target_identification_task" (
+ "id" "pg_catalog"."int8" NOT NULL,
+ "name" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "status" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "create_by" "pg_catalog"."int8",
+ "create_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "update_by" "pg_catalog"."int8",
+ "update_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "remarks" "pg_catalog"."varchar" COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
+ "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")
+);
+
+ALTER TABLE "public"."target_identification_task"
+    OWNER TO "postgres";
+
+COMMENT ON COLUMN "public"."target_identification_task"."id" IS '主键ID';
+
+COMMENT ON COLUMN "public"."target_identification_task"."name" IS '任务名称';
+
+COMMENT ON COLUMN "public"."target_identification_task"."status" IS '任务状态';
+
+COMMENT ON COLUMN "public"."target_identification_task"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "public"."target_identification_task"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "public"."target_identification_task"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "public"."target_identification_task"."update_time" IS '更新时间';
+
+COMMENT ON COLUMN "public"."target_identification_task"."remarks" IS '备注';
+
+COMMENT ON COLUMN "public"."target_identification_task"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "public"."target_identification_task"."tenant_id" IS '租户编码';
+
+COMMENT ON COLUMN "public"."target_identification_task"."del_flag" IS '逻辑删除标志(0代表存在 1代表删除)';
+
+COMMENT ON TABLE "public"."target_identification_task" IS '目标识别任务';
+
+DROP TABLE IF EXISTS public.target_identification_subtask;
+
+CREATE TABLE "public"."target_identification_subtask" (
+ "id" "pg_catalog"."int8" NOT NULL,
+ "name" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "status" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "create_by" "pg_catalog"."int8",
+ "create_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "update_by" "pg_catalog"."int8",
+ "update_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "remarks" "pg_catalog"."varchar" COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
+ "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")
+);
+
+ALTER TABLE "public"."target_identification_subtask"
+    OWNER TO "postgres";
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."id" IS '主键ID';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."name" IS '任务名称';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."status" IS '任务状态';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."update_time" IS '更新时间';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."remarks" IS '备注';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."tenant_id" IS '租户编码';
+
+COMMENT ON COLUMN "public"."target_identification_subtask"."del_flag" IS '逻辑删除标志(0代表存在 1代表删除)';
+
+COMMENT ON TABLE "public"."target_identification_subtask" IS '目标识别子任务';
+
+DROP TABLE IF EXISTS public.target_identification_subtask_details;
+
+CREATE TABLE "public"."target_identification_subtask_details" (
+ "id" "pg_catalog"."int8" NOT NULL,
+ "name" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "status" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "algorithm_id" "pg_catalog"."int8",
+ "data_batch_nums" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "parameters" "pg_catalog"."text" COLLATE "pg_catalog"."default",
+ "preprocess_path" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "result_path" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "index" "pg_catalog"."int8" DEFAULT 0,
+ "start_time" "pg_catalog"."timestamp",
+ "end_time" "pg_catalog"."timestamp",
+ "cost_second" "pg_catalog"."int8",
+ "log" "pg_catalog"."text" COLLATE "pg_catalog"."default",
+ "create_by" "pg_catalog"."int8",
+ "create_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "update_by" "pg_catalog"."int8",
+ "update_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "remarks" "pg_catalog"."varchar" COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
+ "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")
+);
+
+ALTER TABLE "public"."target_identification_subtask_details"
+    OWNER TO "postgres";
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."id" IS '主键ID';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."name" IS '任务名称';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."status" IS '任务状态';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."algorithm_id" IS '算法';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."data_batch_nums" IS '数据批次号';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."parameters" IS '调用算法时所用的参数';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."preprocess_path" IS '预处理数据路径';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."result_path" IS '结果数据路径';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."index" IS '序号';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."start_time" IS '开始时间';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."end_time" IS '结束时间';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."cost_second" IS '耗时';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."update_time" IS '更新时间';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."remarks" IS '备注';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."tenant_id" IS '租户编码';
+
+COMMENT ON COLUMN "public"."target_identification_subtask_details"."del_flag" IS '逻辑删除标志(0代表存在 1代表删除)';
+
+COMMENT ON TABLE "public"."target_identification_subtask_details" IS '目标识别子任务详情';
+
+DROP TABLE IF EXISTS public.data_amplification_task;
+
+CREATE TABLE "public"."data_amplification_task" (
+ "id" "pg_catalog"."int8" NOT NULL,
+ "name" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "status" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "data_batch_nums" "pg_catalog"."varchar" COLLATE "pg_catalog"."default",
+ "parameters" "pg_catalog"."text" COLLATE "pg_catalog"."default",
+ "start_time" "pg_catalog"."timestamp",
+ "end_time" "pg_catalog"."timestamp",
+ "cost_second" "pg_catalog"."int8",
+ "log" "pg_catalog"."text" COLLATE "pg_catalog"."default",
+ "create_by" "pg_catalog"."int8",
+ "create_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "update_by" "pg_catalog"."int8",
+ "update_time" "pg_catalog"."timestamp" DEFAULT CURRENT_TIMESTAMP,
+ "remarks" "pg_catalog"."varchar" COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
+ "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")
+);
+
+ALTER TABLE "public"."data_amplification_task"
+    OWNER TO "postgres";
+
+COMMENT ON COLUMN "public"."data_amplification_task"."id" IS '主键ID';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."name" IS '任务名称';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."status" IS '任务状态';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."data_batch_nums" IS '数据批次号';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."parameters" IS '调用算法时所用的参数';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."start_time" IS '开始时间';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."end_time" IS '结束时间';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."cost_second" IS '耗时';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."log" IS '日志';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."create_by" IS '创建人';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."create_time" IS '创建时间';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."update_by" IS '更新人';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."update_time" IS '更新时间';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."remarks" IS '备注';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."version" IS '乐观锁';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."tenant_id" IS '租户编码';
+
+COMMENT ON COLUMN "public"."data_amplification_task"."del_flag" IS '逻辑删除标志(0代表存在 1代表删除)';
+
+COMMENT ON TABLE "public"."data_amplification_task" IS '数据扩增任务';
+
+-- 菜单
+-- 菜单 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395300, '目标识别任务', 153308760386924544, '1', 'identificationTask', 'identification/identificationTask/index', 1, 0, 'C', '0', '0', 'identification:identificationTask:list', '', 1, now(), 1, null, '目标识别任务菜单');
+
+-- 按钮 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395301, '目标识别任务查询', 2024081714395300, '1',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationTask:query',        '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395302, '目标识别任务新增', 2024081714395300, '2',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationTask:add',          '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395303, '目标识别任务修改', 2024081714395300, '3',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationTask:edit',         '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395304, '目标识别任务删除', 2024081714395300, '4',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationTask:remove',       '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395305, '目标识别任务导出', 2024081714395300, '5',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationTask:export',       '', 1, now(), 1, null, '');
+
+-- 菜单 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714564100, '目标识别子任务详情', 153308760386924544, '1', 'identificationSubtaskDetails', 'identification/identificationSubtaskDetails/index', 1, 0, 'C', '0', '0', 'identification:identificationSubtaskDetails:list', '', 1, now(), 1, null, '目标识别子任务详情菜单');
+
+-- 按钮 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714564101, '目标识别子任务详情查询', 2024081714564100, '1',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtaskDetails:query',        '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714564102, '目标识别子任务详情新增', 2024081714564100, '2',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtaskDetails:add',          '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714564103, '目标识别子任务详情修改', 2024081714564100, '3',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtaskDetails:edit',         '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714564104, '目标识别子任务详情删除', 2024081714564100, '4',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtaskDetails:remove',       '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714564105, '目标识别子任务详情导出', 2024081714564100, '5',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtaskDetails:export',       '', 1, now(), 1, null, '');
+
+-- 菜单 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395200, '目标识别子任务', 153308760386924544, '1', 'identificationSubtask', 'identification/identificationSubtask/index', 1, 0, 'C', '0', '0', 'identification:identificationSubtask:list', '', 1, now(), 1, null, '目标识别子任务菜单');
+
+-- 按钮 SQL
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395201, '目标识别子任务查询', 2024081714395200, '1',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtask:query',        '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395202, '目标识别子任务新增', 2024081714395200, '2',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtask:add',          '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395203, '目标识别子任务修改', 2024081714395200, '3',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtask:edit',         '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395204, '目标识别子任务删除', 2024081714395200, '4',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtask:remove',       '', 1, now(), 1, null, '');
+
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values(2024081714395205, '目标识别子任务导出', 2024081714395200, '5',  '', '', 1, 0, 'F', '0', '0', 'identification:identificationSubtask:export',       '', 1, now(), 1, null, '');

BIN
script/sql/postgresql/taais20240815-2.sql


BIN
script/sql/postgresql/taais2024811.sql


+ 3 - 2
taais-admin/src/main/resources/application-dev.yml

@@ -35,10 +35,11 @@ mybatis-flex:
       #      password: Root@369
       #postgresql数据库
       driver-class-name: org.postgresql.Driver
-      url: jdbc:postgresql://110.41.34.83:5432/taais?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
+      url: jdbc:postgresql://localhost:5432/taais?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
+#      url: jdbc:postgresql://110.41.34.83:5432/taais?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
       username: postgres
       password: P3x0LG8jzyHRX59l
-
+#psql -h 127.0.0.1 -p 5432 -U postgres
 #    # 数据源-2
 #    ds2:
 #      # 指定为HikariDataSource

+ 109 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationSubtaskController.java

@@ -0,0 +1,109 @@
+package com.taais.biz.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.taais.common.core.core.domain.CommonResult;
+import com.taais.common.excel.utils.ExcelUtil;
+import com.taais.common.log.annotation.Log;
+import com.taais.common.log.enums.BusinessType;
+import com.taais.common.web.annotation.RepeatSubmit;
+import com.taais.common.web.core.BaseController;
+import jakarta.annotation.Resource;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskVo;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskBo;
+import com.taais.biz.service.ITargetIdentificationSubtaskService;
+
+import com.taais.common.core.core.page.PageResult;
+
+/**
+ * 目标识别子任务Controller
+ *
+ * @author Allen
+ * 2024-08-17
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/identification/identificationSubtask")
+public class TargetIdentificationSubtaskController extends BaseController {
+    @Resource
+    private ITargetIdentificationSubtaskService targetIdentificationSubtaskService;
+
+    /**
+     * 查询目标识别子任务列表
+     */
+    @SaCheckPermission("identification:identificationSubtask:list")
+    @GetMapping("/list")
+    public CommonResult<PageResult<TargetIdentificationSubtaskVo>> list(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        return CommonResult.success(targetIdentificationSubtaskService.selectPage(targetIdentificationSubtaskBo));
+    }
+
+    /**
+     * 导出目标识别子任务列表
+     */
+    @SaCheckPermission("identification:identificationSubtask:export")
+    @Log(title = "目标识别子任务", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        List<TargetIdentificationSubtaskVo> list = targetIdentificationSubtaskService.selectList(targetIdentificationSubtaskBo);
+        ExcelUtil.exportExcel(list, "目标识别子任务", TargetIdentificationSubtaskVo.class, response);
+    }
+
+    /**
+     * 获取目标识别子任务详细信息
+     */
+    @SaCheckPermission("identification:identificationSubtask:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<TargetIdentificationSubtaskVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(targetIdentificationSubtaskService.selectById(id));
+    }
+
+    /**
+     * 新增目标识别子任务
+     */
+    @SaCheckPermission("identification:identificationSubtask:add")
+    @Log(title = "目标识别子任务", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        boolean inserted = targetIdentificationSubtaskService.insert(targetIdentificationSubtaskBo);
+        if (!inserted) {
+            return CommonResult.fail("新增目标识别子任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改目标识别子任务
+     */
+    @SaCheckPermission("identification:identificationSubtask:edit")
+    @Log(title = "目标识别子任务", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        Boolean updated = targetIdentificationSubtaskService.update(targetIdentificationSubtaskBo);
+        if (!updated) {
+            return CommonResult.fail("修改目标识别子任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除目标识别子任务
+     */
+    @SaCheckPermission("identification:identificationSubtask:remove")
+    @Log(title = "目标识别子任务", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = targetIdentificationSubtaskService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除目标识别子任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 109 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationSubtaskDetailsController.java

@@ -0,0 +1,109 @@
+package com.taais.biz.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.taais.common.core.core.domain.CommonResult;
+import com.taais.common.excel.utils.ExcelUtil;
+import com.taais.common.log.annotation.Log;
+import com.taais.common.log.enums.BusinessType;
+import com.taais.common.web.annotation.RepeatSubmit;
+import com.taais.common.web.core.BaseController;
+import jakarta.annotation.Resource;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskDetailsVo;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskDetailsBo;
+import com.taais.biz.service.ITargetIdentificationSubtaskDetailsService;
+
+import com.taais.common.core.core.page.PageResult;
+
+/**
+ * 目标识别子任务Controller
+ *
+ * @author 0
+ * 2024-08-17
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/identification/identificationSubtaskDetails")
+public class TargetIdentificationSubtaskDetailsController extends BaseController {
+    @Resource
+    private ITargetIdentificationSubtaskDetailsService targetIdentificationSubtaskDetailsService;
+
+    /**
+     * 查询目标识别子任务列表
+     */
+    @SaCheckPermission("identification:identificationSubtaskDetails:list")
+    @GetMapping("/list")
+    public CommonResult<PageResult<TargetIdentificationSubtaskDetailsVo>> list(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        return CommonResult.success(targetIdentificationSubtaskDetailsService.selectPage(targetIdentificationSubtaskDetailsBo));
+    }
+
+    /**
+     * 导出目标识别子任务列表
+     */
+    @SaCheckPermission("identification:identificationSubtaskDetails:export")
+    @Log(title = "目标识别子任务", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        List<TargetIdentificationSubtaskDetailsVo> list = targetIdentificationSubtaskDetailsService.selectList(targetIdentificationSubtaskDetailsBo);
+        ExcelUtil.exportExcel(list, "目标识别子任务", TargetIdentificationSubtaskDetailsVo.class, response);
+    }
+
+    /**
+     * 获取目标识别子任务详细信息
+     */
+    @SaCheckPermission("identification:identificationSubtaskDetails:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<TargetIdentificationSubtaskDetailsVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(targetIdentificationSubtaskDetailsService.selectById(id));
+    }
+
+    /**
+     * 新增目标识别子任务
+     */
+    @SaCheckPermission("identification:identificationSubtaskDetails:add")
+    @Log(title = "目标识别子任务", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        boolean inserted = targetIdentificationSubtaskDetailsService.insert(targetIdentificationSubtaskDetailsBo);
+        if (!inserted) {
+            return CommonResult.fail("新增目标识别子任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改目标识别子任务
+     */
+    @SaCheckPermission("identification:identificationSubtaskDetails:edit")
+    @Log(title = "目标识别子任务", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        Boolean updated = targetIdentificationSubtaskDetailsService.update(targetIdentificationSubtaskDetailsBo);
+        if (!updated) {
+            return CommonResult.fail("修改目标识别子任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除目标识别子任务
+     */
+    @SaCheckPermission("identification:identificationSubtaskDetails:remove")
+    @Log(title = "目标识别子任务", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = targetIdentificationSubtaskDetailsService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除目标识别子任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 119 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationTaskController.java

@@ -0,0 +1,119 @@
+package com.taais.biz.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.taais.common.core.core.domain.CommonResult;
+import com.taais.common.excel.utils.ExcelUtil;
+import com.taais.common.log.annotation.Log;
+import com.taais.common.log.enums.BusinessType;
+import com.taais.common.web.annotation.RepeatSubmit;
+import com.taais.common.web.core.BaseController;
+import jakarta.annotation.Resource;
+import com.taais.biz.domain.vo.TargetIdentificationTaskVo;
+import com.taais.biz.domain.bo.TargetIdentificationTaskBo;
+import com.taais.biz.service.ITargetIdentificationTaskService;
+
+import com.taais.common.core.core.page.PageResult;
+
+/**
+ * 目标识别任务Controller
+ *
+ * @author km
+ * 2024-08-17
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/identification/identificationTask")
+public class TargetIdentificationTaskController extends BaseController {
+    @Resource
+    private ITargetIdentificationTaskService targetIdentificationTaskService;
+
+    /**
+     * 查询目标识别任务列表
+     */
+    @SaCheckPermission("identification:identificationTask:list")
+    @GetMapping("/list")
+    public CommonResult<PageResult<TargetIdentificationTaskVo>> list(TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        return CommonResult.success(targetIdentificationTaskService.selectPage(targetIdentificationTaskBo));
+    }
+
+    /**
+     * 导出目标识别任务列表
+     */
+    @SaCheckPermission("identification:identificationTask:export")
+    @Log(title = "目标识别任务", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        List<TargetIdentificationTaskVo> list = targetIdentificationTaskService.selectList(targetIdentificationTaskBo);
+        ExcelUtil.exportExcel(list, "目标识别任务", TargetIdentificationTaskVo.class, response);
+    }
+
+    /**
+     * 获取目标识别任务详细信息
+     */
+    @SaCheckPermission("identification:identificationTask:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<TargetIdentificationTaskVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(targetIdentificationTaskService.selectById(id));
+    }
+
+    /**
+     * 新增目标识别任务
+     */
+    @SaCheckPermission("identification:identificationTask:add")
+    @Log(title = "目标识别任务", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        boolean inserted = targetIdentificationTaskService.insert(targetIdentificationTaskBo);
+        if (!inserted) {
+            return CommonResult.fail("新增目标识别任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改目标识别任务
+     */
+    @SaCheckPermission("identification:identificationTask:edit")
+    @Log(title = "目标识别任务", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        Boolean updated = targetIdentificationTaskService.update(targetIdentificationTaskBo);
+        if (!updated) {
+            return CommonResult.fail("修改目标识别任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除目标识别任务
+     */
+    @SaCheckPermission("identification:identificationTask:remove")
+    @Log(title = "目标识别任务", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = targetIdentificationTaskService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除目标识别任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    public CommonResult<String> createTask(Object o){
+        String errorMsg = targetIdentificationTaskService.createTask(o);
+        if(StringUtils.isNotEmpty(errorMsg)){
+            return CommonResult.fail(errorMsg);
+        } else {
+            return CommonResult.success();
+        }
+    }
+}

+ 1 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/Data.java

@@ -39,7 +39,7 @@ public class Data {
     private String objectSubtype;
 
     /** 批次号 */
-    private Long batchNum;
+    private String batchNum;
 
     /** 场景 */
     private String scene;

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

@@ -0,0 +1,47 @@
+package com.taais.biz.domain;
+
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别子任务对象 target_identification_subtask
+ *
+ * @author Allen
+ * 2024-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "target_identification_subtask")
+public class TargetIdentificationSubtask extends BaseEntity
+    {
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    @Id
+    private Long id;
+
+    /** 任务名称 */
+    private String name;
+
+    /** 任务状态 */
+    private String status;
+
+    /** 备注 */
+    private String remarks;
+
+    /** 逻辑删除标志(0代表存在 1代表删除) */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+    /** $column.columnComment */
+    private String system;
+
+
+}

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

@@ -0,0 +1,79 @@
+package com.taais.biz.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别子任务对象 target_identification_subtask_details
+ *
+ * @author 0
+ * 2024-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "target_identification_subtask_details")
+public class TargetIdentificationSubtaskDetails extends BaseEntity
+    {
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    @Id
+    private Long id;
+
+    /** 任务名称 */
+    private String name;
+
+    /** 任务状态 */
+    private String status;
+
+    /** 算法 */
+    private Long algorithmId;
+
+    /** 数据批次号 */
+    private String dataBatchNums;
+
+    /** 调用算法时所用的参数 */
+    private String parameters;
+
+    /** 预处理数据路径 */
+    private String preprocessPath;
+
+    /** 结果数据路径 */
+    private String resultPath;
+
+    /** 序号 */
+    private Long index;
+
+    /** 开始时间 */
+    private Date startTime;
+
+    /** 结束时间 */
+    private Date endTime;
+
+    /** 耗时 */
+    private Long costSecond;
+
+    /** $column.columnComment */
+    private String log;
+
+    /** 备注 */
+    private String remarks;
+
+    /** 逻辑删除标志(0代表存在 1代表删除) */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+    /** $column.columnComment */
+    private String system;
+
+
+}

+ 47 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/TargetIdentificationTask.java

@@ -0,0 +1,47 @@
+package com.taais.biz.domain;
+
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别任务对象 target_identification_task
+ *
+ * @author km
+ * 2024-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "target_identification_task")
+public class TargetIdentificationTask extends BaseEntity
+    {
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    @Id
+    private Long id;
+
+    /** 任务名称 */
+    private String name;
+
+    /** 任务状态 */
+    private String status;
+
+    /** 备注 */
+    private String remarks;
+
+    /** 逻辑删除标志(0代表存在 1代表删除) */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+    /** $column.columnComment */
+    private String system;
+
+
+}

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

@@ -0,0 +1,51 @@
+package com.taais.biz.domain.bo;
+
+import com.taais.biz.domain.TargetIdentificationSubtask;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别子任务业务对象 target_identification_subtask
+ *
+ * @author Allen
+ * @date 2024-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TargetIdentificationSubtask.class, reverseConvertGenerate = false)
+public class TargetIdentificationSubtaskBo extends BaseEntity{
+    /**
+     * 主键ID
+     */
+    @NotNull(message = "主键ID不能为空")
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @NotBlank(message = "任务名称不能为空")
+    private String name;
+
+    /**
+     * 任务状态
+     */
+    @NotBlank(message = "任务状态不能为空")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空")
+    private String remarks;
+
+    /**
+     * $column.columnComment
+     */
+    @NotBlank(message = "$column.columnComment不能为空")
+    private String system;
+
+
+}

+ 115 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/TargetIdentificationSubtaskDetailsBo.java

@@ -0,0 +1,115 @@
+package com.taais.biz.domain.bo;
+
+import com.taais.biz.domain.TargetIdentificationSubtaskDetails;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别子任务业务对象 target_identification_subtask_details
+ *
+ * @author 0
+ * @date 2024-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TargetIdentificationSubtaskDetails.class, reverseConvertGenerate = false)
+public class TargetIdentificationSubtaskDetailsBo extends BaseEntity{
+    /**
+     * 主键ID
+     */
+    @NotNull(message = "主键ID不能为空")
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @NotBlank(message = "任务名称不能为空")
+    private String name;
+
+    /**
+     * 任务状态
+     */
+    @NotBlank(message = "任务状态不能为空")
+    private String status;
+
+    /**
+     * 算法
+     */
+    @NotNull(message = "算法不能为空")
+    private Long algorithmId;
+
+    /**
+     * 数据批次号
+     */
+    @NotBlank(message = "数据批次号不能为空")
+    private String dataBatchNums;
+
+    /**
+     * 调用算法时所用的参数
+     */
+    @NotBlank(message = "调用算法时所用的参数不能为空")
+    private String parameters;
+
+    /**
+     * 预处理数据路径
+     */
+    @NotBlank(message = "预处理数据路径不能为空")
+    private String preprocessPath;
+
+    /**
+     * 结果数据路径
+     */
+    @NotBlank(message = "结果数据路径不能为空")
+    private String resultPath;
+
+    /**
+     * 序号
+     */
+    @NotNull(message = "序号不能为空")
+    private Long index;
+
+    /**
+     * 开始时间
+     */
+    @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;
+
+
+}

+ 51 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/TargetIdentificationTaskBo.java

@@ -0,0 +1,51 @@
+package com.taais.biz.domain.bo;
+
+import com.taais.biz.domain.TargetIdentificationTask;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别任务业务对象 target_identification_task
+ *
+ * @author km
+ * @date 2024-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TargetIdentificationTask.class, reverseConvertGenerate = false)
+public class TargetIdentificationTaskBo extends BaseEntity{
+    /**
+     * 主键ID
+     */
+    @NotNull(message = "主键ID不能为空")
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @NotBlank(message = "任务名称不能为空")
+    private String name;
+
+    /**
+     * 任务状态
+     */
+    @NotBlank(message = "任务状态不能为空")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空")
+    private String remarks;
+
+    /**
+     * $column.columnComment
+     */
+    @NotBlank(message = "$column.columnComment不能为空")
+    private String system;
+
+
+}

+ 32 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/dto/task/CreateTargetIdentificationTaskDto.java

@@ -0,0 +1,32 @@
+package com.taais.biz.domain.dto.task;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author allen
+ */
+@Data
+public class CreateTargetIdentificationTaskDto {
+
+    public static final String TASK_TYPE_MORE_DATA_AND_SINGLE_ALGORITHM = "1";
+    public static final String TASK_TYPE_SINGLE_DATA_AND_MORE_ALGORITHM = "2";
+    public static final String TASK_ITEM_TRAIN = "1";
+    public static final String TASK_ITEM_TEST = "2";
+
+    // 任务名称
+    private String taskName;
+
+    // 任务类型 target_identification_task_type 单数据多算法任务:1,多数据单算法任务:2
+    private String taskType;
+
+    // 测试项 target_identification_task_item 1训练,2测试
+    private List<String> taskItems;
+
+    //数据 1训练,2,测试 {'1':"批次号1.批次号2","2":"批次号2,批次号3"}
+    private Map<String,String> data;
+
+    private Boolean hasTrainAugmentation;
+}

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

@@ -51,7 +51,7 @@ public class DataVo  implements Serializable {
 
     /** 批次号 */
     @ExcelProperty(value = "批次号")
-    private Long batchNum;
+    private String batchNum;
 
     /** 场景 */
     @ExcelProperty(value = "场景")

+ 92 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskDetailsImportVo.java

@@ -0,0 +1,92 @@
+package com.taais.biz.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.taais.common.excel.annotation.ExcelDictFormat;
+import com.taais.common.excel.convert.ExcelDictConvert;
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+import lombok.NoArgsConstructor;
+
+/**
+ * 目标识别子任务导入视图对象 target_identification_subtask_details
+ *
+ * @author 0
+ * @date 2024-08-17
+ */
+
+@Data
+@NoArgsConstructor
+public class TargetIdentificationSubtaskDetailsImportVo implements Serializable
+{
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+     /** 任务名称 */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+     /** 任务状态 */
+    @ExcelProperty(value = "任务状态")
+    private String status;
+
+     /** 算法 */
+    @ExcelProperty(value = "算法")
+    private Long algorithmId;
+
+     /** 数据批次号 */
+    @ExcelProperty(value = "数据批次号")
+    private String dataBatchNums;
+
+     /** 调用算法时所用的参数 */
+    @ExcelProperty(value = "调用算法时所用的参数")
+    private String parameters;
+
+     /** 预处理数据路径 */
+    @ExcelProperty(value = "预处理数据路径")
+    private String preprocessPath;
+
+     /** 结果数据路径 */
+    @ExcelProperty(value = "结果数据路径")
+    private String resultPath;
+
+     /** 序号 */
+    @ExcelProperty(value = "序号")
+    private Long index;
+
+     /** 开始时间 */
+    @ExcelProperty(value = "开始时间")
+    private Date startTime;
+
+     /** 结束时间 */
+    @ExcelProperty(value = "结束时间")
+    private Date endTime;
+
+     /** 耗时 */
+    @ExcelProperty(value = "耗时")
+    private Long costSecond;
+
+     /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String log;
+
+     /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+     /** 逻辑删除标志(0代表存在 1代表删除) */
+    @ExcelProperty(value = "逻辑删除标志(0代表存在 1代表删除)")
+    private Integer delFlag;
+
+     /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String system;
+
+
+}

+ 100 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskDetailsVo.java

@@ -0,0 +1,100 @@
+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;
+import com.taais.common.excel.annotation.ExcelDictFormat;
+import com.taais.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+import java.io.Serializable;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别子任务视图对象 target_identification_subtask_details
+ *
+ * @author 0
+ * @date 2024-08-17
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TargetIdentificationSubtaskDetails.class)
+public class TargetIdentificationSubtaskDetailsVo extends BaseEntity implements Serializable {
+
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /** 任务名称 */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+    /** 任务状态 */
+    @ExcelProperty(value = "任务状态")
+    private String status;
+
+    /** 算法 */
+    @ExcelProperty(value = "算法")
+    private Long algorithmId;
+
+    /** 数据批次号 */
+    @ExcelProperty(value = "数据批次号")
+    private String dataBatchNums;
+
+    /** 调用算法时所用的参数 */
+    @ExcelProperty(value = "调用算法时所用的参数")
+    private String parameters;
+
+    /** 预处理数据路径 */
+    @ExcelProperty(value = "预处理数据路径")
+    private String preprocessPath;
+
+    /** 结果数据路径 */
+    @ExcelProperty(value = "结果数据路径")
+    private String resultPath;
+
+    /** 序号 */
+    @ExcelProperty(value = "序号")
+    private Long index;
+
+    /** 开始时间 */
+    @ExcelProperty(value = "开始时间")
+    private Date startTime;
+
+    /** 结束时间 */
+    @ExcelProperty(value = "结束时间")
+    private Date endTime;
+
+    /** 耗时 */
+    @ExcelProperty(value = "耗时")
+    private Long costSecond;
+
+    /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String log;
+
+    /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /** 逻辑删除标志(0代表存在 1代表删除) */
+    @ExcelProperty(value = "逻辑删除标志(0代表存在 1代表删除)")
+    private Integer delFlag;
+
+    /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String system;
+
+
+
+}

+ 49 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationSubtaskImportVo.java

@@ -0,0 +1,49 @@
+package com.taais.biz.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.taais.common.excel.annotation.ExcelDictFormat;
+import com.taais.common.excel.convert.ExcelDictConvert;
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+import lombok.NoArgsConstructor;
+
+/**
+ * 目标识别子任务导入视图对象 target_identification_subtask
+ *
+ * @author Allen
+ * @date 2024-08-17
+ */
+
+@Data
+@NoArgsConstructor
+public class TargetIdentificationSubtaskImportVo implements Serializable
+{
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+     /** 任务名称 */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+     /** 任务状态 */
+    @ExcelProperty(value = "任务状态")
+    private String status;
+
+     /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+     /** 逻辑删除标志(0代表存在 1代表删除) */
+    @ExcelProperty(value = "逻辑删除标志(0代表存在 1代表删除)")
+    private Integer delFlag;
+
+     /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String system;
+
+
+}

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

@@ -0,0 +1,57 @@
+package com.taais.biz.domain.vo;
+
+import com.taais.biz.domain.TargetIdentificationSubtask;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.taais.common.excel.annotation.ExcelDictFormat;
+import com.taais.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+import java.io.Serializable;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别子任务视图对象 target_identification_subtask
+ *
+ * @author Allen
+ * @date 2024-08-17
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TargetIdentificationSubtask.class)
+public class TargetIdentificationSubtaskVo extends BaseEntity implements Serializable {
+
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /** 任务名称 */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+    /** 任务状态 */
+    @ExcelProperty(value = "任务状态")
+    private String status;
+
+    /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /** 逻辑删除标志(0代表存在 1代表删除) */
+    @ExcelProperty(value = "逻辑删除标志(0代表存在 1代表删除)")
+    private Integer delFlag;
+
+    /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String system;
+
+
+
+}

+ 49 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationTaskImportVo.java

@@ -0,0 +1,49 @@
+package com.taais.biz.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.taais.common.excel.annotation.ExcelDictFormat;
+import com.taais.common.excel.convert.ExcelDictConvert;
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+import lombok.NoArgsConstructor;
+
+/**
+ * 目标识别任务导入视图对象 target_identification_task
+ *
+ * @author km
+ * @date 2024-08-17
+ */
+
+@Data
+@NoArgsConstructor
+public class TargetIdentificationTaskImportVo implements Serializable
+{
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+     /** 任务名称 */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+     /** 任务状态 */
+    @ExcelProperty(value = "任务状态")
+    private String status;
+
+     /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+     /** 逻辑删除标志(0代表存在 1代表删除) */
+    @ExcelProperty(value = "逻辑删除标志(0代表存在 1代表删除)")
+    private Integer delFlag;
+
+     /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String system;
+
+
+}

+ 57 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/TargetIdentificationTaskVo.java

@@ -0,0 +1,57 @@
+package com.taais.biz.domain.vo;
+
+import com.taais.biz.domain.TargetIdentificationTask;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.taais.common.excel.annotation.ExcelDictFormat;
+import com.taais.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serial;
+import java.io.Serializable;
+import com.taais.common.orm.core.domain.BaseEntity;
+
+/**
+ * 目标识别任务视图对象 target_identification_task
+ *
+ * @author km
+ * @date 2024-08-17
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TargetIdentificationTask.class)
+public class TargetIdentificationTaskVo extends BaseEntity implements Serializable {
+
+@Serial
+private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /** 任务名称 */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+    /** 任务状态 */
+    @ExcelProperty(value = "任务状态")
+    private String status;
+
+    /** 备注 */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /** 逻辑删除标志(0代表存在 1代表删除) */
+    @ExcelProperty(value = "逻辑删除标志(0代表存在 1代表删除)")
+    private Integer delFlag;
+
+    /** $column.columnComment */
+    @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
+    private String system;
+
+
+
+}

+ 119 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/listener/TargetIdentificationSubtaskDetailsImportListener.java

@@ -0,0 +1,119 @@
+package com.taais.biz.listener;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.taais.common.core.exception.ServiceException;
+import com.taais.common.core.utils.SpringUtils;
+import com.taais.common.core.utils.ValidatorUtils;
+import com.taais.common.excel.core.ExcelListener;
+import com.taais.common.excel.core.ExcelResult;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskDetailsBo;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskDetailsImportVo;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskDetailsVo;
+import com.taais.biz.service.ITargetIdentificationSubtaskDetailsService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * 目标识别子任务自定义导入
+ *
+ * @author 0
+ */
+@Slf4j
+public class TargetIdentificationSubtaskDetailsImportListener extends AnalysisEventListener<TargetIdentificationSubtaskDetailsImportVo> implements ExcelListener<TargetIdentificationSubtaskDetailsImportVo> {
+    private final ITargetIdentificationSubtaskDetailsService targetIdentificationSubtaskDetailsService;
+
+    private final Boolean isUpdateSupport;
+    private int successNum = 0;
+    private int failureNum = 0;
+    private final StringBuilder successMsg = new StringBuilder();
+    private final StringBuilder failureMsg = new StringBuilder();
+
+    public TargetIdentificationSubtaskDetailsImportListener(Boolean isUpdateSupport) {
+        this.targetIdentificationSubtaskDetailsService = SpringUtils.getBean(ITargetIdentificationSubtaskDetailsService.class);
+        this.isUpdateSupport = isUpdateSupport;
+    }
+
+    @Override
+    public void invoke(TargetIdentificationSubtaskDetailsImportVo targetIdentificationSubtaskDetailsVo, AnalysisContext context) {
+        try {
+
+            TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo = BeanUtil.toBean(targetIdentificationSubtaskDetailsVo, TargetIdentificationSubtaskDetailsBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            TargetIdentificationSubtaskDetailsVo targetIdentificationSubtaskDetailsVo1 = null;
+
+            //targetIdentificationSubtaskDetailsVo1 = targetIdentificationSubtaskDetailsService.selectBySomefield(targetIdentificationSubtaskDetailsVo.getSomefield());
+            if (ObjectUtil.isNull(targetIdentificationSubtaskDetailsVo1)) {
+                //不存在就新增
+                targetIdentificationSubtaskDetailsBo.setVersion(0);
+                ValidatorUtils.validate(targetIdentificationSubtaskDetailsBo);
+                boolean inserted = targetIdentificationSubtaskDetailsService.insert(targetIdentificationSubtaskDetailsBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、目标识别子任务 记录导入成功");
+                    return;
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、目标识别子任务 记录导入失败");
+                    return;
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                targetIdentificationSubtaskDetailsBo.setId(targetIdentificationSubtaskDetailsVo1.getId());//主键
+                targetIdentificationSubtaskDetailsBo.setVersion(targetIdentificationSubtaskDetailsVo1.getVersion());
+                boolean updated = targetIdentificationSubtaskDetailsService.update(targetIdentificationSubtaskDetailsBo);
+                if (updated) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、目标识别子任务 记录更新成功");
+                    return;
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、目标识别子任务 记录更新失败");
+                    return;
+                }
+            }
+        } catch (Exception e) {
+            failureNum++;
+            String msg = "<br/>" + failureNum + "、目标识别子任务 记录导入失败:";
+            failureMsg.append(msg).append(e.getMessage());
+            log.error(msg, e);
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+
+    }
+
+    @Override
+    public ExcelResult<TargetIdentificationSubtaskDetailsImportVo> getExcelResult() {
+        return new ExcelResult<>() {
+
+            @Override
+            public String getAnalysis() {
+                if (failureNum > 0) {
+                    failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
+                    throw new ServiceException(failureMsg.toString());
+                } else {
+                    successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+                }
+                return successMsg.toString();
+            }
+
+            @Override
+            public List<TargetIdentificationSubtaskDetailsImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 119 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/listener/TargetIdentificationSubtaskImportListener.java

@@ -0,0 +1,119 @@
+package com.taais.biz.listener;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.taais.common.core.exception.ServiceException;
+import com.taais.common.core.utils.SpringUtils;
+import com.taais.common.core.utils.ValidatorUtils;
+import com.taais.common.excel.core.ExcelListener;
+import com.taais.common.excel.core.ExcelResult;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskBo;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskImportVo;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskVo;
+import com.taais.biz.service.ITargetIdentificationSubtaskService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * 目标识别子任务自定义导入
+ *
+ * @author Allen
+ */
+@Slf4j
+public class TargetIdentificationSubtaskImportListener extends AnalysisEventListener<TargetIdentificationSubtaskImportVo> implements ExcelListener<TargetIdentificationSubtaskImportVo> {
+    private final ITargetIdentificationSubtaskService targetIdentificationSubtaskService;
+
+    private final Boolean isUpdateSupport;
+    private int successNum = 0;
+    private int failureNum = 0;
+    private final StringBuilder successMsg = new StringBuilder();
+    private final StringBuilder failureMsg = new StringBuilder();
+
+    public TargetIdentificationSubtaskImportListener(Boolean isUpdateSupport) {
+        this.targetIdentificationSubtaskService = SpringUtils.getBean(ITargetIdentificationSubtaskService.class);
+        this.isUpdateSupport = isUpdateSupport;
+    }
+
+    @Override
+    public void invoke(TargetIdentificationSubtaskImportVo targetIdentificationSubtaskVo, AnalysisContext context) {
+        try {
+
+            TargetIdentificationSubtaskBo targetIdentificationSubtaskBo = BeanUtil.toBean(targetIdentificationSubtaskVo, TargetIdentificationSubtaskBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            TargetIdentificationSubtaskVo targetIdentificationSubtaskVo1 = null;
+
+            //targetIdentificationSubtaskVo1 = targetIdentificationSubtaskService.selectBySomefield(targetIdentificationSubtaskVo.getSomefield());
+            if (ObjectUtil.isNull(targetIdentificationSubtaskVo1)) {
+                //不存在就新增
+                targetIdentificationSubtaskBo.setVersion(0);
+                ValidatorUtils.validate(targetIdentificationSubtaskBo);
+                boolean inserted = targetIdentificationSubtaskService.insert(targetIdentificationSubtaskBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、目标识别子任务 记录导入成功");
+                    return;
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、目标识别子任务 记录导入失败");
+                    return;
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                targetIdentificationSubtaskBo.setId(targetIdentificationSubtaskVo1.getId());//主键
+                targetIdentificationSubtaskBo.setVersion(targetIdentificationSubtaskVo1.getVersion());
+                boolean updated = targetIdentificationSubtaskService.update(targetIdentificationSubtaskBo);
+                if (updated) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、目标识别子任务 记录更新成功");
+                    return;
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、目标识别子任务 记录更新失败");
+                    return;
+                }
+            }
+        } catch (Exception e) {
+            failureNum++;
+            String msg = "<br/>" + failureNum + "、目标识别子任务 记录导入失败:";
+            failureMsg.append(msg).append(e.getMessage());
+            log.error(msg, e);
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+
+    }
+
+    @Override
+    public ExcelResult<TargetIdentificationSubtaskImportVo> getExcelResult() {
+        return new ExcelResult<>() {
+
+            @Override
+            public String getAnalysis() {
+                if (failureNum > 0) {
+                    failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
+                    throw new ServiceException(failureMsg.toString());
+                } else {
+                    successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+                }
+                return successMsg.toString();
+            }
+
+            @Override
+            public List<TargetIdentificationSubtaskImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 119 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/listener/TargetIdentificationTaskImportListener.java

@@ -0,0 +1,119 @@
+package com.taais.biz.listener;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.taais.common.core.exception.ServiceException;
+import com.taais.common.core.utils.SpringUtils;
+import com.taais.common.core.utils.ValidatorUtils;
+import com.taais.common.excel.core.ExcelListener;
+import com.taais.common.excel.core.ExcelResult;
+import com.taais.biz.domain.bo.TargetIdentificationTaskBo;
+import com.taais.biz.domain.vo.TargetIdentificationTaskImportVo;
+import com.taais.biz.domain.vo.TargetIdentificationTaskVo;
+import com.taais.biz.service.ITargetIdentificationTaskService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+/**
+ * 目标识别任务自定义导入
+ *
+ * @author km
+ */
+@Slf4j
+public class TargetIdentificationTaskImportListener extends AnalysisEventListener<TargetIdentificationTaskImportVo> implements ExcelListener<TargetIdentificationTaskImportVo> {
+    private final ITargetIdentificationTaskService targetIdentificationTaskService;
+
+    private final Boolean isUpdateSupport;
+    private int successNum = 0;
+    private int failureNum = 0;
+    private final StringBuilder successMsg = new StringBuilder();
+    private final StringBuilder failureMsg = new StringBuilder();
+
+    public TargetIdentificationTaskImportListener(Boolean isUpdateSupport) {
+        this.targetIdentificationTaskService = SpringUtils.getBean(ITargetIdentificationTaskService.class);
+        this.isUpdateSupport = isUpdateSupport;
+    }
+
+    @Override
+    public void invoke(TargetIdentificationTaskImportVo targetIdentificationTaskVo, AnalysisContext context) {
+        try {
+
+            TargetIdentificationTaskBo targetIdentificationTaskBo = BeanUtil.toBean(targetIdentificationTaskVo, TargetIdentificationTaskBo.class);
+
+            //TODO:根据某个字段,查询数据库表中是否存在记录,不存在就新增,存在就更新
+            TargetIdentificationTaskVo targetIdentificationTaskVo1 = null;
+
+            //targetIdentificationTaskVo1 = targetIdentificationTaskService.selectBySomefield(targetIdentificationTaskVo.getSomefield());
+            if (ObjectUtil.isNull(targetIdentificationTaskVo1)) {
+                //不存在就新增
+                targetIdentificationTaskBo.setVersion(0);
+                ValidatorUtils.validate(targetIdentificationTaskBo);
+                boolean inserted = targetIdentificationTaskService.insert(targetIdentificationTaskBo);
+
+                if (inserted) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、目标识别任务 记录导入成功");
+                    return;
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、目标识别任务 记录导入失败");
+                    return;
+                }
+            } else if (isUpdateSupport) {
+                //存在就更新
+                targetIdentificationTaskBo.setId(targetIdentificationTaskVo1.getId());//主键
+                targetIdentificationTaskBo.setVersion(targetIdentificationTaskVo1.getVersion());
+                boolean updated = targetIdentificationTaskService.update(targetIdentificationTaskBo);
+                if (updated) {
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、目标识别任务 记录更新成功");
+                    return;
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、目标识别任务 记录更新失败");
+                    return;
+                }
+            }
+        } catch (Exception e) {
+            failureNum++;
+            String msg = "<br/>" + failureNum + "、目标识别任务 记录导入失败:";
+            failureMsg.append(msg).append(e.getMessage());
+            log.error(msg, e);
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+
+    }
+
+    @Override
+    public ExcelResult<TargetIdentificationTaskImportVo> getExcelResult() {
+        return new ExcelResult<>() {
+
+            @Override
+            public String getAnalysis() {
+                if (failureNum > 0) {
+                    failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据没有成功导入,错误如下:");
+                    throw new ServiceException(failureMsg.toString());
+                } else {
+                    successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+                }
+                return successMsg.toString();
+            }
+
+            @Override
+            public List<TargetIdentificationTaskImportVo> getList() {
+                return null;
+            }
+
+            @Override
+            public List<String> getErrorList() {
+                return null;
+            }
+        };
+    }
+}

+ 16 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/TargetIdentificationSubtaskDetailsMapper.java

@@ -0,0 +1,16 @@
+package com.taais.biz.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.taais.biz.domain.TargetIdentificationSubtaskDetails;
+
+/**
+ * 目标识别子任务Mapper接口
+ *
+ * @author 0
+ * 2024-08-17
+ */
+@Mapper
+public interface TargetIdentificationSubtaskDetailsMapper extends BaseMapper<TargetIdentificationSubtaskDetails> {
+
+}

+ 16 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/TargetIdentificationSubtaskMapper.java

@@ -0,0 +1,16 @@
+package com.taais.biz.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.taais.biz.domain.TargetIdentificationSubtask;
+
+/**
+ * 目标识别子任务Mapper接口
+ *
+ * @author Allen
+ * 2024-08-17
+ */
+@Mapper
+public interface TargetIdentificationSubtaskMapper extends BaseMapper<TargetIdentificationSubtask> {
+
+}

+ 16 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/TargetIdentificationTaskMapper.java

@@ -0,0 +1,16 @@
+package com.taais.biz.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.taais.biz.domain.TargetIdentificationTask;
+
+/**
+ * 目标识别任务Mapper接口
+ *
+ * @author km
+ * 2024-08-17
+ */
+@Mapper
+public interface TargetIdentificationTaskMapper extends BaseMapper<TargetIdentificationTask> {
+
+}

+ 66 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/ITargetIdentificationSubtaskDetailsService.java

@@ -0,0 +1,66 @@
+package com.taais.biz.service;
+
+import java.util.List;
+
+import com.taais.biz.domain.TargetIdentificationSubtaskDetails;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskDetailsVo;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskDetailsBo;
+import com.taais.common.orm.core.service.IBaseService;
+import com.taais.common.core.core.page.PageResult;
+
+/**
+ * 目标识别子任务Service接口
+ *
+ * @author 0
+ * 2024-08-17
+ */
+public interface ITargetIdentificationSubtaskDetailsService extends IBaseService<TargetIdentificationSubtaskDetails> {
+    /**
+     * 查询目标识别子任务
+     *
+     * @param id 目标识别子任务主键
+     * @return 目标识别子任务
+     */
+        TargetIdentificationSubtaskDetailsVo selectById(Long id);
+
+    /**
+     * 查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 目标识别子任务集合
+     */
+    List<TargetIdentificationSubtaskDetailsVo> selectList(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo);
+
+    /**
+     * 分页查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 分页目标识别子任务集合
+     */
+    PageResult<TargetIdentificationSubtaskDetailsVo> selectPage(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo);
+
+    /**
+     * 新增目标识别子任务
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo);
+
+    /**
+     * 修改目标识别子任务
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo);
+
+    /**
+     * 批量删除目标识别子任务
+     *
+     * @param ids 需要删除的目标识别子任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+
+}

+ 66 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/ITargetIdentificationSubtaskService.java

@@ -0,0 +1,66 @@
+package com.taais.biz.service;
+
+import java.util.List;
+
+import com.taais.biz.domain.TargetIdentificationSubtask;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskVo;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskBo;
+import com.taais.common.orm.core.service.IBaseService;
+import com.taais.common.core.core.page.PageResult;
+
+/**
+ * 目标识别子任务Service接口
+ *
+ * @author Allen
+ * 2024-08-17
+ */
+public interface ITargetIdentificationSubtaskService extends IBaseService<TargetIdentificationSubtask> {
+    /**
+     * 查询目标识别子任务
+     *
+     * @param id 目标识别子任务主键
+     * @return 目标识别子任务
+     */
+        TargetIdentificationSubtaskVo selectById(Long id);
+
+    /**
+     * 查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 目标识别子任务集合
+     */
+    List<TargetIdentificationSubtaskVo> selectList(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo);
+
+    /**
+     * 分页查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 分页目标识别子任务集合
+     */
+    PageResult<TargetIdentificationSubtaskVo> selectPage(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo);
+
+    /**
+     * 新增目标识别子任务
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo);
+
+    /**
+     * 修改目标识别子任务
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo);
+
+    /**
+     * 批量删除目标识别子任务
+     *
+     * @param ids 需要删除的目标识别子任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+
+}

+ 67 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/ITargetIdentificationTaskService.java

@@ -0,0 +1,67 @@
+package com.taais.biz.service;
+
+import java.util.List;
+
+import com.taais.biz.domain.TargetIdentificationTask;
+import com.taais.biz.domain.vo.TargetIdentificationTaskVo;
+import com.taais.biz.domain.bo.TargetIdentificationTaskBo;
+import com.taais.common.orm.core.service.IBaseService;
+import com.taais.common.core.core.page.PageResult;
+
+/**
+ * 目标识别任务Service接口
+ *
+ * @author km
+ * 2024-08-17
+ */
+public interface ITargetIdentificationTaskService extends IBaseService<TargetIdentificationTask> {
+    /**
+     * 查询目标识别任务
+     *
+     * @param id 目标识别任务主键
+     * @return 目标识别任务
+     */
+        TargetIdentificationTaskVo selectById(Long id);
+
+    /**
+     * 查询目标识别任务列表
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 目标识别任务集合
+     */
+    List<TargetIdentificationTaskVo> selectList(TargetIdentificationTaskBo targetIdentificationTaskBo);
+
+    /**
+     * 分页查询目标识别任务列表
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 分页目标识别任务集合
+     */
+    PageResult<TargetIdentificationTaskVo> selectPage(TargetIdentificationTaskBo targetIdentificationTaskBo);
+
+    /**
+     * 新增目标识别任务
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(TargetIdentificationTaskBo targetIdentificationTaskBo);
+
+    /**
+     * 修改目标识别任务
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(TargetIdentificationTaskBo targetIdentificationTaskBo);
+
+    /**
+     * 批量删除目标识别任务
+     *
+     * @param ids 需要删除的目标识别任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+
+    String createTask(Object o);
+}

+ 152 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationSubtaskDetailsServiceImpl.java

@@ -0,0 +1,152 @@
+package com.taais.biz.service.impl;
+
+import java.util.Arrays;
+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.common.core.utils.MapstructUtils;
+import com.taais.common.core.utils.StringUtils;
+import com.taais.common.orm.core.page.PageQuery;
+import com.taais.common.core.core.page.PageResult;
+import com.taais.common.orm.core.service.impl.BaseServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.taais.biz.mapper.TargetIdentificationSubtaskDetailsMapper;
+import com.taais.biz.domain.TargetIdentificationSubtaskDetails;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskDetailsBo;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskDetailsVo;
+import com.taais.biz.service.ITargetIdentificationSubtaskDetailsService;
+import static com.taais.biz.domain.table.TargetIdentificationSubtaskDetailsTableDef.TARGET_IDENTIFICATION_SUBTASK_DETAILS;
+
+/**
+ * 目标识别子任务Service业务层处理
+ *
+ * @author 0
+ * 2024-08-17
+ */
+@Service
+public class TargetIdentificationSubtaskDetailsServiceImpl extends BaseServiceImpl<TargetIdentificationSubtaskDetailsMapper, TargetIdentificationSubtaskDetails> implements ITargetIdentificationSubtaskDetailsService {
+    @Resource
+    private TargetIdentificationSubtaskDetailsMapper targetIdentificationSubtaskDetailsMapper;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(TARGET_IDENTIFICATION_SUBTASK_DETAILS);
+    }
+
+    private QueryWrapper buildQueryWrapper(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.NAME.like
+        (targetIdentificationSubtaskDetailsBo.getName()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.STATUS.eq
+        (targetIdentificationSubtaskDetailsBo.getStatus()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.ALGORITHM_ID.eq
+        (targetIdentificationSubtaskDetailsBo.getAlgorithmId()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.DATA_BATCH_NUMS.eq
+        (targetIdentificationSubtaskDetailsBo.getDataBatchNums()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.PARAMETERS.eq
+        (targetIdentificationSubtaskDetailsBo.getParameters()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.PREPROCESS_PATH.eq
+        (targetIdentificationSubtaskDetailsBo.getPreprocessPath()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.RESULT_PATH.eq
+        (targetIdentificationSubtaskDetailsBo.getResultPath()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.INDEX.eq
+        (targetIdentificationSubtaskDetailsBo.getIndex()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.START_TIME.eq
+        (targetIdentificationSubtaskDetailsBo.getStartTime()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.END_TIME.eq
+        (targetIdentificationSubtaskDetailsBo.getEndTime()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.COST_SECOND.eq
+        (targetIdentificationSubtaskDetailsBo.getCostSecond()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.LOG.eq
+        (targetIdentificationSubtaskDetailsBo.getLog()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.REMARKS.eq
+        (targetIdentificationSubtaskDetailsBo.getRemarks()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK_DETAILS.SYSTEM.eq
+        (targetIdentificationSubtaskDetailsBo.getSystem()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询目标识别子任务
+     *
+     * @param id 目标识别子任务主键
+     * @return 目标识别子任务
+     */
+    @Override
+    public TargetIdentificationSubtaskDetailsVo selectById(Long id) {
+            return this.getOneAs(query().where(TARGET_IDENTIFICATION_SUBTASK_DETAILS.ID.eq(id)), TargetIdentificationSubtaskDetailsVo.class);
+
+    }
+
+    /**
+     * 查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 目标识别子任务集合
+     */
+    @Override
+    public List<TargetIdentificationSubtaskDetailsVo> selectList(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(targetIdentificationSubtaskDetailsBo);
+            return this.listAs(queryWrapper, TargetIdentificationSubtaskDetailsVo.class);
+    }
+
+    /**
+     * 分页查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 分页目标识别子任务集合
+     */
+    @Override
+    public PageResult<TargetIdentificationSubtaskDetailsVo> selectPage(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(targetIdentificationSubtaskDetailsBo);
+            Page<TargetIdentificationSubtaskDetailsVo> page = this.pageAs(PageQuery.build(), queryWrapper, TargetIdentificationSubtaskDetailsVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增目标识别子任务
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+    TargetIdentificationSubtaskDetails targetIdentificationSubtaskDetails =MapstructUtils.convert(targetIdentificationSubtaskDetailsBo, TargetIdentificationSubtaskDetails. class);
+
+        return this.save(targetIdentificationSubtaskDetails);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 修改目标识别子任务
+     *
+     * @param targetIdentificationSubtaskDetailsBo 目标识别子任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(TargetIdentificationSubtaskDetailsBo targetIdentificationSubtaskDetailsBo) {
+        TargetIdentificationSubtaskDetails targetIdentificationSubtaskDetails =MapstructUtils.convert(targetIdentificationSubtaskDetailsBo, TargetIdentificationSubtaskDetails. class);
+        if (ObjectUtil.isNotNull(targetIdentificationSubtaskDetails) && ObjectUtil.isNotNull(targetIdentificationSubtaskDetails.getId())){
+            boolean updated = this.updateById(targetIdentificationSubtaskDetails);
+                return updated;
+        }
+        return false;
+    }
+
+    /**
+     * 批量删除目标识别子任务
+     *
+     * @param ids 需要删除的目标识别子任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 132 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationSubtaskServiceImpl.java

@@ -0,0 +1,132 @@
+package com.taais.biz.service.impl;
+
+import java.util.Arrays;
+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.common.core.utils.MapstructUtils;
+import com.taais.common.core.utils.StringUtils;
+import com.taais.common.orm.core.page.PageQuery;
+import com.taais.common.core.core.page.PageResult;
+import com.taais.common.orm.core.service.impl.BaseServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.taais.biz.mapper.TargetIdentificationSubtaskMapper;
+import com.taais.biz.domain.TargetIdentificationSubtask;
+import com.taais.biz.domain.bo.TargetIdentificationSubtaskBo;
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskVo;
+import com.taais.biz.service.ITargetIdentificationSubtaskService;
+import static com.taais.biz.domain.table.TargetIdentificationSubtaskTableDef.TARGET_IDENTIFICATION_SUBTASK;
+
+/**
+ * 目标识别子任务Service业务层处理
+ *
+ * @author Allen
+ * 2024-08-17
+ */
+@Service
+public class TargetIdentificationSubtaskServiceImpl extends BaseServiceImpl<TargetIdentificationSubtaskMapper, TargetIdentificationSubtask> implements ITargetIdentificationSubtaskService {
+    @Resource
+    private TargetIdentificationSubtaskMapper targetIdentificationSubtaskMapper;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(TARGET_IDENTIFICATION_SUBTASK);
+    }
+
+    private QueryWrapper buildQueryWrapper(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK.NAME.like
+        (targetIdentificationSubtaskBo.getName()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK.STATUS.eq
+        (targetIdentificationSubtaskBo.getStatus()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK.REMARKS.eq
+        (targetIdentificationSubtaskBo.getRemarks()));
+        queryWrapper.and(TARGET_IDENTIFICATION_SUBTASK.SYSTEM.eq
+        (targetIdentificationSubtaskBo.getSystem()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询目标识别子任务
+     *
+     * @param id 目标识别子任务主键
+     * @return 目标识别子任务
+     */
+    @Override
+    public TargetIdentificationSubtaskVo selectById(Long id) {
+            return this.getOneAs(query().where(TARGET_IDENTIFICATION_SUBTASK.ID.eq(id)), TargetIdentificationSubtaskVo.class);
+
+    }
+
+    /**
+     * 查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 目标识别子任务集合
+     */
+    @Override
+    public List<TargetIdentificationSubtaskVo> selectList(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(targetIdentificationSubtaskBo);
+            return this.listAs(queryWrapper, TargetIdentificationSubtaskVo.class);
+    }
+
+    /**
+     * 分页查询目标识别子任务列表
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 分页目标识别子任务集合
+     */
+    @Override
+    public PageResult<TargetIdentificationSubtaskVo> selectPage(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(targetIdentificationSubtaskBo);
+            Page<TargetIdentificationSubtaskVo> page = this.pageAs(PageQuery.build(), queryWrapper, TargetIdentificationSubtaskVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增目标识别子任务
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+    TargetIdentificationSubtask targetIdentificationSubtask =MapstructUtils.convert(targetIdentificationSubtaskBo, TargetIdentificationSubtask. class);
+
+        return this.save(targetIdentificationSubtask);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 修改目标识别子任务
+     *
+     * @param targetIdentificationSubtaskBo 目标识别子任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
+        TargetIdentificationSubtask targetIdentificationSubtask =MapstructUtils.convert(targetIdentificationSubtaskBo, TargetIdentificationSubtask. class);
+        if (ObjectUtil.isNotNull(targetIdentificationSubtask) && ObjectUtil.isNotNull(targetIdentificationSubtask.getId())){
+            boolean updated = this.updateById(targetIdentificationSubtask);
+                return updated;
+        }
+        return false;
+    }
+
+    /**
+     * 批量删除目标识别子任务
+     *
+     * @param ids 需要删除的目标识别子任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 137 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationTaskServiceImpl.java

@@ -0,0 +1,137 @@
+package com.taais.biz.service.impl;
+
+import java.util.Arrays;
+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.common.core.utils.MapstructUtils;
+import com.taais.common.core.utils.StringUtils;
+import com.taais.common.orm.core.page.PageQuery;
+import com.taais.common.core.core.page.PageResult;
+import com.taais.common.orm.core.service.impl.BaseServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.taais.biz.mapper.TargetIdentificationTaskMapper;
+import com.taais.biz.domain.TargetIdentificationTask;
+import com.taais.biz.domain.bo.TargetIdentificationTaskBo;
+import com.taais.biz.domain.vo.TargetIdentificationTaskVo;
+import com.taais.biz.service.ITargetIdentificationTaskService;
+import static com.taais.biz.domain.table.TargetIdentificationTaskTableDef.TARGET_IDENTIFICATION_TASK;
+
+/**
+ * 目标识别任务Service业务层处理
+ *
+ * @author km
+ * 2024-08-17
+ */
+@Service
+public class TargetIdentificationTaskServiceImpl extends BaseServiceImpl<TargetIdentificationTaskMapper, TargetIdentificationTask> implements ITargetIdentificationTaskService {
+    @Resource
+    private TargetIdentificationTaskMapper targetIdentificationTaskMapper;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(TARGET_IDENTIFICATION_TASK);
+    }
+
+    private QueryWrapper buildQueryWrapper(TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(TARGET_IDENTIFICATION_TASK.NAME.like
+        (targetIdentificationTaskBo.getName()));
+        queryWrapper.and(TARGET_IDENTIFICATION_TASK.STATUS.eq
+        (targetIdentificationTaskBo.getStatus()));
+        queryWrapper.and(TARGET_IDENTIFICATION_TASK.REMARKS.eq
+        (targetIdentificationTaskBo.getRemarks()));
+        queryWrapper.and(TARGET_IDENTIFICATION_TASK.SYSTEM.eq
+        (targetIdentificationTaskBo.getSystem()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询目标识别任务
+     *
+     * @param id 目标识别任务主键
+     * @return 目标识别任务
+     */
+    @Override
+    public TargetIdentificationTaskVo selectById(Long id) {
+            return this.getOneAs(query().where(TARGET_IDENTIFICATION_TASK.ID.eq(id)), TargetIdentificationTaskVo.class);
+
+    }
+
+    /**
+     * 查询目标识别任务列表
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 目标识别任务集合
+     */
+    @Override
+    public List<TargetIdentificationTaskVo> selectList(TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(targetIdentificationTaskBo);
+            return this.listAs(queryWrapper, TargetIdentificationTaskVo.class);
+    }
+
+    /**
+     * 分页查询目标识别任务列表
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 分页目标识别任务集合
+     */
+    @Override
+    public PageResult<TargetIdentificationTaskVo> selectPage(TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(targetIdentificationTaskBo);
+            Page<TargetIdentificationTaskVo> page = this.pageAs(PageQuery.build(), queryWrapper, TargetIdentificationTaskVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增目标识别任务
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(TargetIdentificationTaskBo targetIdentificationTaskBo) {
+    TargetIdentificationTask targetIdentificationTask =MapstructUtils.convert(targetIdentificationTaskBo, TargetIdentificationTask. class);
+
+        return this.save(targetIdentificationTask);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 修改目标识别任务
+     *
+     * @param targetIdentificationTaskBo 目标识别任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(TargetIdentificationTaskBo targetIdentificationTaskBo) {
+        TargetIdentificationTask targetIdentificationTask =MapstructUtils.convert(targetIdentificationTaskBo, TargetIdentificationTask. class);
+        if (ObjectUtil.isNotNull(targetIdentificationTask) && ObjectUtil.isNotNull(targetIdentificationTask.getId())){
+            boolean updated = this.updateById(targetIdentificationTask);
+                return updated;
+        }
+        return false;
+    }
+
+    /**
+     * 批量删除目标识别任务
+     *
+     * @param ids 需要删除的目标识别任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public String createTask(Object o) {
+        return null;
+    }
+
+}

+ 7 - 0
taais-modules/taais-biz/src/main/resources/mapper/identification/TargetIdentificationSubtaskDetailsMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.taais.biz.mapper.TargetIdentificationSubtaskDetailsMapper">
+
+</mapper>

+ 7 - 0
taais-modules/taais-biz/src/main/resources/mapper/identification/TargetIdentificationSubtaskMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.taais.biz.mapper.TargetIdentificationSubtaskMapper">
+
+</mapper>

+ 7 - 0
taais-modules/taais-biz/src/main/resources/mapper/identification/TargetIdentificationTaskMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.taais.biz.mapper.TargetIdentificationTaskMapper">
+
+</mapper>

+ 1 - 1
taais-modules/taais-system/src/main/java/com/taais/system/service/impl/SysDictDataServiceImpl.java

@@ -136,7 +136,7 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataMapper, S
      * @param dictType 字典类型
      * @return 字典数据集合信息
      */
-    @Cacheable(cacheNames = CacheNames.SYS_DICT, key = "#dictType")
+//    @Cacheable(cacheNames = CacheNames.SYS_DICT, key = "#dictType")
     @Override
     public List<SysDictDataVo> selectDictDataByType(String dictType) {
         QueryWrapper queryWrapper = query().and(SYS_DICT_DATA.DICT_TYPE.eq(dictType)).orderBy(SYS_DICT_DATA.DICT_SORT.asc());

+ 1 - 1
taais-modules/taais-system/src/main/java/com/taais/system/service/impl/SysDictTypeServiceImpl.java

@@ -109,7 +109,7 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeMapper, S
      * @param dictType 字典类型
      * @return 字典数据集合信息
      */
-    @Cacheable(cacheNames = CacheNames.SYS_DICT, key = "#dictType")
+//    @Cacheable(cacheNames = CacheNames.SYS_DICT, key = "#dictType")
     @Override
     public List<SysDictDataVo> selectDictDataByType(String dictType) {
         List<SysDictDataVo> lists = sysDictDataService.selectDictDataByType(dictType);