|
@@ -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;
|