李春阳 1 年之前
父节点
当前提交
5d887b34d6

+ 108 - 100
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/app/service/ProjectApplicationService.java

@@ -208,56 +208,60 @@ public class ProjectApplicationService {
                         throw new RuntimeException("项目 " + projectId + " 使用的场景测试包 " + packageId + " 不存在场景:" + sceneId);
                         throw new RuntimeException("项目 " + projectId + " 使用的场景测试包 " + packageId + " 不存在场景:" + sceneId);
                     }
                     }
                     for (String lastTargetId : lastTargetIdList) {
                     for (String lastTargetId : lastTargetIdList) {
-                        String taskId = StringUtil.getRandomUUID();
-                        // 保存任务信息
-                        TaskEntity taskEntity = TaskEntity.builder() // run_start_time 和 run_end_time 不填
-                                .id(taskId).pId(projectId).sceneId(sceneId).lastTargetId(lastTargetId).sceneName(sceneEntity.getName()).sceneType(sceneEntity.getType()).runState(DictConstants.TASK_PENDING).runResultFilePath(projectResultPathOfMinio + projectId + "/" + taskId).build();
-                        taskEntity.setCreateTime(TimeUtil.getNowForMysql());
-                        taskEntity.setCreateUserId(userId);
-                        taskEntity.setModifyTime(TimeUtil.getNowForMysql());
-                        taskEntity.setModifyUserId(userId);
-                        taskEntity.setModifyTime(TimeUtil.getNowForMysql());
-                        taskEntity.setIsDeleted("0");
-                        taskList.add(taskEntity);
-                        // 将 xosc、xodr、osgb 全部上传到仿真结果路径
-                        String scenarioOsc = sceneEntity.getScenarioOsc();
-                        String[] splitXosc = scenarioOsc.split("/");
-                        String xoscName = splitXosc[splitXosc.length - 1];
-                        String[] xoscNameSplit = xoscName.split("\\.");
-                        String xoscSuffix = xoscNameSplit[xoscNameSplit.length - 1];
-                        String xoscPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xoscName;
-                        String xoscPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xoscSuffix;
-                        MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsc, xoscPathOfLinux);
-                        MinioUtil.uploadFromFile(minioClient, xoscPathOfLinux, bucketName, xoscPathOfMinio);
-                        FileUtil.rm(xoscPathOfLinux);   // 删除临时文件
-
-                        String scenarioOdr = sceneEntity.getScenarioOdr();
-                        String[] splitXodr = scenarioOdr.split("/");
-                        String xodrName = splitXodr[splitXodr.length - 1];
-                        String[] xodrNameSplit = xodrName.split("\\.");
-                        String xodrSuffix = xodrNameSplit[xodrNameSplit.length - 1];
-                        String xodrPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xodrName;
-                        String xodrPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xodrSuffix;
-                        MinioUtil.downloadToFile(minioClient, bucketName, scenarioOdr, xodrPathOfLinux);
-                        MinioUtil.uploadFromFile(minioClient, xodrPathOfLinux, bucketName, xodrPathOfMinio);
-                        FileUtil.rm(xodrPathOfLinux);   // 删除临时文件
-
-                        String scenarioOsgb = sceneEntity.getScenarioOsgb();
-                        String[] splitOsgb = scenarioOsgb.split("/");
-                        String osgbName = splitOsgb[splitOsgb.length - 1];
-                        String[] osgbNameSplit = osgbName.split("\\.");
-                        String osgbSuffix = osgbNameSplit[osgbNameSplit.length - 1];
-                        String osgbPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + osgbName;
-                        String osgbPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + osgbSuffix;
-                        MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsgb, osgbPathOfLinux);
-                        MinioUtil.uploadFromFile(minioClient, osgbPathOfLinux, bucketName, osgbPathOfMinio);
-                        FileUtil.rm(osgbPathOfLinux);   // 删除临时文件
-
-                        // 组装 task 消息
-                        TaskMessageEntity taskMessageEntity = TaskMessageEntity.builder().info(InfoEntity.builder().project_id(taskEntity.getPId()).task_id(taskEntity.getId()).task_path(taskEntity.getRunResultFilePath()).default_time(videoTime).build()).scenario(ScenarioEntity.builder().scenario_osc(xoscPathOfMinio).scenario_odr(xodrPathOfMinio).scenario_osgb(osgbPathOfMinio).build()).vehicle(VehicleEntity.builder().model(ModelEntity.builder().model_label(vehicleEntity.getModelLabel()).build()).dynamics(DynamicsEntity.builder().dynamics_maxspeed(vehicleEntity.getMaxSpeed()).dynamics_enginepower(vehicleEntity.getEnginePower()).dynamics_maxdecel(vehicleEntity.getMaxDeceleration()).dynamics_maxsteering(vehicleEntity.getMaxSteeringAngle()).dynamics_mass(vehicleEntity.getMass()).dynamics_frontsurfaceeffective(vehicleEntity.getFrontSurfaceEffective()).dynamics_airdragcoefficient(vehicleEntity.getAirDragCoefficient()).dynamics_rollingresistance(vehicleEntity.getRollingResistanceCoefficient()).dynamics_wheeldiameter(vehicleEntity.getWheelDiameter()).dynamics_wheeldrive(vehicleEntity.getWheelDrive()).dynamics_overallefficiency(vehicleEntity.getOverallEfficiency()).dynamics_distfront(vehicleEntity.getFrontDistance()).dynamics_distrear(vehicleEntity.getRearDistance()).dynamics_distleft(vehicleEntity.getLeftDistance()).dynamics_distright(vehicleEntity.getRightDistance()).dynamics_distheight(vehicleEntity.getHeightDistance()).dynamics_wheelbase(vehicleEntity.getWheelbase()).build()).sensors(SensorsEntity.builder()   // 根据 vehicleId 查询绑定的传感器列表
-                                .camera(cameraEntityList).OGT(ogtEntityList).build()).build()).build();
-                        FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskMessageEntity), projectPath + taskId + ".json");
-                        log.info("项目 " + projectId + " 将任务消息转成 json 保存到临时目录等待资源分配后执行:" + taskMessageEntity.getInfo().getTask_id());
+                        try {
+                            String taskId = StringUtil.getRandomUUID();
+                            // 保存任务信息
+                            TaskEntity taskEntity = TaskEntity.builder() // run_start_time 和 run_end_time 不填
+                                    .id(taskId).pId(projectId).sceneId(sceneId).lastTargetId(lastTargetId).sceneName(sceneEntity.getName()).sceneType(sceneEntity.getType()).runState(DictConstants.TASK_PENDING).runResultFilePath(projectResultPathOfMinio + projectId + "/" + taskId).build();
+                            taskEntity.setCreateTime(TimeUtil.getNowForMysql());
+                            taskEntity.setCreateUserId(userId);
+                            taskEntity.setModifyTime(TimeUtil.getNowForMysql());
+                            taskEntity.setModifyUserId(userId);
+                            taskEntity.setModifyTime(TimeUtil.getNowForMysql());
+                            taskEntity.setIsDeleted("0");
+                            // 将 xosc、xodr、osgb 全部上传到仿真结果路径
+                            String scenarioOsc = sceneEntity.getScenarioOsc();
+                            String[] splitXosc = scenarioOsc.split("/");
+                            String xoscName = splitXosc[splitXosc.length - 1];
+                            String[] xoscNameSplit = xoscName.split("\\.");
+                            String xoscSuffix = xoscNameSplit[xoscNameSplit.length - 1];
+                            String xoscPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xoscName;
+                            String xoscPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xoscSuffix;
+                            MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsc, xoscPathOfLinux);
+                            MinioUtil.uploadFromFile(minioClient, xoscPathOfLinux, bucketName, xoscPathOfMinio);
+                            FileUtil.rm(xoscPathOfLinux);   // 删除临时文件
+
+                            String scenarioOdr = sceneEntity.getScenarioOdr();
+                            String[] splitXodr = scenarioOdr.split("/");
+                            String xodrName = splitXodr[splitXodr.length - 1];
+                            String[] xodrNameSplit = xodrName.split("\\.");
+                            String xodrSuffix = xodrNameSplit[xodrNameSplit.length - 1];
+                            String xodrPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xodrName;
+                            String xodrPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xodrSuffix;
+                            MinioUtil.downloadToFile(minioClient, bucketName, scenarioOdr, xodrPathOfLinux);
+                            MinioUtil.uploadFromFile(minioClient, xodrPathOfLinux, bucketName, xodrPathOfMinio);
+                            FileUtil.rm(xodrPathOfLinux);   // 删除临时文件
+
+                            String scenarioOsgb = sceneEntity.getScenarioOsgb();
+                            String[] splitOsgb = scenarioOsgb.split("/");
+                            String osgbName = splitOsgb[splitOsgb.length - 1];
+                            String[] osgbNameSplit = osgbName.split("\\.");
+                            String osgbSuffix = osgbNameSplit[osgbNameSplit.length - 1];
+                            String osgbPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + osgbName;
+                            String osgbPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + osgbSuffix;
+                            MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsgb, osgbPathOfLinux);
+                            MinioUtil.uploadFromFile(minioClient, osgbPathOfLinux, bucketName, osgbPathOfMinio);
+                            FileUtil.rm(osgbPathOfLinux);   // 删除临时文件
+
+                            // 组装 task 消息
+                            TaskMessageEntity taskMessageEntity = TaskMessageEntity.builder().info(InfoEntity.builder().project_id(taskEntity.getPId()).task_id(taskEntity.getId()).task_path(taskEntity.getRunResultFilePath()).default_time(videoTime).build()).scenario(ScenarioEntity.builder().scenario_osc(xoscPathOfMinio).scenario_odr(xodrPathOfMinio).scenario_osgb(osgbPathOfMinio).build()).vehicle(VehicleEntity.builder().model(ModelEntity.builder().model_label(vehicleEntity.getModelLabel()).build()).dynamics(DynamicsEntity.builder().dynamics_maxspeed(vehicleEntity.getMaxSpeed()).dynamics_enginepower(vehicleEntity.getEnginePower()).dynamics_maxdecel(vehicleEntity.getMaxDeceleration()).dynamics_maxsteering(vehicleEntity.getMaxSteeringAngle()).dynamics_mass(vehicleEntity.getMass()).dynamics_frontsurfaceeffective(vehicleEntity.getFrontSurfaceEffective()).dynamics_airdragcoefficient(vehicleEntity.getAirDragCoefficient()).dynamics_rollingresistance(vehicleEntity.getRollingResistanceCoefficient()).dynamics_wheeldiameter(vehicleEntity.getWheelDiameter()).dynamics_wheeldrive(vehicleEntity.getWheelDrive()).dynamics_overallefficiency(vehicleEntity.getOverallEfficiency()).dynamics_distfront(vehicleEntity.getFrontDistance()).dynamics_distrear(vehicleEntity.getRearDistance()).dynamics_distleft(vehicleEntity.getLeftDistance()).dynamics_distright(vehicleEntity.getRightDistance()).dynamics_distheight(vehicleEntity.getHeightDistance()).dynamics_wheelbase(vehicleEntity.getWheelbase()).build()).sensors(SensorsEntity.builder()   // 根据 vehicleId 查询绑定的传感器列表
+                                    .camera(cameraEntityList).OGT(ogtEntityList).build()).build()).build();
+                            FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskMessageEntity), projectPath + taskId + ".json");
+                            taskList.add(taskEntity);
+                            log.info("项目 " + projectId + " 将任务消息转成 json 保存到临时目录等待资源分配后执行:" + taskMessageEntity.getInfo().getTask_id());
+                        } catch (Exception e) {
+                            log.error("组装数据失败." + e);
+                        }
                     }
                     }
                 }
                 }
                 taskDomainService.batchInsertTask(taskList);
                 taskDomainService.batchInsertTask(taskList);
@@ -278,56 +282,60 @@ public class ProjectApplicationService {
                         throw new RuntimeException("项目 " + projectId + " 使用的场景测试包 " + sceneId + " 不存在指标。");
                         throw new RuntimeException("项目 " + projectId + " 使用的场景测试包 " + sceneId + " 不存在指标。");
                     }
                     }
                     for (String lastTargetId : lastTargetIdList) {
                     for (String lastTargetId : lastTargetIdList) {
-                        String taskId = StringUtil.getRandomUUID();
-                        // 保存任务信息
-                        TaskEntity taskEntity = TaskEntity.builder() // run_start_time 和 run_end_time 不填
-                                .id(taskId).pId(projectId).sceneId(sceneId).lastTargetId(lastTargetId).sceneName(sceneEntity.getName()).sceneType(sceneEntity.getType()).runState(DictConstants.TASK_PENDING).runResultFilePath(projectResultPathOfMinio + projectId + "/" + taskId).build();
-                        taskEntity.setCreateTime(TimeUtil.getNowForMysql());
-                        taskEntity.setCreateUserId(userId);
-                        taskEntity.setModifyTime(TimeUtil.getNowForMysql());
-                        taskEntity.setModifyUserId(userId);
-                        taskEntity.setModifyTime(TimeUtil.getNowForMysql());
-                        taskEntity.setIsDeleted("0");
-                        taskList.add(taskEntity);
-                        // 将 xosc、xodr、osgb 全部上传到仿真结果路径
-                        String scenarioOsc = sceneEntity.getScenarioOsc();
-                        String[] splitXosc = scenarioOsc.split("/");
-                        String xoscName = splitXosc[splitXosc.length - 1];
-                        String[] xoscNameSplit = xoscName.split("\\.");
-                        String xoscSuffix = xoscNameSplit[xoscNameSplit.length - 1];
-                        String xoscPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xoscName;
-                        String xoscPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xoscSuffix;
-                        MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsc, xoscPathOfLinux);
-                        MinioUtil.uploadFromFile(minioClient, xoscPathOfLinux, bucketName, xoscPathOfMinio);
-
-                        String scenarioOdr = sceneEntity.getScenarioOdr();
-                        String[] splitXodr = scenarioOdr.split("/");
-                        String xodrName = splitXodr[splitXodr.length - 1];
-                        String[] xodrNameSplit = xodrName.split("\\.");
-                        String xodrSuffix = xodrNameSplit[xodrNameSplit.length - 1];
-                        String xodrPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xodrName;
-                        String xodrPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xodrSuffix;
-                        MinioUtil.downloadToFile(minioClient, bucketName, scenarioOdr, xodrPathOfLinux);
-                        MinioUtil.uploadFromFile(minioClient, xodrPathOfLinux, bucketName, xodrPathOfMinio);
-
-                        String scenarioOsgb = sceneEntity.getScenarioOsgb();
-                        String[] splitOsgb = scenarioOsgb.split("/");
-                        String osgbName = splitOsgb[splitOsgb.length - 1];
-                        String[] osgbNameSplit = osgbName.split("\\.");
-                        String osgbSuffix = osgbNameSplit[osgbNameSplit.length - 1];
-                        String osgbPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + osgbName;
-                        String osgbPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + osgbSuffix;
-                        MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsgb, osgbPathOfLinux);
-                        MinioUtil.uploadFromFile(minioClient, osgbPathOfLinux, bucketName, osgbPathOfMinio);
-                        log.info("已经将 xosc、xodr、osgb 上传到 minio 的结果文件目录:" + projectResultPathOfMinio);
-
-                        // 组装 task 消息
-                        // carsim 不需要查询模型参数
-                        TaskMessageEntity taskMessageEntity = TaskMessageEntity.builder().info(InfoEntity.builder().project_id(taskEntity.getPId()).task_id(taskEntity.getId()).task_path(taskEntity.getRunResultFilePath()).default_time(videoTime).build()).scenario(ScenarioEntity.builder().scenario_osc(xoscPathOfMinio).scenario_odr(xodrPathOfMinio).scenario_osgb(osgbPathOfMinio).build()).vehicle(VehicleEntity.builder().model(ModelEntity.builder().model_label(vehicleEntity.getModelLabel()).build()).dynamics(null).sensors(SensorsEntity.builder()   // 根据 vehicleId 查询绑定的传感器列表
-                                .camera(cameraEntityList).OGT(ogtEntityList).build()).build()).build();
-
-                        FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskMessageEntity), projectPath + taskId + ".json");
-                        log.info("项目 " + projectId + " 将任务消息转成 json 保存到临时目录等待资源分配后执行:" + taskMessageEntity.getInfo().getTask_id());
+                        try {
+                            String taskId = StringUtil.getRandomUUID();
+                            // 保存任务信息
+                            TaskEntity taskEntity = TaskEntity.builder() // run_start_time 和 run_end_time 不填
+                                    .id(taskId).pId(projectId).sceneId(sceneId).lastTargetId(lastTargetId).sceneName(sceneEntity.getName()).sceneType(sceneEntity.getType()).runState(DictConstants.TASK_PENDING).runResultFilePath(projectResultPathOfMinio + projectId + "/" + taskId).build();
+                            taskEntity.setCreateTime(TimeUtil.getNowForMysql());
+                            taskEntity.setCreateUserId(userId);
+                            taskEntity.setModifyTime(TimeUtil.getNowForMysql());
+                            taskEntity.setModifyUserId(userId);
+                            taskEntity.setModifyTime(TimeUtil.getNowForMysql());
+                            taskEntity.setIsDeleted("0");
+                            // 将 xosc、xodr、osgb 全部上传到仿真结果路径
+                            String scenarioOsc = sceneEntity.getScenarioOsc();
+                            String[] splitXosc = scenarioOsc.split("/");
+                            String xoscName = splitXosc[splitXosc.length - 1];
+                            String[] xoscNameSplit = xoscName.split("\\.");
+                            String xoscSuffix = xoscNameSplit[xoscNameSplit.length - 1];
+                            String xoscPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xoscName;
+                            String xoscPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xoscSuffix;
+                            MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsc, xoscPathOfLinux);
+                            MinioUtil.uploadFromFile(minioClient, xoscPathOfLinux, bucketName, xoscPathOfMinio);
+
+                            String scenarioOdr = sceneEntity.getScenarioOdr();
+                            String[] splitXodr = scenarioOdr.split("/");
+                            String xodrName = splitXodr[splitXodr.length - 1];
+                            String[] xodrNameSplit = xodrName.split("\\.");
+                            String xodrSuffix = xodrNameSplit[xodrNameSplit.length - 1];
+                            String xodrPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + xodrName;
+                            String xodrPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + xodrSuffix;
+                            MinioUtil.downloadToFile(minioClient, bucketName, scenarioOdr, xodrPathOfLinux);
+                            MinioUtil.uploadFromFile(minioClient, xodrPathOfLinux, bucketName, xodrPathOfMinio);
+
+                            String scenarioOsgb = sceneEntity.getScenarioOsgb();
+                            String[] splitOsgb = scenarioOsgb.split("/");
+                            String osgbName = splitOsgb[splitOsgb.length - 1];
+                            String[] osgbNameSplit = osgbName.split("\\.");
+                            String osgbSuffix = osgbNameSplit[osgbNameSplit.length - 1];
+                            String osgbPathOfLinux = linuxTempPath + "video/" + projectId + "/" + taskId + "/" + osgbName;
+                            String osgbPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + osgbSuffix;
+                            MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsgb, osgbPathOfLinux);
+                            MinioUtil.uploadFromFile(minioClient, osgbPathOfLinux, bucketName, osgbPathOfMinio);
+                            log.info("已经将 xosc、xodr、osgb 上传到 minio 的结果文件目录:" + projectResultPathOfMinio);
+
+                            // 组装 task 消息
+                            // carsim 不需要查询模型参数
+                            TaskMessageEntity taskMessageEntity = TaskMessageEntity.builder().info(InfoEntity.builder().project_id(taskEntity.getPId()).task_id(taskEntity.getId()).task_path(taskEntity.getRunResultFilePath()).default_time(videoTime).build()).scenario(ScenarioEntity.builder().scenario_osc(xoscPathOfMinio).scenario_odr(xodrPathOfMinio).scenario_osgb(osgbPathOfMinio).build()).vehicle(VehicleEntity.builder().model(ModelEntity.builder().model_label(vehicleEntity.getModelLabel()).build()).dynamics(null).sensors(SensorsEntity.builder()   // 根据 vehicleId 查询绑定的传感器列表
+                                    .camera(cameraEntityList).OGT(ogtEntityList).build()).build()).build();
+
+                            FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskMessageEntity), projectPath + taskId + ".json");
+                            taskList.add(taskEntity);
+                            log.info("项目 " + projectId + " 将任务消息转成 json 保存到临时目录等待资源分配后执行:" + taskMessageEntity.getInfo().getTask_id());
+                        } catch (Exception e) {
+                            log.error("组装数据失败." + e);
+                        }
                     }
                     }
                 }
                 }
                 taskDomainService.batchInsertTask(taskList);
                 taskDomainService.batchInsertTask(taskList);