李春阳 1 tahun lalu
induk
melakukan
e57d5798ae

+ 44 - 26
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/infra/runnable/SceneEvaluationComputeRunnable.java

@@ -92,22 +92,21 @@ public class SceneEvaluationComputeRunnable implements Runnable {
                 return;
             }
         }
-        String scenePathFather = evaluationDirectoryOfUser + "scene/";
+        String scenePathFather = evaluationDirectoryOfUser + "compScene/";
+        String riskPathFather = evaluationDirectoryOfUser + "riskScene/";
         for (SceneEvaluationComputeSubParam sceneEvaluationComputeSubParam : sceneEvaluationComputeParam.getSceneEvaluationComputeSubParam()) {
-            // 创建场景路径
-            String scenePath = scenePathFather + sceneEvaluationComputeSubParam.getSceneId();
-            if (!new File(scenePath).exists()) {
-                FileUtil.createDirectory(scenePath);
-            } else {
-                // 一个场景只计算一次
-                return;
-            }
-            try {
-                if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.COMPLEXITY)) {
-                    if (StringUtil.isEmpty(sceneEvaluationComputeSubParam.getSceneXODRPath())
-                            || StringUtil.isEmpty(sceneEvaluationComputeSubParam.getSceneXOSCPath())) {
-                        continue;
-                    }
+            if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.COMPLEXITY)) {
+                // 创建场景路径
+                if (StringUtil.isEmpty(sceneEvaluationComputeSubParam.getSceneXODRPath())
+                        || StringUtil.isEmpty(sceneEvaluationComputeSubParam.getSceneXOSCPath())) {
+                    continue;
+                }
+                String scenePath = scenePathFather + sceneEvaluationComputeSubParam.getSceneId();
+                if (!new File(scenePath).exists()) {
+                    log.info("创建复杂度文件夹:" + scenePath);
+                    FileUtil.createDirectory(scenePath);
+                }
+                try {
                     // 计算复杂度,根据场景 id 获取场景信息,下载 osc odr
                     String scenarioOsc = sceneEvaluationComputeSubParam.getSceneXOSCPath();
                     String[] splitXosc = scenarioOsc.split("/");
@@ -118,26 +117,37 @@ public class SceneEvaluationComputeRunnable implements Runnable {
                     String[] splitXodr = scenarioOdr.split("/");
                     String xodrName = splitXodr[splitXodr.length - 1];
                     MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationComputeSubParam.getSceneXODRPath(), scenePath + "/" + xodrName);
-                } else if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.RISK)) {
-                    if (StringUtil.isEmpty(sceneEvaluationComputeSubParam.getEvaluationPath())) {
-                        continue;
-                    }
+                } catch (Exception e) {
+                    log.error("文件下载失败", e);
+                    FileUtil.deleteFolder(scenePathFather);   // 删除临时文件
+                }
+            } else if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.RISK)) {
+                if (StringUtil.isEmpty(sceneEvaluationComputeSubParam.getEvaluationPath())) {
+                    continue;
+                }
+                // 创建场景路径
+                String scenePath = riskPathFather + sceneEvaluationComputeSubParam.getSceneId();
+                if (!new File(scenePath).exists()) {
+                    log.info("创建危险度文件夹:" + scenePath);
+                    FileUtil.createDirectory(scenePath);
+                }
+                try {
                     // 计算危险度 从 minio path 下载 csv (ego 和 sensors)
                     MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationComputeSubParam.getEvaluationPath() + "/Ego.csv", scenePath + "/Ego.csv");
                     MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationComputeSubParam.getEvaluationPath() + "/evaluation.csv", scenePath + "/evaluation.csv");
-                } else {
-                    return;
+                } catch (Exception e) {
+                    log.error("文件下载失败", e);
+                    FileUtil.deleteFolder(riskPathFather);   // 删除临时文件
                 }
-            } catch (Exception e) {
-                log.error("文件下载失败", e);
-                FileUtil.deleteFolder(scenePath);   // 删除临时文件
+            } else {
+                return;
             }
         }
         String sceneEvaluationCommand;
         if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.COMPLEXITY)) {
             sceneEvaluationCommand = pyMainPath + " " + scenePathFather + " complexity";
         } else {
-            sceneEvaluationCommand = pyMainPath + " " + scenePathFather + " criticality";
+            sceneEvaluationCommand = pyMainPath + " " + riskPathFather + " criticality";
         }
         String sceneEvaluationResult;
         log.info("开始执行场景评价命令:" + sceneEvaluationCommand);
@@ -168,7 +178,15 @@ public class SceneEvaluationComputeRunnable implements Runnable {
             // 读文件
             StringBuilder result = new StringBuilder();
             try {
-                FileInputStream fileInputStream = new FileInputStream(scenePathFather + sceneEvaluationComputeSubParam.getSceneId() + "/scenario_evaluation.json");
+                String readPath;
+                if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.COMPLEXITY)) {
+                    readPath = scenePathFather;
+                } else if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.RISK)) {
+                    readPath = riskPathFather;
+                } else {
+                    return;
+                }
+                FileInputStream fileInputStream = new FileInputStream(readPath + sceneEvaluationComputeSubParam.getSceneId() + "/scenario_evaluation.json");
                 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
 
                 String line;