You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+SQL开发车辆登记与燃油费用计算API咨询

Spring Boot 车辆管理与燃油费用API实现指南

已完成基础上的剩余功能实现步骤

  • 完善费用实体关联映射
    费用实体类直接通过JPA注解绑定和车辆表的关联关系,不需要手动维护外键:在Expense类中添加Car类型属性,加上@ManyToOne注解标记多对一关系,用@JoinColumn(name = "car_id")指定关联的外键字段,同时补充费用表对应字段:汽油价格(雷亚尔)、城市行驶里程、高速行驶里程、计算得出的总燃油花费。
  • 实现费用自动计算逻辑
    计算逻辑统一写在Service层,新增费用记录时执行以下流程:
    1. 根据传入的车辆ID调用Car的Repository查询对应车辆记录,不存在则直接抛出参数异常
    2. 取车辆记录中存储的城市平均油耗、高速平均油耗字段,套用公式计算总花费:
      totalCost = ((城市行驶里程 / 城市平均油耗) + (高速行驶里程 / 高速平均油耗)) * 汽油价格
    3. 组装费用实体对象,绑定关联的车辆实例,赋值所有参数与计算得到的totalCost,调用费用Repository的save方法存入数据库
      核心代码参考:
    public Expense addVehicleExpense(Long carId, BigDecimal gasPrice, BigDecimal cityKm, BigDecimal highwayKm) {
        Car targetCar = carRepository.findById(carId)
                .orElseThrow(() -> new IllegalArgumentException("对应车辆ID不存在"));
        BigDecimal cost = cityKm.divide(targetCar.getCityAvgConsumption(), 2, RoundingMode.HALF_UP)
                .add(highwayKm.divide(targetCar.getHighwayAvgConsumption(), 2, RoundingMode.HALF_UP))
                .multiply(gasPrice);
        Expense newExpense = new Expense();
        newExpense.setCar(targetCar);
        newExpense.setGasPrice(gasPrice);
        newExpense.setCityKm(cityKm);
        newExpense.setHighwayKm(highwayKm);
        newExpense.setTotalCost(cost);
        return expenseRepository.save(newExpense);
    }
    
  • 开发对应接口
    1. 费用登记接口:POST请求路径可设为/api/expenses,请求参数接收车辆ID、汽油价格、城市行驶里程、高速行驶里程,调用上述Service方法完成计算存库,返回生成的费用记录
    2. 费用排序查询接口:GET请求路径可设为/api/expenses/ranking,接收汽油价格、城市总里程、高速总里程三个公共参数,在Repository层写关联查询,直接在SQL中套用公式计算每台车的对应花费,按花费升序/降序排序后返回车辆列表;如果需要查询单台车的历史费用记录,新增按车辆ID查询的GET接口,直接筛选该车辆关联的所有费用记录返回即可。

开发注意事项

  • 数值类字段(油耗、里程、价格、总花费)统一用BigDecimal类型存储,避免浮点数计算精度丢失,除法计算要指定保留小数位数和舍入规则,提前做油耗非零校验防止除零报错
  • 车辆实体的制造日期字段要加@DateTimeFormat(pattern = "dd/MM/yyyy")和@JsonFormat(pattern = "dd/MM/yyyy")注解,匹配入参的12/12/2021这类日期格式,避免反序列化失败
  • 实体字段命名如果和入参字段不一致,用@JsonProperty注解做映射,比如葡语命名的ConsumoMedioCidade字段要对应绑定到城市油耗属性上,避免参数接收失败

内容的提问来源于stack exchange,提问作者Luiz Mafra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:06:12