root 2 سال پیش
والد
کامیت
cf79710927

+ 6 - 5
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ProjectConsumer.java

@@ -5,6 +5,7 @@ import api.common.pojo.constants.DictConstants;
 import api.common.pojo.dto.ProjectMessageDTO;
 import api.common.util.*;
 import com.css.simulation.resource.scheduler.manager.ProjectManager;
+import com.css.simulation.resource.scheduler.manager.TaskManager;
 import com.css.simulation.resource.scheduler.mapper.*;
 import com.css.simulation.resource.scheduler.pojo.po.*;
 import com.css.simulation.resource.scheduler.pojo.to.*;
@@ -74,7 +75,7 @@ public class ProjectConsumer {
     @Resource
     IndexMapper indexMapper;
     @Resource
-    TaskMapper taskMapper;
+    TaskManager taskManager;
     @Resource
     ProjectManager projectManager;
     @Resource
@@ -99,7 +100,6 @@ public class ProjectConsumer {
         String packageId = projectMessageDTO.getScenePackageId();   // 场景测试包 id
         String vehicleConfigId = projectMessageDTO.getVehicleConfigId();// 模型配置 id
         long videoTime = projectMessageDTO.getMaxSimulationTime();  // 结果视频的时长
-        long parallelism = projectMessageDTO.getParallelism();      // 项目并行度
         String projectType = projectMessageDTO.getType();           // 项目类型
         String userId = "";  // 用户 id
         if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
@@ -123,7 +123,7 @@ public class ProjectConsumer {
         List<CameraPO> cameraPOList = sensorCameraMapper.selectCameraByVehicleConfigId(vehicleConfigId);    // 摄像头
         List<OgtPO> ogtPOList = sensorOgtMapper.selectOgtByVehicleId(vehicleConfigId); // 完美传感器
         // -------------------------------- 3 保存任务消息 --------------------------------
-        log.info("ProjectService--sendTaskMessage 项目 " + projectId + " 获得的包括的场景信息为:" + scenePOSet);
+        List<TaskPO> taskList = new ArrayList<>();
         for (ScenePO scenePO : scenePOSet) {
             String sceneId = scenePO.getId();
             //3-1 可能会存在多个指标下有同样的场景,所以会查出多个指标,多个指标的场景需要发送多次
@@ -155,7 +155,7 @@ public class ProjectConsumer {
                 taskPO.setModifyUserId(userId);
                 taskPO.setModifyTime(TimeUtil.getNowForMysql());
                 taskPO.setIsDeleted("0");
-                taskMapper.insert(taskPO);
+                taskList.add(taskPO);
                 // 将 xosc、xodr、osgb 全部上传到仿真结果路径
                 String scenarioOsc = scenePO.getScenarioOsc();
                 String[] splitXosc = scenarioOsc.split("/");
@@ -237,7 +237,8 @@ public class ProjectConsumer {
                 FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskTO), projectPath + taskId + ".json");
             }
         }
-
+        taskManager.batchInsertTask(taskList);
+        log.info("ProjectConsumer.createTaskAndFixData() 项目 " + projectId + " 创建任务:" + taskList);
         //* -------------------------------- 4 开始排队 --------------------------------
         cacheProject(projectRecord);
 

+ 16 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/manager/TaskManager.java

@@ -21,6 +21,9 @@ import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.sshd.client.SshClient;
 import org.apache.sshd.client.session.ClientSession;
 import org.springframework.beans.factory.annotation.Value;
@@ -90,6 +93,19 @@ public class TaskManager {
     @Resource
     VideoService videoService;
 
+    @Resource
+    private SqlSessionFactory sqlSessionFactory;
+
+    public void batchInsertTask(List<TaskPO> taskPOList) {
+        try(SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false)){
+            TaskMapper taskMapper1 = sqlSession.getMapper(TaskMapper.class);
+            for (TaskPO taskPO : taskPOList) {
+                taskMapper1.insert(taskPO);
+            }
+            sqlSession.commit();
+        }
+    }
+
     /**
      * 加事务的话高并发情况下会死锁
      */

+ 6 - 3
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/service/ProjectService.java

@@ -136,12 +136,12 @@ public class ProjectService {
     public List<ScenePO> getSceneList(String projectId, String packageId, String projectPath) {
         //1 查询该场景包的所有指标列表,包删了无所谓,但要过滤删掉的指标。并保存成 json 文件。
         List<IndexTemplatePO> allIndexList = indexTemplateMapper.selectByPackageIdIncludeDeleted(packageId);
-        FileUtil.writeStringToLocalFile(JsonUtil.listToJson(allIndexList),projectPath+"all-index-list.json");
+        FileUtil.writeStringToLocalFile(JsonUtil.listToJson(allIndexList), projectPath + "all-index-list.json");
 
         //2 查询场景包叶子指标
         List<IndexTemplatePO> leafIndexList = allIndexList.stream().filter(index -> StringUtil.isNotEmpty(index.getRuleId())).collect(Collectors.toList());
         log.info("ProjectService--handlePackage 项目 " + projectId + " 的叶子指标为:" + leafIndexList);
-        FileUtil.writeStringToLocalFile(JsonUtil.listToJson(allIndexList),projectPath+"leaf-index-list.json");
+        FileUtil.writeStringToLocalFile(JsonUtil.listToJson(allIndexList), projectPath + "leaf-index-list.json");
         List<ScenePO> sceneList = new ArrayList<>();
         leafIndexList.forEach(leafIndex -> {
             String naturalIds = leafIndex.getSceneNaturalIds();
@@ -578,8 +578,11 @@ public class ProjectService {
         RedisUtil.deleteByPrefix(stringRedisTemplate, redisPrefix.getProjectRunningKey());
         RedisUtil.deleteByPrefix(stringRedisTemplate, redisPrefix.getProjectWaitingKey());
 
-        //4 删除所有临时文件 pod-yaml
+        //4 删除项目 pod 启动文件
         FileUtil.deleteFileBySubstring(podYamlDirectory, projectId);
+
+        //4 删除项目临时文件
+        FileUtil.rm(linuxTempPath + "project/" + projectId + "/");
     }