Bläddra i källkod

标准化测试

LingxinMeng 2 år sedan
förälder
incheckning
1efd1a957f

+ 2 - 0
api-common/src/main/java/api/common/pojo/constants/DictConstants.java

@@ -81,8 +81,10 @@ public class DictConstants {
 
     public static final String PROJECT_WAITING = "10"; // 项目执行状态,待执行
     public static final String PROJECT_RUNNING = "20"; // 项目执行状态,执行中
+    public static final String PROJECT_RUNNING_NAME = "执行中"; // 项目执行状态,执行中
     public static final String PROJECT_COMPLETED = "30"; // 项目执行状态,已完成
     public static final String PROJECT_TERMINATED = "40"; // 项目执行状态,已终止
+    public static final String PROJECT_TERMINATED_NAME = "已终止"; // 项目执行状态,已终止
     public static final String PROJECT_TERMINATING = "50"; // 项目执行状态,执行出错
 
 

+ 5 - 0
api-common/src/main/java/api/common/util/TimeUtil.java

@@ -7,6 +7,11 @@ import java.util.*;
 
 public class TimeUtil {
 
+    public static String dateToString(Date date) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return dateFormat.format(date);
+    }
+
     /**
      * @param date 日期
      * @return 13 位时间戳

+ 2 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/application/service/ProjectService.java

@@ -119,7 +119,7 @@ public class ProjectService {
     // -------------------------------- Comment --------------------------------
 
     @Async("pool1")
-    public void runProject(ProjectMessageModel projectMessageModel){
+    public void runProject(ProjectMessageModel projectMessageModel) {
         //1 创建任务文件并固定场景数据
         createTaskAndFixData(projectMessageModel);
         //2 校验证书和并行度
@@ -447,7 +447,7 @@ public class ProjectService {
             parseProject(projectMessageModel, projectRunningKey, isChoiceGpu);
         } else {
             log.info("服务器资源不够,项目 " + projectId + " 暂时加入等待队列。");
-//            wait(projectWaitingKey, projectMessageDTO);
+            wait(DictConstants.PROJECT_WAIT_TYPE_EXECUTE, projectWaitingKey, projectMessageModel);
         }
     }
 

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/infrastructure/persistence/kubernetes/KubernetesUtil.java

@@ -272,7 +272,7 @@ public class KubernetesUtil {
      */
     @SneakyThrows
     public static void deletePodAsync(ApiClient apiClient, String namespaceName, String podName) {
-        log.info("KubernetesUtil--deletePod 删除 " + namespaceName + ":" + podName);
+        log.info("删除 " + namespaceName + ":" + podName);
         CoreV1Api coreV1Api = new CoreV1Api(apiClient);
         coreV1Api.deleteNamespacedPod(podName, namespaceName, null, null, null, null, null, null);
     }

+ 29 - 14
simulation-resource-server/src/main/java/com/css/simulation/resource/project/service/impl/SimulationProjectServiceImpl.java

@@ -262,22 +262,34 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
      */
     @Override
     public ResponseBodyVO<String> updateProjectNowRunState(SimulationManualProjectParam param) {
-        // 1 查询项目详细信息,即使是新创建的任务也是保存了信息后再执行
+        //1 查询项目详细信息,即使是新创建的任务也是保存了信息后再执行
         SimulationManualProjectPO projectPO = projectUtil.getProjectInfo(param);
         final String oldState = projectPO.getNowRunState();
         final String newState = param.getNowRunState();
         final String projectId = param.getId();
-        if (DictConstants.PROJECT_RUNNING.equals(newState)) {// 2 项目终止信息直接推送
+        //2 查询项目详情信息,固定项目最原始的运行数据
+        ProjectDetailsVO projectDetailsVO = selectProjectDetailsByIdBeforeRunning(SimulationManualProjectParam.builder().id(projectId).projectType(DictConstants.PROJECT_TYPE_MANUAL).build()).getInfo();
+        projectDetailsVO.setAlgorithmScoreList(new ArrayList<>());
+        log.info("项目 " + projectId + " 的详情信息为:" + projectDetailsVO);
+
+        if (DictConstants.PROJECT_TERMINATED.equals(newState)) {
+            param.setStartTime(new Date());
+            projectDetailsVO.setNowRunState(DictConstants.PROJECT_TERMINATED);
+            projectDetailsVO.setNowRunStateName(DictConstants.PROJECT_TERMINATED_NAME);
+            projectDetailsVO.setStartTime(TimeUtil.dateToString(new Date()));
+            projectDetailsVO.setFinishTime("");
+            String projectDetailsVOJson = JsonUtil.beanToJson(projectDetailsVO);
+            projectPO.setDetails(projectDetailsVOJson);
+            simulationProjectMapper.updateDetailsById(projectId, projectDetailsVOJson);
+        } else if (DictConstants.PROJECT_RUNNING.equals(newState)) {
+            projectDetailsVO.setNowRunState(DictConstants.PROJECT_RUNNING);
+            projectDetailsVO.setNowRunStateName(DictConstants.PROJECT_RUNNING_NAME);
+            projectDetailsVO.setFinishTime("");
             //1 校验项目的信息是否可用
             projectUtil.checkProject(projectPO.getAlgorithm(), projectPO.getVehicle(), projectPO.getScene());
-            //2 查询项目详情信息,固定项目最原始的运行数据
-            ProjectDetailsVO projectDetailsVO = selectProjectDetailsByIdBeforeRunning(SimulationManualProjectParam.builder().id(projectId).projectType(DictConstants.PROJECT_TYPE_MANUAL).build()).getInfo();
-            projectDetailsVO.setAlgorithmScoreList(new ArrayList<>());
-            projectDetailsVO.setNowRunState(DictConstants.PROJECT_RUNNING);
-            String infoJson = JsonUtil.beanToJson(projectDetailsVO);
-            log.info("项目 " + projectId + " 的详情信息为:" + infoJson);
-            projectPO.setDetails(infoJson);
             if (DictConstants.PROJECT_COMPLETED.equals(oldState)) {  // 已经完成的项目再次运行
+                param.setStartTime(new Date());
+                projectDetailsVO.setStartTime(TimeUtil.dateToString(new Date()));
                 //1 初始化数据
                 projectPO.setNowRunState(DictConstants.PROJECT_RUNNING);
                 projectPO.setEvaluationLevel("");
@@ -292,18 +304,21 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
                     // 如果是重新运行的项目,修改项目ID
                     SimulationManualProjectPO simulationManualProjectPO = new SimulationManualProjectPO();
                     simulationManualProjectPO.setId(projectId);
-                    final String newId = StringUtil.getRandomUUID();
+                    // 生成新ID
+                    String newId = StringUtil.getRandomUUID();
                     simulationManualProjectPO.setNewId(newId);
                     projectPO.setId(newId);
                     param.setId(newId);
                     simulationProjectMapper.updateIdById(simulationManualProjectPO);    //此处注意事务
                 }
-                simulationProjectMapper.updateDetailsById(projectId, infoJson);
             }
-            param.setStartTime(new Date());
-            simulationProjectMapper.updateProjectNowRunState(param);
-            projectRunToKafka(projectPO); // 项目终止信息直接推送
         }
+        String projectDetailsVOJson = JsonUtil.beanToJson(projectDetailsVO);
+        projectPO.setDetails(projectDetailsVOJson);
+        simulationProjectMapper.updateDetailsById(projectId, projectDetailsVOJson);
+        // 推送消息
+        simulationProjectMapper.updateProjectNowRunState(param);
+        projectRunToKafka(projectPO); // 项目终止信息直接推送
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }