root há 2 anos atrás
pai
commit
c83aa4ef38

+ 6 - 4
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/kubernetes/KubernetesConfiguration.java

@@ -21,10 +21,12 @@ public class KubernetesConfiguration {
 
     private String namespace;
     private String podTimeout;
-    private String vtdImageUseGpu;
-    private String vtdImageNotUseGpu;
-    private String vtdCommandUseGpu;
-    private String vtdCommandNotUseGpu;
+    private String imageVtdGpu;
+    private String commandVtdGpu;
+    private String commandVtdCarsimGpu;
+    private String imageVtdNogpu;
+    private String commandVtdNogpu;
+    private String commandVtdCarsimNogpu;
     private String carsimImage;
     private String carsimCommand;
     private List<KubernetesNodeTO> nodeList;

+ 1 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/minio/MinioConfiguration.java

@@ -14,6 +14,7 @@ public class MinioConfiguration {
     private String endpointWithoutHttp;
     private String accessKey;
     private String secretKey;
+    private String bucketName;
 
     @Bean
     public MinioClient minioClient() {

+ 2 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ProjectConsumer.java

@@ -500,6 +500,7 @@ public class ProjectConsumer {
     public void parseProject(ProjectMessageDTO projectMessageDTO, String projectRunningKey) {
         String projectId = projectMessageDTO.getProjectId();    // 项目 id
         String modelType = projectMessageDTO.getModelType();
+        String vehicleConfigId = projectMessageDTO.getVehicleConfigId();
         ProjectPO projectPO = projectUtil.getProjectByProjectId(projectId);
         log.info("项目 " + projectId + " 信息为:" + projectPO);
         String isChoiceGpu = projectPO.getIsChoiceGpu();
@@ -582,7 +583,7 @@ public class ProjectConsumer {
             }
 
             log.info("项目 " + projectId + " 准备创建 yaml:是否使用 gpu " + isChoiceGpu + ",当前节点名称为:" + currentNodeName + ",当前节点已创建 yaml 个数为:" + currentCount);
-            String tempYaml = projectManager.createTempYaml(projectId, modelType, algorithmDockerImage, currentNodeName, partition, offset, isChoiceGpu);
+            String tempYaml = projectManager.createTempYaml(projectId, vehicleConfigId, modelType, algorithmDockerImage, currentNodeName, partition, offset, isChoiceGpu);
             if (currentCount == 0) {
                 log.info("加入到启动列表 " + tempYaml);
                 yamlListToRun.add(tempYaml);

+ 58 - 38
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/manager/ProjectManager.java

@@ -4,6 +4,7 @@ import api.common.pojo.constants.DictConstants;
 import api.common.util.FileUtil;
 import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
 import com.css.simulation.resource.scheduler.configuration.minio.MinioConfiguration;
+import com.css.simulation.resource.scheduler.mapper.VehicleMapper;
 import com.css.simulation.resource.scheduler.util.ProjectUtil;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -18,19 +19,23 @@ import java.io.File;
 public class ProjectManager {
 
     @Value("${scheduler.linux-path.vtd-pod-template-yaml}")
-    String vtdPodTemplateYaml;
+    private String vtdPodTemplateYaml;
     @Value("${scheduler.linux-path.carsim-pod-template-yaml}")
-    String carsimPodTemplateYaml;
+    private String carsimPodTemplateYaml;
+    @Value("${scheduler.simulation-cloud-ip}")
+    private String simulationCloudIp;
     @Value("${scheduler.linux-path.pod-yaml-directory}")
-    String podYamlDirectory;
+    private String podYamlDirectory;
     @Value("${spring.kafka.bootstrap-servers}")
-    String kafkaIp;
+    private String kafkaIp;
     @Resource
-    KubernetesConfiguration kubernetesConfiguration;
+    private KubernetesConfiguration kubernetesConfiguration;
     @Resource
-    MinioConfiguration minioConfiguration;
+    private MinioConfiguration minioConfiguration;
     @Resource
-    ProjectUtil projectUtil;
+    private ProjectUtil projectUtil;
+    @Resource
+    private VehicleMapper vehicleMapper;
 
 
     /**
@@ -38,6 +43,7 @@ public class ProjectManager {
      */
     @SneakyThrows
     public String createTempYaml(String projectId,
+                                 String vehicleConfigId,
                                  String modelType,
                                  String algorithmDockerImage,
                                  String nodeName,
@@ -51,59 +57,73 @@ public class ProjectManager {
         if ("1".equals(modelType)) {
             String podString = FileUtil.read(new File(vtdPodTemplateYaml));
             String replace0 = podString.replace("vtd-container", "vtd-" + projectId);
-            String replace1 = replace0.replace("algorithm-container", "algorithm-" + projectId);
-            String replace2 = replace1.replace("algorithm-image", algorithmDockerImage);
+            String replace1 = replace0.replace("simulation-cloud-ip", simulationCloudIp);
+            String replace2 = replace1.replace("kafka-ip", kafkaIp);
             String replace3 = replace2.replace("kafka-topic", projectId);     // 消息主题名称为 projectId
-            String replace4 = replace3.replace("kafka-ip", kafkaIp);
-            String replace5 = replace4.replace("kafka-partition", "\"" + kafkaPartition + "\"");
-            String replace6 = replace5.replace("kafka-offset", "\"" + kafkaOffset + "\"");
-            String replace7 = replace6.replace("minio-ip", minioConfiguration.getEndpointWithoutHttp());
-            String replace8 = replace7.replace("minio-access-key", minioConfiguration.getAccessKey());
-            String replace9 = replace8.replace("minio-secret-key", minioConfiguration.getSecretKey());
-            String replace10 = replace9.replace("pod-name", podName); // pod 名称包括 projectId 和 随机字符串
-            String replace11 = replace10.replace("namespace-name", kubernetesConfiguration.getNamespace()); // pod 名称包括 projectId 和 随机字符串
-            String replace12 = replace11.replace("node-name", nodeName);     // 指定 pod 运行节点
+            String replace4 = replace3.replace("kafka-partition", "\"" + kafkaPartition + "\"");
+            String replace5 = replace4.replace("kafka-offset", "\"" + kafkaOffset + "\"");
+            String replace6 = replace5.replace("minio-ip", minioConfiguration.getEndpointWithoutHttp());
+            String replace7 = replace6.replace("minio-access-key", minioConfiguration.getAccessKey());
+            String replace8 = replace7.replace("minio-secret-key", minioConfiguration.getSecretKey());
+
+            String replace9 = replace8.replace("algorithm-container", "algorithm-" + projectId);
+            String replace10 = replace9.replace("algorithm-image", algorithmDockerImage);
+
+            String replace11 = replace10.replace("pod-name", podName); // pod 名称包括 projectId 和 随机字符串
+            String replace12 = replace11.replace("namespace-name", kubernetesConfiguration.getNamespace()); // pod 名称包括 projectId 和 随机字符串
+            String replace13 = replace12.replace("node-name", nodeName);     // 指定 pod 运行节点
 
             String finalYaml = null;
             if (DictConstants.USE_GPU.equals(isChoiceGpu)) {
                 log.info("项目 " + projectId + " 使用 gpu 生成视频");
-                String replace13 = replace12.replace("vtd-image", kubernetesConfiguration.getVtdImageUseGpu());
-                finalYaml = replace13.replace("vtd-command", kubernetesConfiguration.getVtdCommandUseGpu());
+                String replace14 = replace13.replace("vtd-image", kubernetesConfiguration.getImageVtdGpu());
+                finalYaml = replace14.replace("vtd-command", kubernetesConfiguration.getCommandVtdGpu());
             }
             if (DictConstants.NOT_USE_GPU.equals(isChoiceGpu)) {
                 log.info("项目 " + projectId + " 不使用 gpu 生成视频");
-                String replace13 = replace12.replace("vtd-image", kubernetesConfiguration.getVtdImageNotUseGpu());
-                finalYaml = replace13.replace("vtd-command", kubernetesConfiguration.getVtdCommandNotUseGpu());
+                String replace14 = replace13.replace("vtd-image", kubernetesConfiguration.getImageVtdNogpu());
+                finalYaml = replace14.replace("vtd-command", kubernetesConfiguration.getCommandVtdNogpu());
             }
             log.info("保存项目 " + projectId + " 的 yaml 文件:" + finalYaml);
             FileUtil.writeStringToLocalFile(finalYaml, podYamlDirectory + podYaml);
             return podYamlDirectory + podYaml;
         } else if ("2".equals(modelType)) {
             String podString = FileUtil.read(new File(carsimPodTemplateYaml));
-            String replace0 = podString.replace("carsim-container", "carsim-" + projectId);
-            String replace1 = replace0.replace("algorithm-container", "algorithm-" + projectId);
-            String replace2 = replace1.replace("algorithm-image", algorithmDockerImage);
+            String replace0 = podString.replace("vtd-container", "vtd-" + projectId);
+            String replace1 = replace0.replace("simulation-cloud-ip", simulationCloudIp);
+            String replace2 = replace1.replace("kafka-ip", kafkaIp);
             String replace3 = replace2.replace("kafka-topic", projectId);     // 消息主题名称为 projectId
-            String replace4 = replace3.replace("kafka-ip", kafkaIp);
-            String replace5 = replace4.replace("kafka-partition", "\"" + kafkaPartition + "\"");
-            String replace6 = replace5.replace("kafka-offset", "\"" + kafkaOffset + "\"");
-            String replace7 = replace6.replace("minio-ip", minioConfiguration.getEndpointWithoutHttp());
-            String replace8 = replace7.replace("minio-access-key", minioConfiguration.getAccessKey());
-            String replace9 = replace8.replace("minio-secret-key", minioConfiguration.getSecretKey());
-            String replace10 = replace9.replace("pod-name", podName); // pod 名称包括 projectId 和 随机字符串
-            String replace11 = replace10.replace("namespace-name", kubernetesConfiguration.getNamespace()); // pod 名称包括 projectId 和 随机字符串
-            String replace12 = replace11.replace("node-name", nodeName);     // 指定 pod 运行节点
+            String replace4 = replace3.replace("kafka-partition", "\"" + kafkaPartition + "\"");
+            String replace5 = replace4.replace("kafka-offset", "\"" + kafkaOffset + "\"");
+            String replace6 = replace5.replaceAll("minio-ip", minioConfiguration.getEndpointWithoutHttp());
+            String replace7 = replace6.replaceAll("minio-access-key", minioConfiguration.getAccessKey());
+            String replace8 = replace7.replaceAll("minio-secret-key", minioConfiguration.getSecretKey());
+
+            String replace9 = replace8.replace("algorithm-container", "algorithm-" + projectId);
+            String replace10 = replace9.replace("algorithm-image", algorithmDockerImage);
+
+            String replace11 = replace10.replace("carsim-container", "carsim-" + projectId);
+            String replace12 = replace11.replace("carsim-image", kubernetesConfiguration.getCarsimImage());
+            String replace13 = replace12.replace("carsim-command", kubernetesConfiguration.getCarsimCommand());
+            String replace14 = replace13.replace("minio-bucket", minioConfiguration.getBucketName());
+            String replace15 = replace14.replace("par-path", vehicleMapper.selectParPathByVehicleConfigId(vehicleConfigId));
+
+            String replace16 = replace15.replace("pod-name", podName); // pod 名称包括 projectId 和 随机字符串
+            String replace17 = replace16.replace("namespace-name", kubernetesConfiguration.getNamespace()); // pod 名称包括 projectId 和 随机字符串
+            String replace18 = replace17.replace("node-name", nodeName);     // 指定 pod 运行节点
 
             String finalYaml = null;
             if (DictConstants.USE_GPU.equals(isChoiceGpu)) {
                 log.info("项目 " + projectId + " 使用 gpu 生成视频");
-                String replace13 = replace12.replace("carsim-image", kubernetesConfiguration.getCarsimImage());
-                finalYaml = replace13.replace("carsim-command", kubernetesConfiguration.getCarsimCommand());
+                log.info("createTempYaml() k8s参数为:" + kubernetesConfiguration);
+                log.info("createTempYaml() yaml模板为:" + replace12);
+                String replace19 = replace18.replace("vtd-image", kubernetesConfiguration.getImageVtdGpu());
+                finalYaml = replace19.replace("vtd-command", kubernetesConfiguration.getCommandVtdCarsimNogpu());
             }
             if (DictConstants.NOT_USE_GPU.equals(isChoiceGpu)) {
                 log.info("项目 " + projectId + " 不使用 gpu 生成视频");
-                String replace13 = replace12.replace("carsim-image", kubernetesConfiguration.getCarsimImage());
-                finalYaml = replace13.replace("carsim-command", kubernetesConfiguration.getCarsimCommand());
+                String replace19 = replace18.replace("vtd-image", kubernetesConfiguration.getImageVtdNogpu());
+                finalYaml = replace19.replace("vtd-command", kubernetesConfiguration.getCommandVtdCarsimNogpu());
             }
             log.info("保存项目 " + projectId + " 的 yaml 文件:" + finalYaml);
             FileUtil.writeStringToLocalFile(finalYaml, podYamlDirectory + podYaml);

+ 6 - 30
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/mapper/VehicleMapper.java

@@ -1,10 +1,8 @@
 package com.css.simulation.resource.scheduler.mapper;
 
-import api.common.pojo.vo.model.VehicleVO;
 import com.css.simulation.resource.scheduler.pojo.po.VehiclePO;
 import org.apache.ibatis.annotations.*;
 import org.apache.ibatis.type.JdbcType;
-import org.springframework.stereotype.Component;
 
 @Mapper
 public interface VehicleMapper {
@@ -56,33 +54,11 @@ public interface VehicleMapper {
             ")")
     VehiclePO selectByVehicleConfigId(@Param("vehicleConfigId") String vehicleConfigId);
 
-    @Select("select id,\n" +
-            "       vehicle_code,\n" +
-            "       vehicle_name,\n" +
-            "       description,\n" +
-            "       vehicle_type,\n" +
-            "       model_label,\n" +
-            "       vehicle_front_view,\n" +
-            "       vehicle_top_view,\n" +
-            "       max_speed,\n" +
-            "       engine_power,\n" +
-            "       max_deceleration,\n" +
-            "       max_steering_angle,\n" +
-            "       mass,\n" +
-            "       front_surface_effective,\n" +
-            "       air_drag_coefficient,\n" +
-            "       rolling_resistance_coefficient,\n" +
-            "       wheel_diameter,\n" +
-            "       wheel_drive\n" +
-            "       overall_efficiency\n" +
-            "       front_distance\n" +
-            "       rear_distance\n" +
-            "       left_distance\n" +
-            "       right_distance\n" +
-            "       height_distance\n" +
-            "       wheelbase\n" +
-            "       share\n" +
+    @Select("select par_file_path\n" +
             "from model_vehicle\n" +
-            "where  id = #{vehicleId}\n")
-    VehicleVO getVehicleInfo(@Param("vehicleId") String vehicleId);
+            "where id = (select vehicle_id\n" +
+            "            from model_config\n" +
+            "            where id = #{vehicleConfigId}\n" +
+            ")")
+    String selectParPathByVehicleConfigId(@Param("vehicleConfigId") String vehicleConfigId);
 }

+ 16 - 16
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/ProjectUtil.java

@@ -4,10 +4,7 @@ import api.common.pojo.constants.DictConstants;
 import api.common.pojo.dto.ProjectMessageDTO;
 import api.common.util.*;
 import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
-import com.css.simulation.resource.scheduler.mapper.AutoSubProjectMapper;
-import com.css.simulation.resource.scheduler.mapper.ClusterMapper;
-import com.css.simulation.resource.scheduler.mapper.ManualProjectMapper;
-import com.css.simulation.resource.scheduler.mapper.UserMapper;
+import com.css.simulation.resource.scheduler.mapper.*;
 import com.css.simulation.resource.scheduler.pojo.po.ProjectPO;
 import com.css.simulation.resource.scheduler.pojo.po.UserPO;
 import com.css.simulation.resource.scheduler.pojo.to.KubernetesNodeTO;
@@ -35,31 +32,34 @@ import java.util.stream.Collectors;
 public class ProjectUtil {
 
     @Value("${scheduler.linux-path.pod-yaml-directory}")
-    String podYamlDirectory;
+    private String podYamlDirectory;
     @Value("${scheduler.host.hostname}")
-    String hostname;
+    private String hostname;
     @Value("${scheduler.host.username}")
-    String username;
+    private String username;
     @Value("${scheduler.host.password}")
-    String password;
+    private String password;
 
 
     @Resource
-    ManualProjectMapper manualProjectMapper;
+    private ManualProjectMapper manualProjectMapper;
     @Resource
-    AutoSubProjectMapper autoSubProjectMapper;
+    private AutoSubProjectMapper autoSubProjectMapper;
     @Resource
-    UserMapper userMapper;
+    private UserMapper userMapper;
     @Resource
-    ClusterMapper clusterMapper;
+    private ClusterMapper clusterMapper;
     @Resource
-    KafkaTemplate<String, String> kafkaTemplate;
+    private KafkaTemplate<String, String> kafkaTemplate;
     @Resource
-    KubernetesConfiguration kubernetesConfiguration;
+    private KubernetesConfiguration kubernetesConfiguration;
     @Resource
-    StringRedisTemplate stringRedisTemplate;
+    private StringRedisTemplate stringRedisTemplate;
     @Resource
-    ApiClient apiClient;
+    private ApiClient apiClient;
+
+
+
 
     @SneakyThrows
     public void deleteYamlByProjectId(String projectId) {

+ 157 - 154
simulation-resource-server/src/main/java/com/css/simulation/resource/model/service/VehicleService.java

@@ -11,6 +11,8 @@ import com.css.simulation.resource.feign.FileDownService;
 import com.css.simulation.resource.model.mapper.VehicleMapper;
 import com.css.simulation.resource.util.VehicleUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.tomcat.util.buf.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -22,6 +24,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+@Slf4j
 @Service
 public class VehicleService {
 
@@ -56,167 +59,167 @@ public class VehicleService {
         return vehicleInfo;
     }
 
+    @SneakyThrows
     public VehiclePO saveVehicle(VehicleVO vehicleVO) {
-        try {
-            VehiclePO vehiclePO = new VehiclePO();
-            ObjectUtil.voToPo(vehicleVO, vehiclePO);
-            //车辆模型字段解析
-            String[] vehicleType = vehicleVO.getVehicleType();
-            String vehicleTypeStr = StringUtils.join(Arrays.asList(vehicleType), ',');
-            vehiclePO.setVehicleType(vehicleTypeStr);
-            //常规字段赋值
-            PoUtil.initAddPo(vehiclePO);
-            vehiclePO.setShare(DictConstants.NO);//私有
-            //名称校验
-            List<VehicleVO> list = vehicleMapper.checkVehicleName(vehiclePO);
-            if (ObjectUtil.isNotNull(list)) {
-                vehiclePO.setId(null);
-                return vehiclePO;
+
+        VehiclePO vehiclePO = new VehiclePO();
+        ObjectUtil.voToPo(vehicleVO, vehiclePO);
+        //车辆模型字段解析
+        String[] vehicleType = vehicleVO.getVehicleType();
+        String vehicleTypeStr = StringUtils.join(Arrays.asList(vehicleType), ',');
+        vehiclePO.setVehicleType(vehicleTypeStr);
+        //常规字段赋值
+        PoUtil.initAddPo(vehiclePO);
+        vehiclePO.setShare(DictConstants.NO);//私有
+        //名称校验
+        List<VehicleVO> list = vehicleMapper.checkVehicleName(vehiclePO);
+        if (ObjectUtil.isNotNull(list)) {
+            vehiclePO.setId(null);
+            return vehiclePO;
+        }
+        String id = vehiclePO.getId();
+
+        String parameterType = vehicleVO.getParameterType();    //1 判断参数是 1 vtd 还是 2 carsim
+        if ("2".equals(parameterType)) {
+            VehicleUtil.listToJson(vehiclePO);
+            String par = FileUtil.read(parTemplate);
+            log.info("saveVehicle() par文件内容为:" + vehiclePO);
+            log.info("saveVehicle() 车辆模型对象为:" + vehiclePO);
+            String replace1 = par.replaceAll("wheelCenterToTop", vehiclePO.getWheelCenterToTop());
+            String replace2 = replace1.replaceAll("wheelCenterToGround", vehiclePO.getWheelCenterToGround());
+            String replace3 = replace2.replaceAll("centroidToFrontWheelCenter", vehiclePO.getCentroidToFrontWheelCenter());
+            String replace4 = replace3.replaceAll("wheelbase", vehiclePO.getWheelbase().toString());
+            String replace5 = replace4.replaceAll("sprungMass", vehiclePO.getSprungMass());
+            String replace6 = replace5.replaceAll("vehicleWidth", vehiclePO.getVehicleWidth());
+            String replace7 = replace6.replaceAll("rotationalInertiaX", vehiclePO.getRotationalInertiaX());
+            String replace8 = replace7.replaceAll("rotationalInertiaY", vehiclePO.getRotationalInertiaY());
+            String replace9 = replace8.replaceAll("effectiveRollingRadius", vehiclePO.getFrontLeftWheelEffectiveRollingRadius());
+            String replace10 = replace9.replaceAll("rollingResistanceCoefficient", vehiclePO.getFrontLeftWheelRollingResistanceCoefficient());
+            String replace11 = replace10.replaceAll("freeRadius", vehiclePO.getFrontLeftWheelFreeRadius());
+            String replace12 = replace11.replaceAll("relationCurvePositiveMomentAndSideslipAngle", convertArrayToTable(vehiclePO.getFrontLeftWheelRelationCurvePositiveMomentAndSideslipAngle()));
+            String replace13 = replace12.replaceAll("relationCurveLateralForceAndSideslipAngle", convertArrayToTable(vehiclePO.getFrontLeftWheelRelationCurveLateralForceAndSideslipAngle()));
+            String replace14 = replace13.replaceAll("relationCurveLongitudinalForceAndSideslipAngle", convertArrayToTable(vehiclePO.getFrontLeftWheelRelationCurveLongitudinalForceAndSideslipAngle()));
+            String replace15 = replace14.replaceAll("frontWheelSuspensionKinematicsCoefficient", vehiclePO.getFrontWheelSuspensionKinematicsCoefficient());
+            String replace16 = replace15.replaceAll("rearWheelSuspensionKinematicsCoefficient", vehiclePO.getRearWheelSuspensionKinematicsCoefficient());
+            String replace17 = replace16.replaceAll("rearWheelUnsprungMass", vehiclePO.getRearWheelUnsprungMass());
+            String replace18 = replace17.replaceAll("frontWheelTrackWidth", vehiclePO.getFrontWheelTrackWidth());
+            String replace19 = replace18.replaceAll("rearWheelTrackWidth", vehiclePO.getRearWheelTrackWidth());
+            String replace20 = replace19.replaceAll("windwardArea", vehiclePO.getWindwardArea());
+            String replace21 = replace20.replaceAll("airDensity", vehiclePO.getAirDensity());
+            String replace22 = replace21.replaceAll("engineCrankshaftMomentInertia", vehiclePO.getEngineCrankshaftMomentInertia());
+            String replace23 = replace22.replaceAll("idleSpeed", vehiclePO.getIdleSpeed());
+            String replace24 = replace23.replaceAll("relationCurveEngineTorqueSpeedAndThrottleOpening", convertArrayToTable(vehiclePO.getRelationCurveEngineTorqueSpeedAndThrottleOpening()));
+            String replace25 = replace24.replaceAll("momentInertiaInputShaft", vehiclePO.getMomentInertiaInputShaft());
+            String replace26 = replace25.replaceAll("momentInertiaOutputShaft", vehiclePO.getMomentInertiaOutputShaft());
+            String replace27 = replace26.replaceAll("finalDriveRatio", vehiclePO.getFinalDriveRatio());
+            String replace28 = replace27.replaceAll("transmissionEfficiency", vehiclePO.getTransmissionEfficiency());
+
+            List<String> gearRatio = vehiclePO.getGearRatio();
+            StringBuilder gearRatioString = new StringBuilder();
+            for (int i = 0; i < gearRatio.size(); i++) {
+                if (i == 0) {
+                    gearRatioString.append("R_GEAR_TR_REVERSE ").append(gearRatio.get(0)).append(System.lineSeparator());
+                    continue;
+                }
+                if (i == 1) {
+                    continue;
+                }
+                gearRatioString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
+                gearRatioString.append("R_GEAR_TR ").append(gearRatio.get(i)).append(System.lineSeparator());
+                gearRatioString.append("*R_GEAR_TR(").append(i - 1).append(") ").append(gearRatio.get(i)).append(System.lineSeparator());
             }
-            String id = vehiclePO.getId();
-
-            String parameterType = vehicleVO.getParameterType();    //1 判断参数是 1 vtd 还是 2 carsim
-            if ("2".equals(parameterType)) {
-                VehicleUtil.listToJson(vehiclePO);
-                String par = FileUtil.read(parTemplate);
-                String replace1 = par.replaceAll("wheelCenterToTop", vehiclePO.getWheelCenterToTop());
-                String replace2 = replace1.replaceAll("wheelCenterToGround", vehiclePO.getWheelCenterToGround());
-                String replace3 = replace2.replaceAll("centroidToFrontWheelCenter", vehiclePO.getCentroidToFrontWheelCenter());
-                String replace4 = replace3.replaceAll("wheelbase", vehiclePO.getWheelbase().toString());
-                String replace5 = replace4.replaceAll("sprungMass", vehiclePO.getSprungMass());
-                String replace6 = replace5.replaceAll("vehicleWidth", vehiclePO.getVehicleWidth());
-                String replace7 = replace6.replaceAll("rotationalInertiaX", vehiclePO.getRotationalInertiaX());
-                String replace8 = replace7.replaceAll("rotationalInertiaY", vehiclePO.getRotationalInertiaY());
-                String replace9 = replace8.replaceAll("effectiveRollingRadius", vehiclePO.getFrontLeftWheelEffectiveRollingRadius());
-                String replace10 = replace9.replaceAll("rollingResistanceCoefficient", vehiclePO.getFrontLeftWheelRollingResistanceCoefficient());
-                String replace11 = replace10.replaceAll("freeRadius", vehiclePO.getFrontLeftWheelFreeRadius());
-                String replace12 = replace11.replaceAll("relationCurvePositiveMomentAndSideslipAngle", convertArrayToTable(vehiclePO.getFrontLeftWheelRelationCurvePositiveMomentAndSideslipAngle()));
-                String replace13 = replace12.replaceAll("relationCurveLateralForceAndSideslipAngle", convertArrayToTable(vehiclePO.getFrontLeftWheelRelationCurveLateralForceAndSideslipAngle()));
-                String replace14 = replace13.replaceAll("relationCurveLongitudinalForceAndSideslipAngle", convertArrayToTable(vehiclePO.getFrontLeftWheelRelationCurveLongitudinalForceAndSideslipAngle()));
-                String replace15 = replace14.replaceAll("frontWheelSuspensionKinematicsCoefficient", vehiclePO.getFrontWheelSuspensionKinematicsCoefficient());
-                String replace16 = replace15.replaceAll("rearWheelSuspensionKinematicsCoefficient", vehiclePO.getRearWheelSuspensionKinematicsCoefficient());
-                String replace17 = replace16.replaceAll("rearWheelUnsprungMass", vehiclePO.getRearWheelUnsprungMass());
-                String replace18 = replace17.replaceAll("frontWheelTrackWidth", vehiclePO.getFrontWheelTrackWidth());
-                String replace19 = replace18.replaceAll("rearWheelTrackWidth", vehiclePO.getRearWheelTrackWidth());
-                String replace20 = replace19.replaceAll("windwardArea", vehiclePO.getWindwardArea());
-                String replace21 = replace20.replaceAll("airDensity", vehiclePO.getAirDensity());
-                String replace22 = replace21.replaceAll("engineCrankshaftMomentInertia", vehiclePO.getEngineCrankshaftMomentInertia());
-                String replace23 = replace22.replaceAll("idleSpeed", vehiclePO.getIdleSpeed());
-                String replace24 = replace23.replaceAll("relationCurveEngineTorqueSpeedAndThrottleOpening", convertArrayToTable(vehiclePO.getRelationCurveEngineTorqueSpeedAndThrottleOpening()));
-                String replace25 = replace24.replaceAll("momentInertiaInputShaft", vehiclePO.getMomentInertiaInputShaft());
-                String replace26 = replace25.replaceAll("momentInertiaOutputShaft", vehiclePO.getMomentInertiaOutputShaft());
-                String replace27 = replace26.replaceAll("finalDriveRatio", vehiclePO.getFinalDriveRatio());
-                String replace28 = replace27.replaceAll("transmissionEfficiency", vehiclePO.getTransmissionEfficiency());
-
-                List<String> gearRatio = vehiclePO.getGearRatio();
-                StringBuilder gearRatioString = new StringBuilder();
-                for (int i = 0; i < gearRatio.size(); i++) {
-                    if (i == 0) {
-                        gearRatioString.append("R_GEAR_TR_REVERSE ").append(gearRatio.get(0)).append(System.lineSeparator());
-                        continue;
-                    }
-                    if (i == 1) {
-                        continue;
-                    }
-                    gearRatioString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
-                    gearRatioString.append("R_GEAR_TR ").append(gearRatio.get(i)).append(System.lineSeparator());
-                    gearRatioString.append("*R_GEAR_TR(").append(i - 1).append(") ").append(gearRatio.get(i)).append(System.lineSeparator());
+            String replace29 = replace28.replaceAll("gearRatio", gearRatioString.toString());
+
+            List<String> inertia = vehiclePO.getInertia();
+            StringBuilder inertiaString = new StringBuilder();
+            for (int i = 0; i < inertia.size(); i++) {
+                if (i == 0) {
+                    inertiaString.append("ITR_REVERSE ").append(inertia.get(0)).append(System.lineSeparator());
+                    continue;
                 }
-                String replace29 = replace28.replaceAll("gearRatio", gearRatioString.toString());
-
-                List<String> inertia = vehiclePO.getInertia();
-                StringBuilder inertiaString = new StringBuilder();
-                for (int i = 0; i < inertia.size(); i++) {
-                    if (i == 0) {
-                        inertiaString.append("ITR_REVERSE ").append(inertia.get(0)).append(System.lineSeparator());
-                        continue;
-                    }
-                    if (i == 1) {
-                        inertiaString.append("ITR_NEUTRAL ").append(inertia.get(0)).append(System.lineSeparator());
-                        continue;
-                    }
-                    inertiaString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
-                    inertiaString.append("ITR ").append(inertia.get(i)).append(System.lineSeparator());
-                    inertiaString.append("*ITR(").append(i - 1).append(") ").append(inertia.get(i)).append(System.lineSeparator());
+                if (i == 1) {
+                    inertiaString.append("ITR_NEUTRAL ").append(inertia.get(0)).append(System.lineSeparator());
+                    continue;
                 }
-                String replace30 = replace29.replaceAll("inertia", inertiaString.toString());
-
-                List<String> driving = vehiclePO.getDriving();
-                StringBuilder drivingString = new StringBuilder();
-                for (int i = 0; i < driving.size(); i++) {
-                    if (i == 0) {
-                        drivingString.append("R_EFF_TR_F_REVERSE ").append(driving.get(0)).append(System.lineSeparator());
-                        continue;
-                    }
-                    if (i == 1) {
-                        continue;
-                    }
-                    drivingString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
-                    drivingString.append("R_EFF_TR_F ").append(driving.get(i)).append(System.lineSeparator());
-                    drivingString.append("*R_EFF_TR_F(").append(i - 1).append(") ").append(driving.get(i)).append(System.lineSeparator());
+                inertiaString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
+                inertiaString.append("ITR ").append(inertia.get(i)).append(System.lineSeparator());
+                inertiaString.append("*ITR(").append(i - 1).append(") ").append(inertia.get(i)).append(System.lineSeparator());
+            }
+            String replace30 = replace29.replaceAll("inertia", inertiaString.toString());
+
+            List<String> driving = vehiclePO.getDriving();
+            StringBuilder drivingString = new StringBuilder();
+            for (int i = 0; i < driving.size(); i++) {
+                if (i == 0) {
+                    drivingString.append("R_EFF_TR_F_REVERSE ").append(driving.get(0)).append(System.lineSeparator());
+                    continue;
                 }
-                String replace31 = replace30.replaceAll("driving", drivingString.toString());
-
-                List<String> coasting = vehiclePO.getDriving();
-                StringBuilder coastingString = new StringBuilder();
-                for (int i = 0; i < coasting.size(); i++) {
-                    if (i == 0) {
-                        coastingString.append("R_EFF_TR_R_REVERSE ").append(coasting.get(0)).append(System.lineSeparator());
-                        continue;
-                    }
-                    if (i == 1) {
-                        continue;
-                    }
-                    coastingString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
-                    coastingString.append("R_EFF_TR_R ").append(coasting.get(i)).append(System.lineSeparator());
-                    coastingString.append("*R_EFF_TR_R(").append(i - 1).append(") ").append(coasting.get(i)).append(System.lineSeparator());
+                if (i == 1) {
+                    continue;
                 }
-                String replace32 = replace31.replaceAll("coasting", coastingString.toString());
-                String replace33 = replace32.replaceAll("shiftTime", vehiclePO.getShiftTime());
-
-                String replace34 = replace33.replaceAll("shiftTimeUp12", convertArrayToTable(vehiclePO.getShiftTimeUp12()));
-                String replace35 = replace34.replaceAll("shiftTimeDown12", convertArrayToTable(vehiclePO.getShiftTimeDown12()));
-
-                String replace36 = replace35.replaceAll("shiftTimeUp23", convertArrayToTable(vehiclePO.getShiftTimeUp23()));
-                String replace37 = replace36.replaceAll("shiftTimeDown23", convertArrayToTable(vehiclePO.getShiftTimeDown23()));
-
-                String replace38 = replace37.replaceAll("shiftTimeUp34", convertArrayToTable(vehiclePO.getShiftTimeUp34()));
-                String replace39 = replace38.replaceAll("shiftTimeDown34", convertArrayToTable(vehiclePO.getShiftTimeDown34()));
-
-                String replace40 = replace39.replaceAll("shiftTimeUp45", convertArrayToTable(vehiclePO.getShiftTimeUp45()));
-                String replace41 = replace40.replaceAll("shiftTimeDown45", convertArrayToTable(vehiclePO.getShiftTimeDown45()));
-
-                String replace42 = replace41.replaceAll("shiftTimeUp56", convertArrayToTable(vehiclePO.getShiftTimeUp56()));
-                String replace43 = replace42.replaceAll("shiftTimeDown56", convertArrayToTable(vehiclePO.getShiftTimeDown56()));
-
-                // 制动力矩不再区分左右,前轮使用前左,后轮使用后左
-                String replace44 = replace43.replaceAll("frontLeftWheelBrakingTorque", vehiclePO.getFrontLeftWheelBrakingTorque());
-                String replace45 = replace44.replaceAll("frontRightWheelBrakingTorque", vehiclePO.getFrontLeftWheelBrakingTorque());
-                String replace46 = replace45.replaceAll("rearLeftWheelBrakingTorque", vehiclePO.getRearLeftWheelBrakingTorque());
-                String replace47 = replace46.replaceAll("rearRightWheelBrakingTorque", vehiclePO.getRearLeftWheelBrakingTorque());
-                String replace48 = replace47.replaceAll("steeringGearRatio", vehiclePO.getSteeringGearRatio());
-                String replace49 = replace48.replaceAll("relationCurveRightWheelAngleAndSteeringGearOutput", convertArrayToTable(vehiclePO.getRelationCurveRightWheelAngleAndSteeringGearOutput()));
-                String replace50 = replace49.replaceAll("relationCurveLeftWheelAngleAndSteeringGearOutput", convertArrayToTable(vehiclePO.getRelationCurveLeftWheelAngleAndSteeringGearOutput()));
-                String parFileName = StringUtil.getRandomEightBitUUID() + ".par";
-                String localParFilePath = parTemp + parFileName;
-                String minioParFilePath = "/model/" + parFileName;
-                FileUtil.writeStringToLocalFile(replace50, localParFilePath);
-                fileDownService.uploadLocalFile(localParFilePath, minioParFilePath);
-                vehiclePO.setParFilePath(minioParFilePath);
+                drivingString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
+                drivingString.append("R_EFF_TR_F ").append(driving.get(i)).append(System.lineSeparator());
+                drivingString.append("*R_EFF_TR_F(").append(i - 1).append(") ").append(driving.get(i)).append(System.lineSeparator());
             }
-            if (ObjectUtil.isNull(id)) {//新增
-                vehiclePO.setId(StringUtil.getRandomUUID());
-                vehiclePO.setVehicleCode(StringUtil.getRandomCode());
-                vehicleMapper.insert(vehiclePO);
-                LogUtil.insert();
-            } else {//修改
-                vehicleMapper.update(vehiclePO);
-                LogUtil.update();
+            String replace31 = replace30.replaceAll("driving", drivingString.toString());
+
+            List<String> coasting = vehiclePO.getDriving();
+            StringBuilder coastingString = new StringBuilder();
+            for (int i = 0; i < coasting.size(); i++) {
+                if (i == 0) {
+                    coastingString.append("R_EFF_TR_R_REVERSE ").append(coasting.get(0)).append(System.lineSeparator());
+                    continue;
+                }
+                if (i == 1) {
+                    continue;
+                }
+                coastingString.append("IGEAR ").append(i - 1).append(System.lineSeparator());
+                coastingString.append("R_EFF_TR_R ").append(coasting.get(i)).append(System.lineSeparator());
+                coastingString.append("*R_EFF_TR_R(").append(i - 1).append(") ").append(coasting.get(i)).append(System.lineSeparator());
             }
-            return vehiclePO;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
+            String replace32 = replace31.replaceAll("coasting", coastingString.toString());
+            String replace33 = replace32.replaceAll("shiftTime", vehiclePO.getShiftTime());
+
+            String replace34 = replace33.replaceAll("shiftTimeUp12", convertArrayToTable(vehiclePO.getShiftTimeUp12()));
+            String replace35 = replace34.replaceAll("shiftTimeDown12", convertArrayToTable(vehiclePO.getShiftTimeDown12()));
+
+            String replace36 = replace35.replaceAll("shiftTimeUp23", convertArrayToTable(vehiclePO.getShiftTimeUp23()));
+            String replace37 = replace36.replaceAll("shiftTimeDown23", convertArrayToTable(vehiclePO.getShiftTimeDown23()));
+
+            String replace38 = replace37.replaceAll("shiftTimeUp34", convertArrayToTable(vehiclePO.getShiftTimeUp34()));
+            String replace39 = replace38.replaceAll("shiftTimeDown34", convertArrayToTable(vehiclePO.getShiftTimeDown34()));
+
+            String replace40 = replace39.replaceAll("shiftTimeUp45", convertArrayToTable(vehiclePO.getShiftTimeUp45()));
+            String replace41 = replace40.replaceAll("shiftTimeDown45", convertArrayToTable(vehiclePO.getShiftTimeDown45()));
+
+            String replace42 = replace41.replaceAll("shiftTimeUp56", convertArrayToTable(vehiclePO.getShiftTimeUp56()));
+            String replace43 = replace42.replaceAll("shiftTimeDown56", convertArrayToTable(vehiclePO.getShiftTimeDown56()));
+
+            // 制动力矩不再区分左右,前轮使用前左,后轮使用后左
+            String replace44 = replace43.replaceAll("frontLeftWheelBrakingTorque", vehiclePO.getFrontLeftWheelBrakingTorque());
+            String replace45 = replace44.replaceAll("frontRightWheelBrakingTorque", vehiclePO.getFrontLeftWheelBrakingTorque());
+            String replace46 = replace45.replaceAll("rearLeftWheelBrakingTorque", vehiclePO.getRearLeftWheelBrakingTorque());
+            String replace47 = replace46.replaceAll("rearRightWheelBrakingTorque", vehiclePO.getRearLeftWheelBrakingTorque());
+            String replace48 = replace47.replaceAll("steeringGearRatio", vehiclePO.getSteeringGearRatio());
+            String replace49 = replace48.replaceAll("relationCurveRightWheelAngleAndSteeringGearOutput", convertArrayToTable(vehiclePO.getRelationCurveRightWheelAngleAndSteeringGearOutput()));
+            String replace50 = replace49.replaceAll("relationCurveLeftWheelAngleAndSteeringGearOutput", convertArrayToTable(vehiclePO.getRelationCurveLeftWheelAngleAndSteeringGearOutput()));
+            String parFileName = StringUtil.getRandomEightBitUUID() + ".par";
+            String localParFilePath = parTemp + parFileName;
+            String minioParFilePath = "/model/" + parFileName;
+            FileUtil.writeStringToLocalFile(replace50, localParFilePath);
+            fileDownService.uploadLocalFile(localParFilePath, minioParFilePath);
+            vehiclePO.setParFilePath(minioParFilePath);
         }
+        if (ObjectUtil.isNull(id)) {//新增
+            vehiclePO.setId(StringUtil.getRandomUUID());
+            vehiclePO.setVehicleCode(StringUtil.getRandomCode());
+            vehicleMapper.insert(vehiclePO);
+            LogUtil.insert();
+        } else {//修改
+            vehicleMapper.update(vehiclePO);
+            LogUtil.update();
+        }
+        return vehiclePO;
 
     }
 
@@ -240,7 +243,7 @@ public class VehicleService {
             vehiclePO.setModifyTime(currentTime);
             String sourceParFilePath = vehiclePO.getParFilePath();
             String targetParFilePath = "/model/" + StringUtil.getRandomEightBitUUID() + ".par";
-            fileDownService.copy(sourceParFilePath,targetParFilePath);
+            fileDownService.copy(sourceParFilePath, targetParFilePath);
             vehiclePO.setParFilePath(targetParFilePath);
             vehicleMapper.update(vehiclePO);
             LogUtil.update();
@@ -251,7 +254,7 @@ public class VehicleService {
             vehiclePO.setVehicleCode(StringUtil.getRandomCode());
             String sourceParFilePath = vehiclePO.getParFilePath();
             String targetParFilePath = "/model/" + StringUtil.getRandomEightBitUUID() + ".par";
-            fileDownService.copy(sourceParFilePath,targetParFilePath);
+            fileDownService.copy(sourceParFilePath, targetParFilePath);
             vehiclePO.setParFilePath(targetParFilePath);
             vehicleMapper.insert(vehiclePO);
         }

+ 0 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -4015,8 +4015,6 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
     @Override
     public ResponseBodyVO<String> createAutomaticSubProject(SimulationManualProjectParam param) {
-
-
         try {
             if (StringUtil.isEmpty(param.getId())) {
                 return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "id不能为空");