|
@@ -2,11 +2,14 @@ package com.taais.biz.controller;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import com.taais.biz.constant.BizConstant;
|
|
|
+import com.taais.biz.domain.TargetIdentificationSubtask;
|
|
|
import com.taais.biz.domain.TargetIdentificationSubtaskDetails;
|
|
|
+import com.taais.biz.domain.vo.TargetIdentificationSubtaskVo;
|
|
|
import com.taais.biz.service.impl.TargetIdentificationSubtaskServiceImpl;
|
|
|
import com.taais.biz.service.impl.TargetIdentificationTaskServiceImpl;
|
|
|
import com.taais.biz.utils.ZipDirectory;
|
|
@@ -14,6 +17,7 @@ import com.taais.common.core.utils.StringUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
@@ -36,6 +40,7 @@ import com.taais.common.core.core.page.PageResult;
|
|
|
* @author 0
|
|
|
* 2024-08-17
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Validated
|
|
|
@RequiredArgsConstructor
|
|
|
@RestController
|
|
@@ -120,12 +125,66 @@ public class TargetIdentificationSubtaskDetailsController extends BaseController
|
|
|
return CommonResult.success();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 执行训练任务
|
|
|
+ * @param params
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/startTask")
|
|
|
+ public CommonResult<Void> startTask(@RequestBody Map<String, String> params) {
|
|
|
+ try {
|
|
|
+ Long taskId = Long.parseLong(params.get("taskId"));
|
|
|
+ TargetIdentificationSubtaskDetails details = targetIdentificationSubtaskDetailsService.getById(taskId);
|
|
|
+ if (!(BizConstant.TASK_STATUS_PENDING.equals(details.getStatus()) ||
|
|
|
+ BizConstant.TASK_STATUS_FAILED.equals(details.getStatus()))) {
|
|
|
+ return CommonResult.fail("任务正在执行中,请勿重复执行!");
|
|
|
+ }
|
|
|
+
|
|
|
+ details.setStartTime(new Date());
|
|
|
+ targetIdentificationSubtaskDetailsService.updateById(details);
|
|
|
+ subtaskService.executeOneTask(taskId);
|
|
|
+ return CommonResult.success();
|
|
|
+ } catch (Exception e) {
|
|
|
+ return CommonResult.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 执行测试或验证任务
|
|
|
+ * @param params
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@PostMapping("/execute")
|
|
|
- public CommonResult<Void> add(@RequestBody Map<String, String> params) {
|
|
|
+ public CommonResult<Void> executeTask(@RequestBody Map<String, String> params) {
|
|
|
try {
|
|
|
Long taskId = Long.parseLong(params.get("taskId"));
|
|
|
TargetIdentificationSubtaskDetails details = targetIdentificationSubtaskDetailsService.getById(taskId);
|
|
|
+
|
|
|
+ // check if training task is done
|
|
|
+ TargetIdentificationSubtask subtask = subtaskService.getById(details.getSubtaskId());
|
|
|
+ List<TargetIdentificationSubtaskVo> subtaskList = subtaskService.getSubtaskList(subtask.getTaskId());
|
|
|
+ List<Long> trainingTaskIds = new ArrayList<>();
|
|
|
+ subtaskList.forEach(subtaskVo -> {
|
|
|
+ if (subtaskVo.getName().contains("训练")) {
|
|
|
+ trainingTaskIds.add(subtaskVo.getId());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ boolean isAllTrainingTaskDone = trainingTaskIds.stream().allMatch(trainingTaskId -> {
|
|
|
+ List<TargetIdentificationSubtaskDetailsBo> list = targetIdentificationSubtaskDetailsService.getBySubtaskId(trainingTaskId);
|
|
|
+ return list.stream().allMatch(taskDetails -> BizConstant.TASK_STATUS_SUCCEED.equals(taskDetails.getStatus()));
|
|
|
+ });
|
|
|
+
|
|
|
+ if (!isAllTrainingTaskDone) {
|
|
|
+ return CommonResult.fail("训练任务未完成,请先完成训练任务!");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!(BizConstant.TASK_STATUS_PENDING.equals(details.getStatus()) ||
|
|
|
+ BizConstant.TASK_STATUS_FAILED.equals(details.getStatus()))) {
|
|
|
+ return CommonResult.fail("任务正在执行中,请勿重复执行!");
|
|
|
+ }
|
|
|
+
|
|
|
details.setStatus(BizConstant.TASK_STATUS_PENDING);
|
|
|
+ details.setStartTime(new Date());
|
|
|
targetIdentificationSubtaskDetailsService.updateById(details);
|
|
|
|
|
|
subtaskService.executeOneTask(taskId);
|