|
@@ -112,6 +112,7 @@ public class ProjectConsumer {
|
|
|
log.info("createTaskAndFixData() 接收到项目开始消息为:" + initialProjectJson);
|
|
|
ProjectMessageDTO projectMessageDTO = JsonUtil.jsonToBean(initialProjectJson, ProjectMessageDTO.class);
|
|
|
String projectId = projectMessageDTO.getProjectId(); // 手动执行项目 id 或 自动执行子项目 id
|
|
|
+ String modelType = projectMessageDTO.getModelType(); // 手动执行项目 id 或 自动执行子项目 id
|
|
|
String packageId = projectMessageDTO.getScenePackageId(); // 场景测试包 id
|
|
|
String vehicleConfigId = projectMessageDTO.getVehicleConfigId(); // 模型配置 id
|
|
|
String algorithmId = projectMessageDTO.getAlgorithmId(); // 模型配置 id
|
|
@@ -139,136 +140,248 @@ public class ProjectConsumer {
|
|
|
//去重,之后发送消息的时候会补全指标,如果不去重的话会出现多个场景重复关联多个指标
|
|
|
Set<ScenePO> scenePOSet = new HashSet<>(scenePOList);
|
|
|
log.info("createTaskAndFixData() 项目 " + projectId + " 场景包括:" + scenePOSet);
|
|
|
- // -------------------------------- 2 查询模型 --------------------------------
|
|
|
- log.info("createTaskAndFixData() 项目 " + projectId + " 开始查询模型。");
|
|
|
- //2-1 根据车辆配置id vehicleConfigId, 获取 模型信息和传感器信息
|
|
|
- VehiclePO vehiclePO = vehicleMapper.selectByVehicleConfigId(vehicleConfigId); // 车辆
|
|
|
- List<CameraPO> cameraPOList = sensorCameraMapper.selectCameraByVehicleConfigId(vehicleConfigId); // 摄像头
|
|
|
- List<OgtPO> ogtPOList = sensorOgtMapper.selectOgtByVehicleId(vehicleConfigId); // 完美传感器
|
|
|
- // -------------------------------- 3 算法导入 --------------------------------
|
|
|
+ // -------------------------------- 2 算法导入 --------------------------------
|
|
|
log.info("createTaskAndFixData() 项目 " + projectId + " 开始算法导入。");
|
|
|
String algorithmDockerImage = projectService.handleAlgorithm(projectId, algorithmId);
|
|
|
log.info("createTaskAndFixData() 项目 " + projectId + " 算法已导入:" + algorithmDockerImage);
|
|
|
- // -------------------------------- 4 保存任务消息 --------------------------------
|
|
|
- log.info("createTaskAndFixData() 项目 " + projectId + " 开始保存任务消息。");
|
|
|
- List<TaskPO> taskList = new ArrayList<>();
|
|
|
- for (ScenePO scenePO : scenePOSet) {
|
|
|
- String sceneId = scenePO.getId();
|
|
|
- //3-1 可能会存在多个指标下有同样的场景,所以会查出多个指标,多个指标的场景需要发送多次
|
|
|
- List<String> lastTargetIdList = null;
|
|
|
- if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
|
|
|
- lastTargetIdList = indexMapper.selectLeafIndexIdByManualProjectIdAndSceneId(projectId, "%" + sceneId + "%");
|
|
|
- } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {
|
|
|
- lastTargetIdList = indexMapper.selectLeafIndexIdByAutoSubProjectIdAndSceneId(projectId, "%" + sceneId + "%");
|
|
|
- }
|
|
|
- if (CollectionUtil.isEmpty(lastTargetIdList)) {
|
|
|
- throw new RuntimeException("createTaskAndFixData() 项目 " + projectId + " 使用的场景测试包 " + sceneId + " 不存在指标。");
|
|
|
+ // -------------------------------- 3 查询模型 --------------------------------
|
|
|
+ if ("1".equals(modelType)) {
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 开始查询模型。");
|
|
|
+ //2-1 根据车辆配置id vehicleConfigId, 获取 模型信息和传感器信息
|
|
|
+ VehiclePO vehiclePO = vehicleMapper.selectByVehicleConfigId(vehicleConfigId); // 车辆
|
|
|
+ List<CameraPO> cameraPOList = sensorCameraMapper.selectCameraByVehicleConfigId(vehicleConfigId); // 摄像头
|
|
|
+ List<OgtPO> ogtPOList = sensorOgtMapper.selectOgtByVehicleId(vehicleConfigId); // 完美传感器
|
|
|
+ // -------------------------------- 4 保存任务消息 --------------------------------
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 开始保存任务消息。");
|
|
|
+ List<TaskPO> taskList = new ArrayList<>();
|
|
|
+ for (ScenePO scenePO : scenePOSet) {
|
|
|
+ String sceneId = scenePO.getId();
|
|
|
+ //3-1 可能会存在多个指标下有同样的场景,所以会查出多个指标,多个指标的场景需要发送多次
|
|
|
+ List<String> lastTargetIdList = null;
|
|
|
+ if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
|
|
|
+ lastTargetIdList = indexMapper.selectLeafIndexIdByManualProjectIdAndSceneId(projectId, "%" + sceneId + "%");
|
|
|
+ } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {
|
|
|
+ lastTargetIdList = indexMapper.selectLeafIndexIdByAutoSubProjectIdAndSceneId(projectId, "%" + sceneId + "%");
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isEmpty(lastTargetIdList)) {
|
|
|
+ throw new RuntimeException("createTaskAndFixData() 项目 " + projectId + " 使用的场景测试包 " + sceneId + " 不存在指标。");
|
|
|
+ }
|
|
|
+ for (String lastTargetId : lastTargetIdList) {
|
|
|
+ String taskId = StringUtil.getRandomUUID();
|
|
|
+ // 保存任务信息
|
|
|
+ TaskPO taskPO = TaskPO.builder() // run_start_time 和 run_end_time 不填
|
|
|
+ .id(taskId)
|
|
|
+ .pId(projectId)
|
|
|
+ .sceneId(sceneId)
|
|
|
+ .lastTargetId(lastTargetId)
|
|
|
+ .sceneName(scenePO.getName())
|
|
|
+ .sceneType(scenePO.getType())
|
|
|
+ .runState(DictConstants.TASK_PENDING)
|
|
|
+ .runResultFilePath(projectResultPathOfMinio + projectId + "/" + taskId)
|
|
|
+ .build();
|
|
|
+ taskPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
+ taskPO.setCreateUserId(userId);
|
|
|
+ taskPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ taskPO.setModifyUserId(userId);
|
|
|
+ taskPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ taskPO.setIsDeleted("0");
|
|
|
+ taskList.add(taskPO);
|
|
|
+ // 将 xosc、xodr、osgb 全部上传到仿真结果路径
|
|
|
+ String scenarioOsc = scenePO.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);
|
|
|
+ log.info("cacheManualProject() 已经将 xosc 上传到 minio 的结果文件目录:" + xoscPathOfMinio);
|
|
|
+
|
|
|
+ String scenarioOdr = scenePO.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);
|
|
|
+ log.info("cacheManualProject() 已经将 xodr 上传到 minio 的结果文件目录:" + xodrPathOfMinio);
|
|
|
+
|
|
|
+ String scenarioOsgb = scenePO.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("cacheManualProject() 已经将 osgb 上传到 minio 的结果文件目录:" + osgbPathOfMinio);
|
|
|
+
|
|
|
+ // 组装 task 消息
|
|
|
+ TaskTO taskTO = TaskTO.builder()
|
|
|
+ .info(InfoTO.builder()
|
|
|
+ .project_id(taskPO.getPId())
|
|
|
+ .task_id(taskPO.getId())
|
|
|
+ .task_path(taskPO.getRunResultFilePath())
|
|
|
+ .default_time(videoTime)
|
|
|
+ .build())
|
|
|
+ .scenario(ScenarioTO.builder()
|
|
|
+ .scenario_osc(xoscPathOfMinio)
|
|
|
+ .scenario_odr(xodrPathOfMinio)
|
|
|
+ .scenario_osgb(osgbPathOfMinio)
|
|
|
+ .build())
|
|
|
+ .vehicle(VehicleTO.builder()
|
|
|
+ .model(ModelTO.builder()
|
|
|
+ .model_label(vehiclePO.getModelLabel())
|
|
|
+ .build())
|
|
|
+ .dynamics(DynamicsTO.builder()
|
|
|
+ .dynamics_maxspeed(vehiclePO.getMaxSpeed())
|
|
|
+ .dynamics_enginepower(vehiclePO.getEnginePower())
|
|
|
+ .dynamics_maxdecel(vehiclePO.getMaxDeceleration())
|
|
|
+ .dynamics_maxsteering(vehiclePO.getMaxSteeringAngle())
|
|
|
+ .dynamics_mass(vehiclePO.getMass())
|
|
|
+ .dynamics_frontsurfaceeffective(vehiclePO.getFrontSurfaceEffective())
|
|
|
+ .dynamics_airdragcoefficient(vehiclePO.getAirDragCoefficient())
|
|
|
+ .dynamics_rollingresistance(vehiclePO.getRollingResistanceCoefficient())
|
|
|
+ .dynamics_wheeldiameter(vehiclePO.getWheelDiameter())
|
|
|
+ .dynamics_wheeldrive(vehiclePO.getWheelDrive())
|
|
|
+ .dynamics_overallefficiency(vehiclePO.getOverallEfficiency())
|
|
|
+ .dynamics_distfront(vehiclePO.getFrontDistance())
|
|
|
+ .dynamics_distrear(vehiclePO.getRearDistance())
|
|
|
+ .dynamics_distleft(vehiclePO.getLeftDistance())
|
|
|
+ .dynamics_distright(vehiclePO.getRightDistance())
|
|
|
+ .dynamics_distheight(vehiclePO.getHeightDistance())
|
|
|
+ .dynamics_wheelbase(vehiclePO.getWheelbase())
|
|
|
+ .build())
|
|
|
+ .sensors(SensorsTO.builder() // 根据 vehicleId 查询绑定的传感器列表
|
|
|
+ .camera(cameraPOList)
|
|
|
+ .OGT(ogtPOList)
|
|
|
+ .build())
|
|
|
+ .build())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 将对象转成 json 保存到临时目录等待资源分配后执行:" + taskTO);
|
|
|
+ FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskTO), projectPath + taskId + ".json");
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 将对象转成 json 保存到临时目录成功。");
|
|
|
+ }
|
|
|
}
|
|
|
- for (String lastTargetId : lastTargetIdList) {
|
|
|
- String taskId = StringUtil.getRandomUUID();
|
|
|
- // 保存任务信息
|
|
|
- TaskPO taskPO = TaskPO.builder() // run_start_time 和 run_end_time 不填
|
|
|
- .id(taskId)
|
|
|
- .pId(projectId)
|
|
|
- .sceneId(sceneId)
|
|
|
- .lastTargetId(lastTargetId)
|
|
|
- .sceneName(scenePO.getName())
|
|
|
- .sceneType(scenePO.getType())
|
|
|
- .runState(DictConstants.TASK_PENDING)
|
|
|
- .runResultFilePath(projectResultPathOfMinio + projectId + "/" + taskId)
|
|
|
- .build();
|
|
|
- taskPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
- taskPO.setCreateUserId(userId);
|
|
|
- taskPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
- taskPO.setModifyUserId(userId);
|
|
|
- taskPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
- taskPO.setIsDeleted("0");
|
|
|
- taskList.add(taskPO);
|
|
|
- // 将 xosc、xodr、osgb 全部上传到仿真结果路径
|
|
|
- String scenarioOsc = scenePO.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);
|
|
|
- log.info("cacheManualProject() 已经将 xosc 上传到 minio 的结果文件目录:" + xoscPathOfMinio);
|
|
|
-
|
|
|
- String scenarioOdr = scenePO.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);
|
|
|
- log.info("cacheManualProject() 已经将 xodr 上传到 minio 的结果文件目录:" + xodrPathOfMinio);
|
|
|
-
|
|
|
- String scenarioOsgb = scenePO.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("cacheManualProject() 已经将 osgb 上传到 minio 的结果文件目录:" + osgbPathOfMinio);
|
|
|
-
|
|
|
- // 组装 task 消息
|
|
|
- TaskTO taskTO = TaskTO.builder()
|
|
|
- .info(InfoTO.builder()
|
|
|
- .project_id(taskPO.getPId())
|
|
|
- .task_id(taskPO.getId())
|
|
|
- .task_path(taskPO.getRunResultFilePath())
|
|
|
- .default_time(videoTime)
|
|
|
- .build())
|
|
|
- .scenario(ScenarioTO.builder()
|
|
|
- .scenario_osc(xoscPathOfMinio)
|
|
|
- .scenario_odr(xodrPathOfMinio)
|
|
|
- .scenario_osgb(osgbPathOfMinio)
|
|
|
- .build())
|
|
|
- .vehicle(VehicleTO.builder()
|
|
|
- .model(ModelTO.builder()
|
|
|
- .model_label(vehiclePO.getModelLabel())
|
|
|
- .build())
|
|
|
- .dynamics(DynamicsTO.builder()
|
|
|
- .dynamics_maxspeed(vehiclePO.getMaxSpeed())
|
|
|
- .dynamics_enginepower(vehiclePO.getEnginePower())
|
|
|
- .dynamics_maxdecel(vehiclePO.getMaxDeceleration())
|
|
|
- .dynamics_maxsteering(vehiclePO.getMaxSteeringAngle())
|
|
|
- .dynamics_mass(vehiclePO.getMass())
|
|
|
- .dynamics_frontsurfaceeffective(vehiclePO.getFrontSurfaceEffective())
|
|
|
- .dynamics_airdragcoefficient(vehiclePO.getAirDragCoefficient())
|
|
|
- .dynamics_rollingresistance(vehiclePO.getRollingResistanceCoefficient())
|
|
|
- .dynamics_wheeldiameter(vehiclePO.getWheelDiameter())
|
|
|
- .dynamics_wheeldrive(vehiclePO.getWheelDrive())
|
|
|
- .dynamics_overallefficiency(vehiclePO.getOverallEfficiency())
|
|
|
- .dynamics_distfront(vehiclePO.getFrontDistance())
|
|
|
- .dynamics_distrear(vehiclePO.getRearDistance())
|
|
|
- .dynamics_distleft(vehiclePO.getLeftDistance())
|
|
|
- .dynamics_distright(vehiclePO.getRightDistance())
|
|
|
- .dynamics_distheight(vehiclePO.getHeightDistance())
|
|
|
- .dynamics_wheelbase(vehiclePO.getWheelbase())
|
|
|
- .build())
|
|
|
- .sensors(SensorsTO.builder() // 根据 vehicleId 查询绑定的传感器列表
|
|
|
- .camera(cameraPOList)
|
|
|
- .OGT(ogtPOList)
|
|
|
- .build())
|
|
|
- .build())
|
|
|
- .build();
|
|
|
-
|
|
|
- log.info("createTaskAndFixData() 项目 " + projectId + " 将对象转成 json 保存到临时目录等待资源分配后执行:" + taskTO);
|
|
|
- FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskTO), projectPath + taskId + ".json");
|
|
|
- log.info("createTaskAndFixData() 项目 " + projectId + " 将对象转成 json 保存到临时目录成功。");
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 创建任务:" + taskList);
|
|
|
+ taskManager.batchInsertTask(taskList);
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 任务保存成功。");
|
|
|
+ } else if ("2".equals(modelType)) {
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 开始查询模型。");
|
|
|
+
|
|
|
+ VehiclePO vehiclePO = vehicleMapper.selectByVehicleConfigId(vehicleConfigId); // 车辆
|
|
|
+ List<CameraPO> cameraPOList = sensorCameraMapper.selectCameraByVehicleConfigId(vehicleConfigId); // 摄像头
|
|
|
+ List<OgtPO> ogtPOList = sensorOgtMapper.selectOgtByVehicleId(vehicleConfigId); // 完美传感器
|
|
|
+ // -------------------------------- 4 保存任务消息 --------------------------------
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 开始保存任务消息。");
|
|
|
+ List<TaskPO> taskList = new ArrayList<>();
|
|
|
+ for (ScenePO scenePO : scenePOSet) {
|
|
|
+ String sceneId = scenePO.getId();
|
|
|
+ //3-1 可能会存在多个指标下有同样的场景,所以会查出多个指标,多个指标的场景需要发送多次
|
|
|
+ List<String> lastTargetIdList = null;
|
|
|
+ if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
|
|
|
+ lastTargetIdList = indexMapper.selectLeafIndexIdByManualProjectIdAndSceneId(projectId, "%" + sceneId + "%");
|
|
|
+ } else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {
|
|
|
+ lastTargetIdList = indexMapper.selectLeafIndexIdByAutoSubProjectIdAndSceneId(projectId, "%" + sceneId + "%");
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isEmpty(lastTargetIdList)) {
|
|
|
+ throw new RuntimeException("createTaskAndFixData() 项目 " + projectId + " 使用的场景测试包 " + sceneId + " 不存在指标。");
|
|
|
+ }
|
|
|
+ for (String lastTargetId : lastTargetIdList) {
|
|
|
+ String taskId = StringUtil.getRandomUUID();
|
|
|
+ // 保存任务信息
|
|
|
+ TaskPO taskPO = TaskPO.builder() // run_start_time 和 run_end_time 不填
|
|
|
+ .id(taskId)
|
|
|
+ .pId(projectId)
|
|
|
+ .sceneId(sceneId)
|
|
|
+ .lastTargetId(lastTargetId)
|
|
|
+ .sceneName(scenePO.getName())
|
|
|
+ .sceneType(scenePO.getType())
|
|
|
+ .runState(DictConstants.TASK_PENDING)
|
|
|
+ .runResultFilePath(projectResultPathOfMinio + projectId + "/" + taskId)
|
|
|
+ .build();
|
|
|
+ taskPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
+ taskPO.setCreateUserId(userId);
|
|
|
+ taskPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ taskPO.setModifyUserId(userId);
|
|
|
+ taskPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ taskPO.setIsDeleted("0");
|
|
|
+ taskList.add(taskPO);
|
|
|
+ // 将 xosc、xodr、osgb 全部上传到仿真结果路径
|
|
|
+ String scenarioOsc = scenePO.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);
|
|
|
+ log.info("cacheManualProject() 已经将 xosc 上传到 minio 的结果文件目录:" + xoscPathOfMinio);
|
|
|
+
|
|
|
+ String scenarioOdr = scenePO.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);
|
|
|
+ log.info("cacheManualProject() 已经将 xodr 上传到 minio 的结果文件目录:" + xodrPathOfMinio);
|
|
|
+
|
|
|
+ String scenarioOsgb = scenePO.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("cacheManualProject() 已经将 osgb 上传到 minio 的结果文件目录:" + osgbPathOfMinio);
|
|
|
+
|
|
|
+ // 组装 task 消息
|
|
|
+ // carsim 不需要查询模型参数
|
|
|
+ TaskTO taskTO = TaskTO.builder()
|
|
|
+ .info(InfoTO.builder()
|
|
|
+ .project_id(taskPO.getPId())
|
|
|
+ .task_id(taskPO.getId())
|
|
|
+ .task_path(taskPO.getRunResultFilePath())
|
|
|
+ .default_time(videoTime)
|
|
|
+ .build())
|
|
|
+ .scenario(ScenarioTO.builder()
|
|
|
+ .scenario_osc(xoscPathOfMinio)
|
|
|
+ .scenario_odr(xodrPathOfMinio)
|
|
|
+ .scenario_osgb(osgbPathOfMinio)
|
|
|
+ .build())
|
|
|
+ .vehicle(VehicleTO.builder()
|
|
|
+ .model(ModelTO.builder()
|
|
|
+ .model_label(vehiclePO.getModelLabel())
|
|
|
+ .build())
|
|
|
+ .dynamics(null)
|
|
|
+ .sensors(SensorsTO.builder() // 根据 vehicleId 查询绑定的传感器列表
|
|
|
+ .camera(cameraPOList)
|
|
|
+ .OGT(ogtPOList)
|
|
|
+ .build())
|
|
|
+ .build())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 将对象转成 json 保存到临时目录等待资源分配后执行:" + taskTO);
|
|
|
+ FileUtil.writeStringToLocalFile(JsonUtil.beanToJson(taskTO), projectPath + taskId + ".json");
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 将对象转成 json 保存到临时目录成功。");
|
|
|
+ }
|
|
|
}
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 创建任务:" + taskList);
|
|
|
+ taskManager.batchInsertTask(taskList);
|
|
|
+ log.info("createTaskAndFixData() 项目 " + projectId + " 任务保存成功。");
|
|
|
}
|
|
|
- log.info("createTaskAndFixData() 项目 " + projectId + " 创建任务:" + taskList);
|
|
|
- taskManager.batchInsertTask(taskList);
|
|
|
- log.info("createTaskAndFixData() 项目 " + projectId + " 任务保存成功。");
|
|
|
+
|
|
|
//* -------------------------------- 4 开始排队 --------------------------------
|
|
|
cacheProject(projectRecord);
|
|
|
|