martin 3 éve
szülő
commit
5b81a865e7

+ 2 - 3
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/kubernetes/KubernetesConfiguration.java

@@ -5,7 +5,6 @@ import io.kubernetes.client.util.ClientBuilder;
 import io.kubernetes.client.util.KubeConfig;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.util.ResourceUtils;
 
 import java.io.File;
 import java.io.FileReader;
@@ -16,9 +15,9 @@ public class KubernetesConfiguration {
 
     @Bean
     public ApiClient apiClient() throws IOException {
-        File config = ResourceUtils.getFile("classpath:kubernetes/config");  // 开发环境可用,生产环境不行,无法从jar 包读取
+//        File config = ResourceUtils.getFile("classpath:kubernetes/config");  // 开发环境可用,生产环境不行,无法从jar 包读取
 //        File config = new File("D:\\idea-project\\simulation-cloud\\simulation-resource-scheduler\\src\\main\\resources\\kubernetes\\config");  //windows
-//        File config = new File("/root/.kube/config");   //linux
+        File config = new File("/root/.kube/config");   //linux
 //
 //        ClassPathResource classPathResource = new ClassPathResource("kubernetes/config");
 //        InputStream inputStream = classPathResource.getInputStream();

+ 24 - 18
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ManualProjectConsumer.java

@@ -146,25 +146,31 @@ public class ManualProjectConsumer {
         int maxSimulationTime = projectMessageDTO.getMaxSimulationTime();
 
         for (ScenePO scenePO : sceneList) {
-            String taskId = StringUtil.getRandomUUID();
+            String sceneId = scenePO.getId();
+            // 根据 projectId 和 sceneId 查询任务信息
+            String taskId = taskMapper.selectIdByProjectIdAndSceneId(projectId, sceneId);
             String resultPath = resultPathMinio + projectId + "/" + taskId;
-            // 保存任务信息
-            TaskPO taskPO = TaskPO.builder() // run_start_time 和 run_end_time 不填
-                    .id(taskId)
-                    .pId(projectId)
-                    .sceneId(scenePO.getId())
-                    .sceneName(scenePO.getName())
-                    .sceneType(scenePO.getType())
-                    .runState(DictConstants.TASK_PENDING)
-                    .runResultFilePath(resultPath)
-                    .build();
-            taskPO.setCreateTime(TimeUtil.getNowForMysql());
-            taskPO.setCreateUserId(USER_ID);
-            taskPO.setModifyTime(TimeUtil.getNowForMysql());
-            taskPO.setModifyUserId(USER_ID);
-            taskPO.setModifyTime(TimeUtil.getNowForMysql());
-            taskPO.setIsDeleted("0");
-            taskMapper.insert(taskPO);
+            if (StringUtil.isEmpty(taskId)) {    // 判断是创建任务还是重新执行任务
+                taskId = StringUtil.getRandomUUID();
+                // 保存任务信息
+                TaskPO taskPO = TaskPO.builder() // run_start_time 和 run_end_time 不填
+                        .id(taskId)
+                        .pId(projectId)
+                        .sceneId(scenePO.getId())
+                        .sceneName(scenePO.getName())
+                        .sceneType(scenePO.getType())
+                        .runState(DictConstants.TASK_PENDING)
+                        .runResultFilePath(resultPath)
+                        .build();
+                taskPO.setCreateTime(TimeUtil.getNowForMysql());
+                taskPO.setCreateUserId(USER_ID);
+                taskPO.setModifyTime(TimeUtil.getNowForMysql());
+                taskPO.setModifyUserId(USER_ID);
+                taskPO.setModifyTime(TimeUtil.getNowForMysql());
+                taskPO.setIsDeleted("0");
+                taskMapper.insert(taskPO);
+            }
+
             // 心跳信息存在緩存中
             redisTemplate.opsForValue().set(manualProjectTopic + ":" + projectId + ":" + taskId, TimeUtil.getNowString());
             // 组装 task 消息

+ 5 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/mapper/TaskMapper.java

@@ -70,4 +70,9 @@ public interface TaskMapper {
             "  and smp.is_deleted = '0'\n" +
             "  and smpt.run_state in ('Running', 'Analysis', 'Analysing')")
     List<TaskPO> selectExecuting();
+
+    @Select("select id\n" +
+            "from simulation_manual_project_task\n" +
+            "where p_id = #{projectId} and scene_id = #{sceneId}")
+    String selectIdByProjectIdAndSceneId(@Param("projectId")String projectId,@Param("sceneId") String sceneId);
 }

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/service/TaskService.java

@@ -155,7 +155,7 @@ public class TaskService {
                         taskMapper.updateState(task2Id, DictConstants.TASK_ANALYSING);
                         // 计算每个任务的得分
                         ScoreTO score;
-                        String runResultMinio = task2.getRunResult() + "/Ego.csv";
+                        String runResultMinio = task2.getRunResultFilePath() + "/Ego.csv";
                         String runResultLinux = linuxTempPath + runResultMinio;
 //                        python3 /home/ubuntu/test/Evaluate/main.py /home/ubuntu/test/test_data.csv 4 AEB_1-2
 //                        String command = "python3 " + pyPath + " " + runResultLinux + " " + task2.getSceneType();  // 默认使用场景名称找打分脚本