ソースを参照

Merge remote-tracking branch 'origin/master'

martin 3 年 前
コミット
c5144958c6

+ 11 - 7
api-common/src/main/java/api/common/pojo/constants/DictConstants.java

@@ -11,7 +11,18 @@ public class DictConstants {
     public static final String LEVEL = "level";//级别
     public static final String VEHICLE_TYPE = "vehicleType";//车辆类型
     public static final String DRIVE_TYPE = "driveType";//驱动方式
+    public static final String REGULATION_TYPE = "regulationType"; // 法规类型
+    public static final String SELF_DRIVING = "selfDriving"; // 自车驾驶行为
+    public static final String TARGET_DRIVING = "targetDriving"; // 目标驾驶行为
+    public static final String SELF_REACTION = "selfReaction"; // 自车反应行为
+    public static final String CONFLICT_BEHAVIOR = "conflictBehavior"; // 冲突行为
+    public static final String CONFLICT_TYPE = "conflictType"; // 冲突类型
+
+
 
+    //常用值
+    public static final String YES = "1";//是
+    public static final String NO = "0";//否
 
     public static final String SCENE_NATURAL = "1"; // 自然驾驶
     public static final String SCENE_STANDARD = "2";    // 标准法规
@@ -33,12 +44,5 @@ public class DictConstants {
     public static final String TASK_TERMINATING = "Terminating"; // 任务执行状态,终止中
     public static final String TASK_TERMINATED = "Terminated"; // 任务执行状态,已终止
 
-    public static final String REGULATION_TYPE = "regulationType"; // 法规类型
-    public static final String SELF_DRIVING = "selfDriving"; // 自车驾驶行为
-    public static final String TARGET_DRIVING = "targetDriving"; // 目标驾驶行为
-    public static final String SELF_REACTION = "selfReaction"; // 自车反应行为
-    public static final String CONFLICT_BEHAVIOR = "conflictBehavior"; // 冲突行为
-    public static final String CONFLICT_TYPE = "conflictType"; // 冲突类型
-
 
 }

+ 1 - 0
api-common/src/main/java/api/common/pojo/param/demo/TestPageParam.java

@@ -7,5 +7,6 @@ import lombok.Data;
 public class TestPageParam extends PageVO {
 
     private String name;
+    //创建人id
     private String createUserId;
 }

+ 17 - 0
api-common/src/main/java/api/common/pojo/param/model/VehicleParam.java

@@ -0,0 +1,17 @@
+package api.common.pojo.param.model;
+
+import lombok.Data;
+
+@Data
+public class VehicleParam {
+
+    //主键id
+    private String id;
+    //车辆名称
+    private String vehicleName;
+    //创建人id
+    private String createUserId;
+    //是否分享
+    private String share;
+
+}

+ 59 - 0
api-common/src/main/java/api/common/pojo/po/model/VehiclePO.java

@@ -0,0 +1,59 @@
+package api.common.pojo.po.model;
+
+import api.common.pojo.common.CommonPO;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class VehiclePO extends CommonPO {
+
+    //主键id
+    private String id;
+    //车辆id
+    private String vehicleId;
+    //车辆名称
+    private String vehicleName;
+    //车辆描述
+    private String description;
+    //车辆类型(字典代码)
+    private String vehicleType;
+    //车辆模型
+    private String vehicleModel;
+    //最大速度(千米/小时)
+    private BigDecimal maxSpeed;
+    //发动机功率(千瓦)
+    private BigDecimal enginePower;
+    //最大减速度(米/秒2)
+    private BigDecimal maxDeceleration;
+    //最大转角(度)
+    private BigDecimal maxSteeringAngle;
+    //质量(千克)
+    private BigDecimal mass;
+    //前表面有效面积(平方米)
+    private BigDecimal frontSurfaceEffective;
+    //空气阻力系数
+    private BigDecimal airDragCoefficient;
+    //滚动阻力系数
+    private BigDecimal rollingResistanceCoefficient;
+    //车轮直径(米)
+    private BigDecimal wheelDiameter;
+    //驱动方式
+    private BigDecimal wheelDrive;
+    //总效率
+    private BigDecimal overallEfficiency;
+    //车前距(米)
+    private BigDecimal frontDistance;
+    //车后距(米)
+    private BigDecimal rearDistance;
+    //车左距(米)
+    private BigDecimal leftDistance;
+    //车右距(米)
+    private BigDecimal rightDistance;
+    //车高(米)
+    private BigDecimal heightDistance;
+    //轴距(米)
+    private BigDecimal wheelbase;
+    //是否分享
+    private String share;
+}

+ 58 - 0
api-common/src/main/java/api/common/pojo/vo/model/VehicleVO.java

@@ -0,0 +1,58 @@
+package api.common.pojo.vo.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class VehicleVO {
+
+    //主键id
+    private String id;
+    //车辆id
+    private String vehicleId;
+    //车辆名称
+    private String vehicleName;
+    //车辆描述
+    private String description;
+    //车辆类型(字典代码)
+    private String vehicleType;
+    //车辆模型
+    private String vehicleModel;
+    //最大速度(千米/小时)
+    private BigDecimal maxSpeed;
+    //发动机功率(千瓦)
+    private BigDecimal enginePower;
+    //最大减速度(米/秒2)
+    private BigDecimal maxDeceleration;
+    //最大转角(度)
+    private BigDecimal maxSteeringAngle;
+    //质量(千克)
+    private BigDecimal mass;
+    //前表面有效面积(平方米)
+    private BigDecimal frontSurfaceEffective;
+    //空气阻力系数
+    private BigDecimal airDragCoefficient;
+    //滚动阻力系数
+    private BigDecimal rollingResistanceCoefficient;
+    //车轮直径(米)
+    private BigDecimal wheelDiameter;
+    //驱动方式
+    private BigDecimal wheelDrive;
+    //总效率
+    private BigDecimal overallEfficiency;
+    //车前距(米)
+    private BigDecimal frontDistance;
+    //车后距(米)
+    private BigDecimal rearDistance;
+    //车左距(米)
+    private BigDecimal leftDistance;
+    //车右距(米)
+    private BigDecimal rightDistance;
+    //车高(米)
+    private BigDecimal heightDistance;
+    //轴距(米)
+    private BigDecimal wheelbase;
+    //是否分享
+    private String share;
+}

+ 12 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/common/exception/GlobalExceptionHandler.java

@@ -3,6 +3,7 @@ package com.css.simulation.resource.common.exception;
 import api.common.pojo.common.ResponseBodyVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Scope;
+import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -24,6 +25,16 @@ public class GlobalExceptionHandler {
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage());
     }
 
+    /**
+     * 请求体缺失异常统一处理
+     */
+    @ExceptionHandler(HttpMessageNotReadableException.class)
+    @ResponseBody
+    public ResponseBodyVO<Object> handleHttpMessageNotReadableException(Exception e) {
+        log.error(e.getMessage(), e);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "Required request body is missing!");
+    }
+
     /**
      * 服务器错误异常统一处理
      */
@@ -33,4 +44,5 @@ public class GlobalExceptionHandler {
         log.error(e.getMessage(), e);
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "服务器错误!");
     }
+
 }

+ 6 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/common/utils/AuthUtil.java

@@ -4,8 +4,14 @@ import com.css.simulation.resource.common.oauth.MyUserDetails;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 
+/**
+ * 认证信息工具类
+ */
 public class AuthUtil {
 
+    /**
+     * 获取当前登录人id
+     */
     public static String getCurrentUserId(){
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         MyUserDetails userDetails = (MyUserDetails)authentication.getPrincipal();

+ 1 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/demo/ctrl/TestCtrl.java

@@ -18,7 +18,7 @@ public class TestCtrl {
     @Autowired
     TestService testService;
 
-    @RequestMapping("getTestPageList")
+    @RequestMapping("/getTestPageList")
     @ResponseBody
     public ResponseBodyVO<PageInfo<TestVO>> getTestPageList(@RequestBody TestPageParam pageParam){
         ResponseBodyVO<PageInfo<TestVO>> response = new ResponseBodyVO<PageInfo<TestVO>>(ResponseBodyVO.Response.SUCCESS);

+ 76 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/model/ctrl/VehicleCtrl.java

@@ -0,0 +1,76 @@
+package com.css.simulation.resource.model.ctrl;
+
+
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.pojo.param.model.VehicleParam;
+import api.common.pojo.po.model.VehiclePO;
+import api.common.pojo.vo.model.VehicleVO;
+import api.common.util.ObjectUtil;
+import com.css.simulation.resource.model.service.VehicleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+@Controller
+@RequestMapping("/vehicle")
+public class VehicleCtrl {
+
+    @Autowired
+    VehicleService vehicleService;
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping("/getVehicleList")
+    @ResponseBody
+    public ResponseBodyVO<List<VehicleVO>> getVehicleList(@RequestBody VehicleParam pageParam){
+        ResponseBodyVO<List<VehicleVO>> response = new ResponseBodyVO<List<VehicleVO>>(ResponseBodyVO.Response.SUCCESS);
+        response.setInfo(vehicleService.getVehicleList(pageParam));
+        return response;
+    }
+
+    /**
+     * 根据id获取详情
+     */
+    @RequestMapping("/getVehicleInfo")
+    @ResponseBody
+    public ResponseBodyVO<VehicleVO> getVehicleInfo(@RequestBody VehicleParam pageParam){
+        ResponseBodyVO<VehicleVO> response = new ResponseBodyVO<VehicleVO>(ResponseBodyVO.Response.SUCCESS);
+        response.setInfo(vehicleService.getVehicleInfo(pageParam));
+        return response;
+    }
+
+    @RequestMapping("/saveVehicle")
+    @ResponseBody
+    public ResponseBodyVO<VehiclePO> saveVehicle(@RequestBody VehiclePO vehiclePO){
+        if(ObjectUtil.isNull(vehiclePO)){
+            return new ResponseBodyVO(false, 500, "参数必传!",null);
+        }
+        ResponseBodyVO<VehiclePO> response = new ResponseBodyVO<VehiclePO>(ResponseBodyVO.Response.SUCCESS);
+        VehiclePO po = vehicleService.saveVehicle(vehiclePO);
+        if(ObjectUtil.isNull(po.getId())){
+            return new ResponseBodyVO(false, 500, "车辆名称重复!",null);
+        }
+        response.setInfo(po);
+        return response;
+    }
+
+    /**
+     * 分享
+     */
+    @RequestMapping("/shareVehicle")
+    @ResponseBody
+    public ResponseBodyVO<VehiclePO> shareVehicle(@RequestBody VehiclePO vehiclePO){
+        if(ObjectUtil.isNull(vehiclePO)){
+            return new ResponseBodyVO(false, 500, "参数必传!",null);
+        }
+        ResponseBodyVO<VehiclePO> response = new ResponseBodyVO<VehiclePO>(ResponseBodyVO.Response.SUCCESS);
+        response.setInfo(vehicleService.shareVehicle(vehiclePO));
+        return response;
+    }
+
+}

+ 25 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/model/mapper/VehicleMapper.java

@@ -0,0 +1,25 @@
+package com.css.simulation.resource.model.mapper;
+
+import api.common.pojo.param.model.VehicleParam;
+import api.common.pojo.po.model.VehiclePO;
+import api.common.pojo.vo.model.VehicleVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface VehicleMapper {
+
+    List<VehicleVO> getVehicleList(VehicleParam pageParam);
+
+    VehicleVO getVehicleInfo(VehicleParam pageParam);
+
+    List<VehicleVO> checkVehicleName(VehiclePO vehiclePO);
+
+    void insert(VehiclePO vehiclePO);
+
+    void update(VehiclePO vehiclePO);
+
+}

+ 76 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/model/service/VehicleService.java

@@ -0,0 +1,76 @@
+package com.css.simulation.resource.model.service;
+
+import api.common.pojo.constants.DictConstants;
+import api.common.pojo.param.model.VehicleParam;
+import api.common.pojo.po.model.VehiclePO;
+import api.common.pojo.vo.model.VehicleVO;
+import api.common.util.ObjectUtil;
+import api.common.util.StringUtil;
+import api.common.util.TimeUtil;
+import com.css.simulation.resource.common.utils.AuthUtil;
+import com.css.simulation.resource.model.mapper.VehicleMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+@Service
+public class VehicleService {
+
+    @Autowired
+    VehicleMapper vehicleMapper;
+
+    public List<VehicleVO> getVehicleList(@RequestBody VehicleParam pageParam) {
+        pageParam.setCreateUserId(AuthUtil.getCurrentUserId());
+        List<VehicleVO> list = vehicleMapper.getVehicleList(pageParam);
+        return list;
+    }
+
+    public VehicleVO getVehicleInfo(VehicleParam pageParam) {
+        return vehicleMapper.getVehicleInfo(pageParam);
+    }
+
+    public VehiclePO saveVehicle(VehiclePO vehiclePO) {
+        //常规字段赋值
+        String currentUserId = AuthUtil.getCurrentUserId();
+        Timestamp currentTime = TimeUtil.getNowForMysql();
+        vehiclePO.setCreateUserId(currentUserId);
+        vehiclePO.setCreateTime(currentTime);
+        vehiclePO.setModifyUserId(currentUserId);
+        vehiclePO.setModifyTime(currentTime);
+        vehiclePO.setIsDeleted(DictConstants.NO);
+        //名称校验
+        List<VehicleVO> list = vehicleMapper.checkVehicleName(vehiclePO);
+        if(ObjectUtil.isNotNull(list)){
+            vehiclePO.setId(null);
+            return vehiclePO;
+        }
+        String id = vehiclePO.getId();
+        if(ObjectUtil.isNull(id)){//新增
+            vehiclePO.setId(StringUtil.getRandomUUID());
+            vehiclePO.setShare(DictConstants.NO);//私有
+            vehicleMapper.insert(vehiclePO);
+        }else{//修改
+            vehicleMapper.update(vehiclePO);
+        }
+        return vehiclePO;
+    }
+
+    public VehiclePO shareVehicle(VehiclePO vehiclePO) {
+        //常规字段赋值
+        String currentUserId = AuthUtil.getCurrentUserId();
+        Timestamp currentTime = TimeUtil.getNowForMysql();
+        vehiclePO.setCreateUserId(currentUserId);
+        vehiclePO.setCreateTime(currentTime);
+        vehiclePO.setModifyUserId(currentUserId);
+        vehiclePO.setModifyTime(currentTime);
+        vehiclePO.setIsDeleted(DictConstants.NO);
+
+        vehiclePO.setShare(DictConstants.YES);//转公有
+        vehiclePO.setId(StringUtil.getRandomUUID());
+        vehicleMapper.insert(vehiclePO);
+        return vehiclePO;
+    }
+}

+ 183 - 0
simulation-resource-server/src/main/resources/mapper/vehicle/VehicleMapper.xml

@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.css.simulation.resource.model.mapper.VehicleMapper" >
+
+    <resultMap id="VehicleVOMap" type="api.common.pojo.vo.model.VehicleVO">
+        <id column="ID" property="id" jdbcType="VARCHAR" />
+        <result column="vehicle_id" property="vehicleId" jdbcType="VARCHAR" />
+        <result column="vehicle_name" property="vehicleName" jdbcType="VARCHAR" />
+        <result column="description" property="description" jdbcType="VARCHAR" />
+        <result column="vehicle_type" property="vehicleType" jdbcType="VARCHAR" />
+        <result column="vehicle_model" property="vehicleModel" jdbcType="VARCHAR" />
+        <result column="max_speed" property="maxSpeed" jdbcType="DECIMAL" />
+        <result column="engine_power" property="enginePower" jdbcType="DECIMAL" />
+        <result column="max_deceleration" property="maxDeceleration" jdbcType="DECIMAL" />
+        <result column="max_steering_angle" property="maxSteeringAngle" jdbcType="DECIMAL" />
+        <result column="mass" property="mass" jdbcType="DECIMAL" />
+        <result column="front_surface_effective" property="frontSurfaceEffective" jdbcType="DECIMAL" />
+        <result column="air_drag_coefficient" property="airDragCoefficient" jdbcType="DECIMAL" />
+        <result column="rolling_resistance_coefficient" property="rollingResistanceCoefficient" jdbcType="DECIMAL" />
+        <result column="wheel_diameter" property="wheelDiameter" jdbcType="DECIMAL" />
+        <result column="wheel_drive" property="wheelDrive" jdbcType="DECIMAL" />
+        <result column="overall_efficiency" property="overallEfficiency" jdbcType="DECIMAL" />
+        <result column="front_distance" property="frontDistance" jdbcType="DECIMAL" />
+        <result column="rear_distance" property="rearDistance" jdbcType="DECIMAL" />
+        <result column="left_distance" property="leftDistance" jdbcType="DECIMAL" />
+        <result column="right_distance" property="rightDistance" jdbcType="DECIMAL" />
+        <result column="height_distance" property="heightDistance" jdbcType="DECIMAL" />
+        <result column="wheelbase" property="wheelbase" jdbcType="DECIMAL" />
+        <result column="share" property="share" jdbcType="VARCHAR" />
+    </resultMap>
+
+    <select id="getVehicleList" parameterType="api.common.pojo.param.model.VehicleParam" resultMap="VehicleVOMap">
+        select
+          id,
+          vehicle_name,
+          share
+        from model_vehicle v
+        where v.is_deleted = '0'
+          and v.create_user_id = #{createUserId,jdbcType=VARCHAR}
+            <if test="vehicleName != null and vehicleName != ''">
+                and v.vehicle_name like CONCAT('%',#{vehicleName,jdbcType=VARCHAR},'%')
+            </if>
+            <if test="share != null and share != ''">
+                and v.share = #{share,jdbcType=VARCHAR}
+            </if>
+        order by v.create_time desc
+    </select>
+
+    <select id="getVehicleInfo" parameterType="api.common.pojo.param.model.VehicleParam" resultMap="VehicleVOMap">
+        select
+            id,
+            vehicle_id,
+            vehicle_name,
+            description,
+            vehicle_type,
+            vehicle_model,
+            max_speed,
+            engine_power,
+            max_deceleration,
+            max_steering_angle,
+            mass,
+            front_surface_effective,
+            air_drag_coefficient,
+            rolling_resistance_coefficient,
+            wheel_diameter,
+            wheel_drive,
+            overall_efficiency,
+            front_distance,
+            rear_distance,
+            left_distance,
+            right_distance,
+            height_distance,
+            wheelbase,
+            share
+        from model_vehicle v
+        where v.id = #{id,jdbcType=VARCHAR} limit 1
+    </select>
+
+    <select id="checkVehicleName" parameterType="api.common.pojo.po.model.VehiclePO" resultMap="VehicleVOMap">
+        select
+            id
+        from model_vehicle v
+        where v.is_deleted = '0' and v.share = '0'
+          and v.vehicle_name = #{vehicleName,jdbcType=VARCHAR}
+          and v.create_user_id = #{createUserId,jdbcType=VARCHAR}
+          and v.id &lt;&gt; #{id,jdbcType=VARCHAR}
+    </select>
+
+    <insert id="insert" parameterType="api.common.pojo.po.model.VehiclePO">
+        insert into model_vehicle(
+            id,
+            vehicle_id,
+            vehicle_name,
+            description,
+            vehicle_type,
+            vehicle_model,
+            max_speed,
+            engine_power,
+            max_deceleration,
+            max_steering_angle,
+            mass,
+            front_surface_effective,
+            air_drag_coefficient,
+            rolling_resistance_coefficient,
+            wheel_diameter,
+            wheel_drive,
+            overall_efficiency,
+            front_distance,
+            rear_distance,
+            left_distance,
+            right_distance,
+            height_distance,
+            wheelbase,
+            share,
+            create_time,
+            modify_time,
+            create_user_id,
+            modify_user_id,
+            is_deleted
+        )
+        values(
+            #{id,jdbcType=VARCHAR},
+            #{vehicleId,jdbcType=VARCHAR},
+            #{vehicleName,jdbcType=VARCHAR},
+            #{description,jdbcType=VARCHAR},
+            #{vehicleType,jdbcType=VARCHAR},
+            #{vehicleModel,jdbcType=VARCHAR},
+            #{maxSpeed,jdbcType=DECIMAL},
+            #{enginePower,jdbcType=DECIMAL},
+            #{maxDeceleration,jdbcType=DECIMAL},
+            #{maxSteeringAngle,jdbcType=DECIMAL},
+            #{mass,jdbcType=DECIMAL},
+            #{frontSurfaceEffective,jdbcType=DECIMAL},
+            #{airDragCoefficient,jdbcType=DECIMAL},
+            #{rollingResistanceCoefficient,jdbcType=DECIMAL},
+            #{wheelDiameter,jdbcType=DECIMAL},
+            #{wheelDrive,jdbcType=DECIMAL},
+            #{overallEfficiency,jdbcType=DECIMAL},
+            #{frontDistance,jdbcType=DECIMAL},
+            #{rearDistance,jdbcType=DECIMAL},
+            #{leftDistance,jdbcType=DECIMAL},
+            #{rightDistance,jdbcType=DECIMAL},
+            #{heightDistance,jdbcType=DECIMAL},
+            #{wheelbase,jdbcType=DECIMAL},
+            #{share,jdbcType=VARCHAR},
+            #{createTime,jdbcType=TIMESTAMP},
+            #{modifyTime,jdbcType=TIMESTAMP},
+            #{createUserId,jdbcType=VARCHAR},
+            #{modifyUserId,jdbcType=VARCHAR},
+            #{isDeleted,jdbcType=VARCHAR}
+        )
+    </insert>
+
+    <update id="update" parameterType="api.common.pojo.po.model.VehiclePO">
+        update model_vehicle set
+        vehicle_id = #{vehicleId,jdbcType=VARCHAR},
+        vehicle_name = #{vehicleName,jdbcType=VARCHAR},
+        description = #{description,jdbcType=VARCHAR},
+        vehicle_type = #{vehicleType,jdbcType=VARCHAR},
+        vehicle_model = #{vehicleModel,jdbcType=VARCHAR},
+        max_speed = #{maxSpeed,jdbcType=DECIMAL},
+        engine_power = #{enginePower,jdbcType=DECIMAL},
+        max_deceleration = #{maxDeceleration,jdbcType=DECIMAL},
+        max_steering_angle = #{maxSteeringAngle,jdbcType=DECIMAL},
+        mass = #{mass,jdbcType=DECIMAL},
+        front_surface_effective = #{frontSurfaceEffective,jdbcType=DECIMAL},
+        air_drag_coefficient = #{airDragCoefficient,jdbcType=DECIMAL},
+        rolling_resistance_coefficient = #{rollingResistanceCoefficient,jdbcType=DECIMAL},
+        wheel_diameter = #{wheelDiameter,jdbcType=DECIMAL},
+        wheel_drive = #{wheelDrive,jdbcType=DECIMAL},
+        overall_efficiency = #{overallEfficiency,jdbcType=DECIMAL},
+        front_distance = #{frontDistance,jdbcType=DECIMAL},
+        rear_distance = #{rearDistance,jdbcType=DECIMAL},
+        left_distance = #{leftDistance,jdbcType=DECIMAL},
+        right_distance = #{rightDistance,jdbcType=DECIMAL},
+        height_distance = #{heightDistance,jdbcType=DECIMAL},
+        wheelbase = #{wheelbase,jdbcType=DECIMAL},
+
+        modify_time = #{modifyTime,jdbcType=TIMESTAMP},
+        modify_user_id = #{modifyUserId,jdbcType=VARCHAR},
+        is_deleted = #{isDeleted,jdbcType=VARCHAR}
+    </update>
+</mapper>