wujianwei
2025-10-09 a8b6add14f4a93e14c70ac23bab00a4b918d4dfd
新增每日车辆数据前后端
8个文件已添加
1375 ■■■■■ 已修改文件
service/src/main/java/com/ruoyi/cwgl/controller/VehicleDailyDataController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/domain/VehicleDailyData.java 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/mapper/VehicleDailyDataMapper.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/service/IVehicleDailyDataService.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/service/impl/VehicleDailyDataServiceImpl.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/resources/mapper/cwgl/VehicleDailyDataMapper.xml 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/api/cwgl/data.ts 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/cwgl/data/index.vue 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/src/main/java/com/ruoyi/cwgl/controller/VehicleDailyDataController.java
New file
@@ -0,0 +1,108 @@
package com.ruoyi.cwgl.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.utils.file.DownloadExportUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.cwgl.domain.VehicleDailyData;
import com.ruoyi.cwgl.service.IVehicleDailyDataService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
 * 车辆每日数据Controller
 *
 * @author ruoyi
 * @date 2025-10-09
 */
@RestController
@RequestMapping("/cwgl/data")
public class VehicleDailyDataController extends BaseController
{
    @Autowired
    private IVehicleDailyDataService vehicleDailyDataService;
    /**
     * 查询车辆每日数据列表
     */
    @PreAuthorize("@ss.hasPermi('cwgl:data:list')")
    @GetMapping("/list")
    public TableDataInfo list(VehicleDailyData vehicleDailyData)
    {
        startPage();
        List<VehicleDailyData> list = vehicleDailyDataService.selectVehicleDailyDataList(vehicleDailyData);
        return getDataTable(list);
    }
    /**
     * 导出车辆每日数据列表
     * @param vehicleDailyData 查询条件对象
     */
    @PreAuthorize("@ss.hasPermi('cwgl:data:export')")
    @Log(title = "车辆每日数据", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(VehicleDailyData vehicleDailyData,String exportKey)
    {
        vehicleDailyDataService.export(vehicleDailyData,exportKey);
        return AjaxResult.success("导出请求成功,请稍后点击下载...!");
    }
    /**
     * 获取车辆每日数据详细信息
     */
    @PreAuthorize("@ss.hasPermi('cwgl:data:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Integer id)
    {
        return AjaxResult.success(vehicleDailyDataService.selectVehicleDailyDataById(id));
    }
    /**
     * 新增车辆每日数据
     */
    @PreAuthorize("@ss.hasPermi('cwgl:data:add')")
    @Log(title = "车辆每日数据", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody VehicleDailyData vehicleDailyData)
    {
        return toAjax(vehicleDailyDataService.insertVehicleDailyData(vehicleDailyData));
    }
    /**
     * 修改车辆每日数据
     */
    @PreAuthorize("@ss.hasPermi('cwgl:data:edit')")
    @Log(title = "车辆每日数据", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody VehicleDailyData vehicleDailyData)
    {
        return toAjax(vehicleDailyDataService.updateVehicleDailyData(vehicleDailyData));
    }
    /**
     * 删除车辆每日数据
     */
    @PreAuthorize("@ss.hasPermi('cwgl:data:remove')")
    @Log(title = "车辆每日数据", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Integer[] ids)
    {
        return toAjax(vehicleDailyDataService.deleteVehicleDailyDataByIds(ids));
    }
}
service/src/main/java/com/ruoyi/cwgl/domain/VehicleDailyData.java
New file
@@ -0,0 +1,283 @@
package com.ruoyi.cwgl.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
import lombok.Data;
/**
 * 车辆每日数据对象 vehicle_daily_data
 *
 * @author ruoyi
 * @date 2025-10-09
 */
@Data
public class VehicleDailyData{
    /** 主键ID */
        @TableField("id")
    private Integer id;
    /** 车架号 */
    @Excel(name = "车架号")
        @TableField("vin")
    private String vin;
    /** 底盘类型 */
    @Excel(name = "底盘类型")
        @TableField("chassis_type")
    private String chassisType;
    /** 数据日期 */
    @Excel(name = "数据日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss HH:mm:ss")
        @TableField("event_date")
    private Date eventDate;
    /** 行驶里程 */
    @Excel(name = "行驶里程")
        @TableField("distance")
    private BigDecimal distance;
    /** 用车时长 */
    @Excel(name = "用车时长")
        @TableField("duration")
    private BigDecimal duration;
    /** 熄火停车时长 */
    @Excel(name = "熄火停车时长")
        @TableField("shutdown_duration")
    private BigDecimal shutdownDuration;
    /** 行驶时长 */
    @Excel(name = "行驶时长")
        @TableField("driving_duration")
    private BigDecimal drivingDuration;
    /** 行驶时长占比 */
    @Excel(name = "行驶时长占比")
        @TableField("driving_duration_ratio")
    private BigDecimal drivingDurationRatio;
    /** 怠速时长占比 */
    @Excel(name = "怠速时长占比")
        @TableField("idle_duration_ratio")
    private BigDecimal idleDurationRatio;
    /** 怠速时长 */
    @Excel(name = "怠速时长")
        @TableField("idle_duration")
    private BigDecimal idleDuration;
    /** 滑行距离占比 */
    @Excel(name = "滑行距离占比")
        @TableField("coasting_distance_ratio")
    private BigDecimal coastingDistanceRatio;
    /** 滑行距离 */
    @Excel(name = "滑行距离")
        @TableField("coasting_distance")
    private BigDecimal coastingDistance;
    /** 巡航距离占比 */
    @Excel(name = "巡航距离占比")
        @TableField("cruising_distance_ratio")
    private BigDecimal cruisingDistanceRatio;
    /** 巡航距离 */
    @Excel(name = "巡航距离")
        @TableField("cruising_distance")
    private BigDecimal cruisingDistance;
    /** 平均速度 */
    @Excel(name = "平均速度")
        @TableField("avg_speed")
    private BigDecimal avgSpeed;
    /** 平均行车速度 */
    @Excel(name = "平均行车速度")
        @TableField("avg_driving_speed")
    private BigDecimal avgDrivingSpeed;
    /** 发动机平均转速 */
    @Excel(name = "发动机平均转速")
        @TableField("avg_engine_speed")
    private BigDecimal avgEngineSpeed;
    /** 经济转速时长占比 */
    @Excel(name = "经济转速时长占比")
        @TableField("economic_engine_speed_duration_ratio")
    private BigDecimal economicEngineSpeedDurationRatio;
    /** 经济转速时长 */
    @Excel(name = "经济转速时长")
        @TableField("economic_engine_speed_duration")
    private BigDecimal economicEngineSpeedDuration;
    /** 百公里能耗 */
    @Excel(name = "百公里能耗")
        @TableField("avg_energy_consumption")
    private BigDecimal avgEnergyConsumption;
    /** 耗油量 */
    @Excel(name = "耗油量")
        @TableField("energy_consumption")
    private BigDecimal energyConsumption;
    /** 行驶耗油量 */
    @Excel(name = "行驶耗油量")
        @TableField("driving_energy_consumption")
    private BigDecimal drivingEnergyConsumption;
    /** 行驶耗油量占比 */
    @Excel(name = "行驶耗油量占比")
        @TableField("driving_energy_consumption_ratio")
    private BigDecimal drivingEnergyConsumptionRatio;
    /** 怠速耗油量占比 */
    @Excel(name = "怠速耗油量占比")
        @TableField("idle_energy_consumption_ratio")
    private BigDecimal idleEnergyConsumptionRatio;
    /** 怠速耗油量 */
    @Excel(name = "怠速耗油量")
        @TableField("idle_energy_consumption")
    private BigDecimal idleEnergyConsumption;
    /** 百公里尿素消耗 */
    @Excel(name = "百公里尿素消耗")
        @TableField("avg_adblue_consumption")
    private BigDecimal avgAdblueConsumption;
    /** 尿素消耗 */
    @Excel(name = "尿素消耗")
        @TableField("adblue_consumption")
    private BigDecimal adblueConsumption;
    /** 平均整车质量 */
    @Excel(name = "平均整车质量")
        @TableField("avg_gross_weight")
    private BigDecimal avgGrossWeight;
    /** 刹车次数 */
    @Excel(name = "刹车次数")
        @TableField("brake_times")
    private Integer brakeTimes;
    /** 急刹车次数 */
    @Excel(name = "急刹车次数")
        @TableField("harsh_brake_times")
    private Integer harshBrakeTimes;
    /** 急加速次数 */
    @Excel(name = "急加速次数")
        @TableField("acceleration_times")
    private Integer accelerationTimes;
    /** 百公里刹车次数 */
    @Excel(name = "百公里刹车次数")
        @TableField("avg_brake_times")
    private Integer avgBrakeTimes;
    /** 百公里急刹车次数 */
    @Excel(name = "百公里急刹车次数")
        @TableField("avg_harsh_brake_times")
    private Integer avgHarshBrakeTimes;
    /** 百公里急加速次数 */
    @Excel(name = "百公里急加速次数")
        @TableField("avg_acceleration_times")
    private Integer avgAccelerationTimes;
    /** 里程表里程 */
    @Excel(name = "里程表里程")
        @TableField("odometer")
    private BigDecimal odometer;
    /** 创建时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss HH:mm:ss")
        @TableField("create_time")
    private Date createTime;
    /** 更新时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss HH:mm:ss")
        @TableField("update_time")
    private Date updateTime;
}
service/src/main/java/com/ruoyi/cwgl/mapper/VehicleDailyDataMapper.java
New file
@@ -0,0 +1,87 @@
package com.ruoyi.cwgl.mapper;
import java.util.List;
import com.ruoyi.cwgl.domain.VehicleDailyData;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * 车辆每日数据Mapper接口
 *
 * @author ruoyi
 * @date 2025-10-09
 */
public interface VehicleDailyDataMapper  extends BaseMapper<VehicleDailyData>
{
    /**
     * 查询车辆每日数据
     *
     * @param id 车辆每日数据ID
     * @return 车辆每日数据
     */
    public VehicleDailyData selectVehicleDailyDataById(Integer id);
    /**
     * 查询车辆每日数据 记录数
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 车辆每日数据集合
     */
    public int selectVehicleDailyDataCount(VehicleDailyData vehicleDailyData);
    /**
     * 查询车辆每日数据列表
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 车辆每日数据集合
     */
    public List<VehicleDailyData> selectVehicleDailyDataList(VehicleDailyData vehicleDailyData);
    /**
     * 新增车辆每日数据
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 结果
     */
    public int insertVehicleDailyData(VehicleDailyData vehicleDailyData);
    /**
     * 新增车辆每日数据[批量]
     *
     * @param vehicleDailyDatas 车辆每日数据
     * @return 结果
     */
    public int insertVehicleDailyDataBatch(List<VehicleDailyData> vehicleDailyDatas);
    /**
     * 修改车辆每日数据
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 结果
     */
    public int updateVehicleDailyData(VehicleDailyData vehicleDailyData);
    /**
     * 修改车辆每日数据[批量]
     *
     * @param vehicleDailyDatas 车辆每日数据
     * @return 结果
     */
    public int updateVehicleDailyDataBatch(List<VehicleDailyData> vehicleDailyDatas);
    /**
     * 删除车辆每日数据
     *
     * @param id 车辆每日数据ID
     * @return 结果
     */
    public int deleteVehicleDailyDataById(Integer id);
    /**
     * 批量删除车辆每日数据
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteVehicleDailyDataByIds(Integer[] ids);
}
service/src/main/java/com/ruoyi/cwgl/service/IVehicleDailyDataService.java
New file
@@ -0,0 +1,102 @@
package com.ruoyi.cwgl.service;
import java.util.List;
import com.ruoyi.cwgl.domain.VehicleDailyData;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * 车辆每日数据Service接口
 *
 * @author ruoyi
 * @date 2025-10-09
 */
public interface IVehicleDailyDataService extends IService<VehicleDailyData>
{
    /**
     * 查询车辆每日数据
     *
     * @param id 车辆每日数据ID
     * @return 车辆每日数据
     */
    public VehicleDailyData selectVehicleDailyDataById(Integer id);
    /**
     * 查询车辆每日数据 记录数
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 车辆每日数据集合
     */
    public int selectVehicleDailyDataCount(VehicleDailyData vehicleDailyData);
    /**
     * 查询车辆每日数据列表
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 车辆每日数据集合
     */
    public List<VehicleDailyData> selectVehicleDailyDataList(VehicleDailyData vehicleDailyData);
    /**
     * 查询车辆每日数据列表 异步 导出
     *
     * @param vehicleDailyData 车辆每日数据
     * @param exportKey 导出功能的唯一标识
     * @return 车辆每日数据集合
     */
    public void export(VehicleDailyData vehicleDailyData, String exportKey) ;
    /**
     * 新增车辆每日数据
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 结果
     */
    public int insertVehicleDailyData(VehicleDailyData vehicleDailyData);
    /**
     * 新增车辆每日数据[批量]
     *
     * @param vehicleDailyDatas 车辆每日数据
     * @return 结果
     */
    public int insertVehicleDailyDataBatch(List<VehicleDailyData> vehicleDailyDatas);
    /**
     * 修改车辆每日数据
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 结果
     */
    public int updateVehicleDailyData(VehicleDailyData vehicleDailyData);
    /**
     * 修改车辆每日数据[批量]
     *
     * @param vehicleDailyDatas 车辆每日数据
     * @return 结果
     */
    public int updateVehicleDailyDataBatch(List<VehicleDailyData> vehicleDailyDatas);
    /**
     * 批量删除车辆每日数据
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteVehicleDailyDataByIds(String ids);
    /**
     * 批量删除车辆每日数据
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteVehicleDailyDataByIds(Integer[] ids);
    /**
     * 删除车辆每日数据信息
     *
     * @param id 车辆每日数据ID
     * @return 结果
     */
    public int deleteVehicleDailyDataById(Integer id);
}
service/src/main/java/com/ruoyi/cwgl/service/impl/VehicleDailyDataServiceImpl.java
New file
@@ -0,0 +1,182 @@
package com.ruoyi.cwgl.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Async;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.core.service.BaseService;
import com.ruoyi.cwgl.mapper.VehicleDailyDataMapper;
import com.ruoyi.cwgl.domain.VehicleDailyData;
import com.ruoyi.cwgl.service.IVehicleDailyDataService;
import com.ruoyi.common.core.text.Convert;
/**
 * 车辆每日数据Service业务层处理
 *
 * @author ruoyi
 * @date 2025-10-09
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class VehicleDailyDataServiceImpl  extends BaseService<VehicleDailyDataMapper, VehicleDailyData> implements IVehicleDailyDataService
{
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    @Resource
    private VehicleDailyDataMapper vehicleDailyDataMapper;
    /**
     * 查询车辆每日数据
     *
     * @param id 车辆每日数据ID
     * @return 车辆每日数据
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public VehicleDailyData selectVehicleDailyDataById(Integer id)
    {
        return vehicleDailyDataMapper.selectVehicleDailyDataById(id);
    }
    /**
     * 查询车辆每日数据 记录数
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 车辆每日数据集合
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public int selectVehicleDailyDataCount(VehicleDailyData vehicleDailyData)
    {
        return vehicleDailyDataMapper.selectVehicleDailyDataCount(vehicleDailyData);
    }
    /**
     * 查询车辆每日数据列表
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 车辆每日数据
     */
    @DataSource(DataSourceType.SLAVE)
    @Override
    public List<VehicleDailyData> selectVehicleDailyDataList(VehicleDailyData vehicleDailyData)
    {
        return vehicleDailyDataMapper.selectVehicleDailyDataList(vehicleDailyData);
    }
    /**
     * 查询车辆每日数据列表 异步 导出
     *
     * @param vehicleDailyData 车辆每日数据
     * @param exportKey 导出功能的唯一标识
     * @return 车辆每日数据集合
     */
    @DataSource(DataSourceType.SLAVE)
    @Async
    @Override
    public void export(VehicleDailyData vehicleDailyData,String exportKey) {
        super.export(VehicleDailyData.class,exportKey,"vehicleDailyDataData",(pageNum)->{
            PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
            return selectVehicleDailyDataList(vehicleDailyData);
        });
    }
    /**
     * 新增车辆每日数据
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 结果
     */
    @Override
    public int insertVehicleDailyData(VehicleDailyData vehicleDailyData)
    {
        vehicleDailyData.setCreateTime(DateUtils.getNowDate());
        return vehicleDailyDataMapper.insertVehicleDailyData(vehicleDailyData);
    }
    /**
     * 新增车辆每日数据[批量]
     *
     * @param vehicleDailyDatas 车辆每日数据
     * @return 结果
     */
    @Override
    public int insertVehicleDailyDataBatch(List<VehicleDailyData> vehicleDailyDatas)
    {
        int rows = vehicleDailyDataMapper.insertVehicleDailyDataBatch(vehicleDailyDatas);
        return rows;
    }
    /**
     * 修改车辆每日数据
     *
     * @param vehicleDailyData 车辆每日数据
     * @return 结果
     */
    @Override
    public int updateVehicleDailyData(VehicleDailyData vehicleDailyData)
    {
        vehicleDailyData.setUpdateTime(DateUtils.getNowDate());
        return vehicleDailyDataMapper.updateVehicleDailyData(vehicleDailyData);
    }
    /**
     * 修改车辆每日数据[批量]
     *
     * @param vehicleDailyDatas 车辆每日数据
     * @return 结果
     */
    @Override
    public int updateVehicleDailyDataBatch(List<VehicleDailyData> vehicleDailyDatas){
        return vehicleDailyDataMapper.updateVehicleDailyDataBatch(vehicleDailyDatas);
    }
    /**
     * 删除车辆每日数据对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteVehicleDailyDataByIds(String ids)
    {
        return deleteVehicleDailyDataByIds(Convert.toIntArray(ids));
    }
    /**
     * 删除车辆每日数据对象
     *
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteVehicleDailyDataByIds(Integer[] ids)
    {
        return vehicleDailyDataMapper.deleteVehicleDailyDataByIds(ids);
    }
    /**
     * 删除车辆每日数据信息
     *
     * @param id 车辆每日数据ID
     * @return 结果
     */
    @Override
    public int deleteVehicleDailyDataById(Integer id)
    {
        return vehicleDailyDataMapper.deleteVehicleDailyDataById(id);
    }
}
service/src/main/resources/mapper/cwgl/VehicleDailyDataMapper.xml
New file
@@ -0,0 +1,312 @@
<?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.ruoyi.cwgl.mapper.VehicleDailyDataMapper">
    <resultMap type="com.ruoyi.cwgl.domain.VehicleDailyData" id="VehicleDailyDataResult">
        <result property="id"    column="id"    />
        <result property="vin"    column="vin"    />
        <result property="chassisType"    column="chassis_type"    />
        <result property="eventDate"    column="event_date"    />
        <result property="distance"    column="distance"    />
        <result property="duration"    column="duration"    />
        <result property="shutdownDuration"    column="shutdown_duration"    />
        <result property="drivingDuration"    column="driving_duration"    />
        <result property="drivingDurationRatio"    column="driving_duration_ratio"    />
        <result property="idleDurationRatio"    column="idle_duration_ratio"    />
        <result property="idleDuration"    column="idle_duration"    />
        <result property="coastingDistanceRatio"    column="coasting_distance_ratio"    />
        <result property="coastingDistance"    column="coasting_distance"    />
        <result property="cruisingDistanceRatio"    column="cruising_distance_ratio"    />
        <result property="cruisingDistance"    column="cruising_distance"    />
        <result property="avgSpeed"    column="avg_speed"    />
        <result property="avgDrivingSpeed"    column="avg_driving_speed"    />
        <result property="avgEngineSpeed"    column="avg_engine_speed"    />
        <result property="economicEngineSpeedDurationRatio"    column="economic_engine_speed_duration_ratio"    />
        <result property="economicEngineSpeedDuration"    column="economic_engine_speed_duration"    />
        <result property="avgEnergyConsumption"    column="avg_energy_consumption"    />
        <result property="energyConsumption"    column="energy_consumption"    />
        <result property="drivingEnergyConsumption"    column="driving_energy_consumption"    />
        <result property="drivingEnergyConsumptionRatio"    column="driving_energy_consumption_ratio"    />
        <result property="idleEnergyConsumptionRatio"    column="idle_energy_consumption_ratio"    />
        <result property="idleEnergyConsumption"    column="idle_energy_consumption"    />
        <result property="avgAdblueConsumption"    column="avg_adblue_consumption"    />
        <result property="adblueConsumption"    column="adblue_consumption"    />
        <result property="avgGrossWeight"    column="avg_gross_weight"    />
        <result property="brakeTimes"    column="brake_times"    />
        <result property="harshBrakeTimes"    column="harsh_brake_times"    />
        <result property="accelerationTimes"    column="acceleration_times"    />
        <result property="avgBrakeTimes"    column="avg_brake_times"    />
        <result property="avgHarshBrakeTimes"    column="avg_harsh_brake_times"    />
        <result property="avgAccelerationTimes"    column="avg_acceleration_times"    />
        <result property="odometer"    column="odometer"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateTime"    column="update_time"    />
    </resultMap>
    <sql id="selectVehicleDailyDataVo">
        select thisTab.id, thisTab.vin, thisTab.chassis_type, thisTab.event_date, thisTab.distance, thisTab.duration, thisTab.shutdown_duration, thisTab.driving_duration, thisTab.driving_duration_ratio, thisTab.idle_duration_ratio, thisTab.idle_duration, thisTab.coasting_distance_ratio, thisTab.coasting_distance, thisTab.cruising_distance_ratio, thisTab.cruising_distance, thisTab.avg_speed, thisTab.avg_driving_speed, thisTab.avg_engine_speed, thisTab.economic_engine_speed_duration_ratio, thisTab.economic_engine_speed_duration, thisTab.avg_energy_consumption, thisTab.energy_consumption, thisTab.driving_energy_consumption, thisTab.driving_energy_consumption_ratio, thisTab.idle_energy_consumption_ratio, thisTab.idle_energy_consumption, thisTab.avg_adblue_consumption, thisTab.adblue_consumption, thisTab.avg_gross_weight, thisTab.brake_times, thisTab.harsh_brake_times, thisTab.acceleration_times, thisTab.avg_brake_times, thisTab.avg_harsh_brake_times, thisTab.avg_acceleration_times, thisTab.odometer, thisTab.create_time, thisTab.update_time from vehicle_daily_data AS thisTab
    </sql>
    <sql id="selectVehicleDailyDataVoCount">
        select count(0) from vehicle_daily_data as thisTab
    </sql>
    <sql id="whereCondition">
        <if test="vin != null  and vin != ''"> and thisTab.vin = #{vin}</if>
        <if test="chassisType != null  and chassisType != ''"> and thisTab.chassis_type = #{chassisType}</if>
        <if test="eventDate != null "> and thisTab.event_date = #{eventDate}</if>
        <if test="distance != null "> and thisTab.distance = #{distance}</if>
        <if test="duration != null "> and thisTab.duration = #{duration}</if>
        <if test="shutdownDuration != null "> and thisTab.shutdown_duration = #{shutdownDuration}</if>
        <if test="drivingDuration != null "> and thisTab.driving_duration = #{drivingDuration}</if>
        <if test="drivingDurationRatio != null "> and thisTab.driving_duration_ratio = #{drivingDurationRatio}</if>
        <if test="idleDurationRatio != null "> and thisTab.idle_duration_ratio = #{idleDurationRatio}</if>
        <if test="idleDuration != null "> and thisTab.idle_duration = #{idleDuration}</if>
        <if test="coastingDistanceRatio != null "> and thisTab.coasting_distance_ratio = #{coastingDistanceRatio}</if>
        <if test="coastingDistance != null "> and thisTab.coasting_distance = #{coastingDistance}</if>
        <if test="cruisingDistanceRatio != null "> and thisTab.cruising_distance_ratio = #{cruisingDistanceRatio}</if>
        <if test="cruisingDistance != null "> and thisTab.cruising_distance = #{cruisingDistance}</if>
        <if test="avgSpeed != null "> and thisTab.avg_speed = #{avgSpeed}</if>
        <if test="avgDrivingSpeed != null "> and thisTab.avg_driving_speed = #{avgDrivingSpeed}</if>
        <if test="avgEngineSpeed != null "> and thisTab.avg_engine_speed = #{avgEngineSpeed}</if>
        <if test="economicEngineSpeedDurationRatio != null "> and thisTab.economic_engine_speed_duration_ratio = #{economicEngineSpeedDurationRatio}</if>
        <if test="economicEngineSpeedDuration != null "> and thisTab.economic_engine_speed_duration = #{economicEngineSpeedDuration}</if>
        <if test="avgEnergyConsumption != null "> and thisTab.avg_energy_consumption = #{avgEnergyConsumption}</if>
        <if test="energyConsumption != null "> and thisTab.energy_consumption = #{energyConsumption}</if>
        <if test="drivingEnergyConsumption != null "> and thisTab.driving_energy_consumption = #{drivingEnergyConsumption}</if>
        <if test="drivingEnergyConsumptionRatio != null "> and thisTab.driving_energy_consumption_ratio = #{drivingEnergyConsumptionRatio}</if>
        <if test="idleEnergyConsumptionRatio != null "> and thisTab.idle_energy_consumption_ratio = #{idleEnergyConsumptionRatio}</if>
        <if test="idleEnergyConsumption != null "> and thisTab.idle_energy_consumption = #{idleEnergyConsumption}</if>
        <if test="avgAdblueConsumption != null "> and thisTab.avg_adblue_consumption = #{avgAdblueConsumption}</if>
        <if test="adblueConsumption != null "> and thisTab.adblue_consumption = #{adblueConsumption}</if>
        <if test="avgGrossWeight != null "> and thisTab.avg_gross_weight = #{avgGrossWeight}</if>
        <if test="brakeTimes != null "> and thisTab.brake_times = #{brakeTimes}</if>
        <if test="harshBrakeTimes != null "> and thisTab.harsh_brake_times = #{harshBrakeTimes}</if>
        <if test="accelerationTimes != null "> and thisTab.acceleration_times = #{accelerationTimes}</if>
        <if test="avgBrakeTimes != null "> and thisTab.avg_brake_times = #{avgBrakeTimes}</if>
        <if test="avgHarshBrakeTimes != null "> and thisTab.avg_harsh_brake_times = #{avgHarshBrakeTimes}</if>
        <if test="avgAccelerationTimes != null "> and thisTab.avg_acceleration_times = #{avgAccelerationTimes}</if>
        <if test="odometer != null "> and thisTab.odometer = #{odometer}</if>
        <if test="createTimeBegin != null and createTimeBegin != '' and createTimeEnd != null and createTimeEnd != ''"> and  thisTab.create_time between #{createTimeBegin} and #{createTimeEnd}</if>
    </sql>
    <!--查询-->
    <select id="selectVehicleDailyDataById" parameterType="Integer" resultMap="VehicleDailyDataResult">
        <include refid="selectVehicleDailyDataVo"/>
        where id = #{id}
    </select>
    <select id="selectVehicleDailyDataCount" parameterType="com.ruoyi.cwgl.domain.VehicleDailyData" resultType="int">
        <include refid="selectVehicleDailyDataVoCount"/>
        <where>
            <include refid="whereCondition"/>
        </where>
    </select>
    <select id="selectVehicleDailyDataList" parameterType="com.ruoyi.cwgl.domain.VehicleDailyData" resultMap="VehicleDailyDataResult">
        <include refid="selectVehicleDailyDataVo"/>
        <where>
            <include refid="whereCondition"/>
        </where>
        order by thisTab.id desc
    </select>
    <!-- 新增 -->
    <insert id="insertVehicleDailyData" parameterType="com.ruoyi.cwgl.domain.VehicleDailyData"  useGeneratedKeys="true" keyProperty="id">
        insert into vehicle_daily_data
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="vin != null and vin != ''">vin,</if>
            <if test="chassisType != null">chassis_type,</if>
            <if test="eventDate != null">event_date,</if>
            <if test="distance != null">distance,</if>
            <if test="duration != null">duration,</if>
            <if test="shutdownDuration != null">shutdown_duration,</if>
            <if test="drivingDuration != null">driving_duration,</if>
            <if test="drivingDurationRatio != null">driving_duration_ratio,</if>
            <if test="idleDurationRatio != null">idle_duration_ratio,</if>
            <if test="idleDuration != null">idle_duration,</if>
            <if test="coastingDistanceRatio != null">coasting_distance_ratio,</if>
            <if test="coastingDistance != null">coasting_distance,</if>
            <if test="cruisingDistanceRatio != null">cruising_distance_ratio,</if>
            <if test="cruisingDistance != null">cruising_distance,</if>
            <if test="avgSpeed != null">avg_speed,</if>
            <if test="avgDrivingSpeed != null">avg_driving_speed,</if>
            <if test="avgEngineSpeed != null">avg_engine_speed,</if>
            <if test="economicEngineSpeedDurationRatio != null">economic_engine_speed_duration_ratio,</if>
            <if test="economicEngineSpeedDuration != null">economic_engine_speed_duration,</if>
            <if test="avgEnergyConsumption != null">avg_energy_consumption,</if>
            <if test="energyConsumption != null">energy_consumption,</if>
            <if test="drivingEnergyConsumption != null">driving_energy_consumption,</if>
            <if test="drivingEnergyConsumptionRatio != null">driving_energy_consumption_ratio,</if>
            <if test="idleEnergyConsumptionRatio != null">idle_energy_consumption_ratio,</if>
            <if test="idleEnergyConsumption != null">idle_energy_consumption,</if>
            <if test="avgAdblueConsumption != null">avg_adblue_consumption,</if>
            <if test="adblueConsumption != null">adblue_consumption,</if>
            <if test="avgGrossWeight != null">avg_gross_weight,</if>
            <if test="brakeTimes != null">brake_times,</if>
            <if test="harshBrakeTimes != null">harsh_brake_times,</if>
            <if test="accelerationTimes != null">acceleration_times,</if>
            <if test="avgBrakeTimes != null">avg_brake_times,</if>
            <if test="avgHarshBrakeTimes != null">avg_harsh_brake_times,</if>
            <if test="avgAccelerationTimes != null">avg_acceleration_times,</if>
            <if test="odometer != null">odometer,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateTime != null">update_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="vin != null and vin != ''">#{vin},</if>
            <if test="chassisType != null">#{chassisType},</if>
            <if test="eventDate != null">#{eventDate},</if>
            <if test="distance != null">#{distance},</if>
            <if test="duration != null">#{duration},</if>
            <if test="shutdownDuration != null">#{shutdownDuration},</if>
            <if test="drivingDuration != null">#{drivingDuration},</if>
            <if test="drivingDurationRatio != null">#{drivingDurationRatio},</if>
            <if test="idleDurationRatio != null">#{idleDurationRatio},</if>
            <if test="idleDuration != null">#{idleDuration},</if>
            <if test="coastingDistanceRatio != null">#{coastingDistanceRatio},</if>
            <if test="coastingDistance != null">#{coastingDistance},</if>
            <if test="cruisingDistanceRatio != null">#{cruisingDistanceRatio},</if>
            <if test="cruisingDistance != null">#{cruisingDistance},</if>
            <if test="avgSpeed != null">#{avgSpeed},</if>
            <if test="avgDrivingSpeed != null">#{avgDrivingSpeed},</if>
            <if test="avgEngineSpeed != null">#{avgEngineSpeed},</if>
            <if test="economicEngineSpeedDurationRatio != null">#{economicEngineSpeedDurationRatio},</if>
            <if test="economicEngineSpeedDuration != null">#{economicEngineSpeedDuration},</if>
            <if test="avgEnergyConsumption != null">#{avgEnergyConsumption},</if>
            <if test="energyConsumption != null">#{energyConsumption},</if>
            <if test="drivingEnergyConsumption != null">#{drivingEnergyConsumption},</if>
            <if test="drivingEnergyConsumptionRatio != null">#{drivingEnergyConsumptionRatio},</if>
            <if test="idleEnergyConsumptionRatio != null">#{idleEnergyConsumptionRatio},</if>
            <if test="idleEnergyConsumption != null">#{idleEnergyConsumption},</if>
            <if test="avgAdblueConsumption != null">#{avgAdblueConsumption},</if>
            <if test="adblueConsumption != null">#{adblueConsumption},</if>
            <if test="avgGrossWeight != null">#{avgGrossWeight},</if>
            <if test="brakeTimes != null">#{brakeTimes},</if>
            <if test="harshBrakeTimes != null">#{harshBrakeTimes},</if>
            <if test="accelerationTimes != null">#{accelerationTimes},</if>
            <if test="avgBrakeTimes != null">#{avgBrakeTimes},</if>
            <if test="avgHarshBrakeTimes != null">#{avgHarshBrakeTimes},</if>
            <if test="avgAccelerationTimes != null">#{avgAccelerationTimes},</if>
            <if test="odometer != null">#{odometer},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateTime != null">#{updateTime},</if>
         </trim>
    </insert>
    <insert id="insertVehicleDailyDataBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
        insert into vehicle_daily_data
        <trim prefix="(" suffix=") values" suffixOverrides=",">
            id,vin,chassis_type,event_date,distance,duration,shutdown_duration,driving_duration,driving_duration_ratio,idle_duration_ratio,idle_duration,coasting_distance_ratio,coasting_distance,cruising_distance_ratio,cruising_distance,avg_speed,avg_driving_speed,avg_engine_speed,economic_engine_speed_duration_ratio,economic_engine_speed_duration,avg_energy_consumption,energy_consumption,driving_energy_consumption,driving_energy_consumption_ratio,idle_energy_consumption_ratio,idle_energy_consumption,avg_adblue_consumption,adblue_consumption,avg_gross_weight,brake_times,harsh_brake_times,acceleration_times,avg_brake_times,avg_harsh_brake_times,avg_acceleration_times,odometer,create_time,update_time,
        </trim>
        <foreach item="item" index="index" collection="list" separator=",">
            <trim prefix="(" suffix=") " suffixOverrides=",">
                #{item.id},#{item.vin},#{item.chassisType},#{item.eventDate},#{item.distance},#{item.duration},#{item.shutdownDuration},#{item.drivingDuration},#{item.drivingDurationRatio},#{item.idleDurationRatio},#{item.idleDuration},#{item.coastingDistanceRatio},#{item.coastingDistance},#{item.cruisingDistanceRatio},#{item.cruisingDistance},#{item.avgSpeed},#{item.avgDrivingSpeed},#{item.avgEngineSpeed},#{item.economicEngineSpeedDurationRatio},#{item.economicEngineSpeedDuration},#{item.avgEnergyConsumption},#{item.energyConsumption},#{item.drivingEnergyConsumption},#{item.drivingEnergyConsumptionRatio},#{item.idleEnergyConsumptionRatio},#{item.idleEnergyConsumption},#{item.avgAdblueConsumption},#{item.adblueConsumption},#{item.avgGrossWeight},#{item.brakeTimes},#{item.harshBrakeTimes},#{item.accelerationTimes},#{item.avgBrakeTimes},#{item.avgHarshBrakeTimes},#{item.avgAccelerationTimes},#{item.odometer},#{item.createTime},#{item.updateTime},
            </trim>
        </foreach>
    </insert>
    <!-- 修改 -->
    <update id="updateVehicleDailyData" parameterType="com.ruoyi.cwgl.domain.VehicleDailyData">
        update vehicle_daily_data
        <trim prefix="SET" suffixOverrides=",">
            <if test="vin != null and vin != ''">vin = #{vin},</if>
            <if test="chassisType != null">chassis_type = #{chassisType},</if>
            <if test="eventDate != null">event_date = #{eventDate},</if>
            <if test="distance != null">distance = #{distance},</if>
            <if test="duration != null">duration = #{duration},</if>
            <if test="shutdownDuration != null">shutdown_duration = #{shutdownDuration},</if>
            <if test="drivingDuration != null">driving_duration = #{drivingDuration},</if>
            <if test="drivingDurationRatio != null">driving_duration_ratio = #{drivingDurationRatio},</if>
            <if test="idleDurationRatio != null">idle_duration_ratio = #{idleDurationRatio},</if>
            <if test="idleDuration != null">idle_duration = #{idleDuration},</if>
            <if test="coastingDistanceRatio != null">coasting_distance_ratio = #{coastingDistanceRatio},</if>
            <if test="coastingDistance != null">coasting_distance = #{coastingDistance},</if>
            <if test="cruisingDistanceRatio != null">cruising_distance_ratio = #{cruisingDistanceRatio},</if>
            <if test="cruisingDistance != null">cruising_distance = #{cruisingDistance},</if>
            <if test="avgSpeed != null">avg_speed = #{avgSpeed},</if>
            <if test="avgDrivingSpeed != null">avg_driving_speed = #{avgDrivingSpeed},</if>
            <if test="avgEngineSpeed != null">avg_engine_speed = #{avgEngineSpeed},</if>
            <if test="economicEngineSpeedDurationRatio != null">economic_engine_speed_duration_ratio = #{economicEngineSpeedDurationRatio},</if>
            <if test="economicEngineSpeedDuration != null">economic_engine_speed_duration = #{economicEngineSpeedDuration},</if>
            <if test="avgEnergyConsumption != null">avg_energy_consumption = #{avgEnergyConsumption},</if>
            <if test="energyConsumption != null">energy_consumption = #{energyConsumption},</if>
            <if test="drivingEnergyConsumption != null">driving_energy_consumption = #{drivingEnergyConsumption},</if>
            <if test="drivingEnergyConsumptionRatio != null">driving_energy_consumption_ratio = #{drivingEnergyConsumptionRatio},</if>
            <if test="idleEnergyConsumptionRatio != null">idle_energy_consumption_ratio = #{idleEnergyConsumptionRatio},</if>
            <if test="idleEnergyConsumption != null">idle_energy_consumption = #{idleEnergyConsumption},</if>
            <if test="avgAdblueConsumption != null">avg_adblue_consumption = #{avgAdblueConsumption},</if>
            <if test="adblueConsumption != null">adblue_consumption = #{adblueConsumption},</if>
            <if test="avgGrossWeight != null">avg_gross_weight = #{avgGrossWeight},</if>
            <if test="brakeTimes != null">brake_times = #{brakeTimes},</if>
            <if test="harshBrakeTimes != null">harsh_brake_times = #{harshBrakeTimes},</if>
            <if test="accelerationTimes != null">acceleration_times = #{accelerationTimes},</if>
            <if test="avgBrakeTimes != null">avg_brake_times = #{avgBrakeTimes},</if>
            <if test="avgHarshBrakeTimes != null">avg_harsh_brake_times = #{avgHarshBrakeTimes},</if>
            <if test="avgAccelerationTimes != null">avg_acceleration_times = #{avgAccelerationTimes},</if>
            <if test="odometer != null">odometer = #{odometer},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where id = #{id}
    </update>
    <!-- 修改 -->
    <update id="updateVehicleDailyDataBatch" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" separator=";">
            update vehicle_daily_data
            <trim prefix="SET" suffixOverrides=",">
                <if test="item.vin != null and item.vin != ''">vin = #{item.vin},</if>
                <if test="item.chassisType != null">chassis_type = #{item.chassisType},</if>
                <if test="item.eventDate != null">event_date = #{item.eventDate},</if>
                <if test="item.distance != null">distance = #{item.distance},</if>
                <if test="item.duration != null">duration = #{item.duration},</if>
                <if test="item.shutdownDuration != null">shutdown_duration = #{item.shutdownDuration},</if>
                <if test="item.drivingDuration != null">driving_duration = #{item.drivingDuration},</if>
                <if test="item.drivingDurationRatio != null">driving_duration_ratio = #{item.drivingDurationRatio},</if>
                <if test="item.idleDurationRatio != null">idle_duration_ratio = #{item.idleDurationRatio},</if>
                <if test="item.idleDuration != null">idle_duration = #{item.idleDuration},</if>
                <if test="item.coastingDistanceRatio != null">coasting_distance_ratio = #{item.coastingDistanceRatio},</if>
                <if test="item.coastingDistance != null">coasting_distance = #{item.coastingDistance},</if>
                <if test="item.cruisingDistanceRatio != null">cruising_distance_ratio = #{item.cruisingDistanceRatio},</if>
                <if test="item.cruisingDistance != null">cruising_distance = #{item.cruisingDistance},</if>
                <if test="item.avgSpeed != null">avg_speed = #{item.avgSpeed},</if>
                <if test="item.avgDrivingSpeed != null">avg_driving_speed = #{item.avgDrivingSpeed},</if>
                <if test="item.avgEngineSpeed != null">avg_engine_speed = #{item.avgEngineSpeed},</if>
                <if test="item.economicEngineSpeedDurationRatio != null">economic_engine_speed_duration_ratio = #{item.economicEngineSpeedDurationRatio},</if>
                <if test="item.economicEngineSpeedDuration != null">economic_engine_speed_duration = #{item.economicEngineSpeedDuration},</if>
                <if test="item.avgEnergyConsumption != null">avg_energy_consumption = #{item.avgEnergyConsumption},</if>
                <if test="item.energyConsumption != null">energy_consumption = #{item.energyConsumption},</if>
                <if test="item.drivingEnergyConsumption != null">driving_energy_consumption = #{item.drivingEnergyConsumption},</if>
                <if test="item.drivingEnergyConsumptionRatio != null">driving_energy_consumption_ratio = #{item.drivingEnergyConsumptionRatio},</if>
                <if test="item.idleEnergyConsumptionRatio != null">idle_energy_consumption_ratio = #{item.idleEnergyConsumptionRatio},</if>
                <if test="item.idleEnergyConsumption != null">idle_energy_consumption = #{item.idleEnergyConsumption},</if>
                <if test="item.avgAdblueConsumption != null">avg_adblue_consumption = #{item.avgAdblueConsumption},</if>
                <if test="item.adblueConsumption != null">adblue_consumption = #{item.adblueConsumption},</if>
                <if test="item.avgGrossWeight != null">avg_gross_weight = #{item.avgGrossWeight},</if>
                <if test="item.brakeTimes != null">brake_times = #{item.brakeTimes},</if>
                <if test="item.harshBrakeTimes != null">harsh_brake_times = #{item.harshBrakeTimes},</if>
                <if test="item.accelerationTimes != null">acceleration_times = #{item.accelerationTimes},</if>
                <if test="item.avgBrakeTimes != null">avg_brake_times = #{item.avgBrakeTimes},</if>
                <if test="item.avgHarshBrakeTimes != null">avg_harsh_brake_times = #{item.avgHarshBrakeTimes},</if>
                <if test="item.avgAccelerationTimes != null">avg_acceleration_times = #{item.avgAccelerationTimes},</if>
                <if test="item.odometer != null">odometer = #{item.odometer},</if>
                <if test="item.createTime != null">create_time = #{item.createTime},</if>
                <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
            </trim>
        where id = #{item.id}
        </foreach>
    </update>
    <!--删除-->
    <delete id="deleteVehicleDailyDataById" parameterType="Integer">
        delete from vehicle_daily_data where id = #{id}
    </delete>
    <delete id="deleteVehicleDailyDataByIds" parameterType="Integer">
        delete from vehicle_daily_data where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
ui/admin-ui3/src/api/cwgl/data.ts
New file
@@ -0,0 +1,67 @@
import request,{download,requestType} from "@/utils/request";
import {BaseEntityInterface} from "@/utils/globalInterface";
export interface DataI extends BaseEntityInterface{
            id ?:  number   ,            vin ?:  string   ,            chassisType ?:  string   ,            eventDate ?:  string   ,            distance ?:  string   ,            duration ?:  string   ,            shutdownDuration ?:  string   ,            drivingDuration ?:  string   ,            drivingDurationRatio ?:  string   ,            idleDurationRatio ?:  string   ,            idleDuration ?:  string   ,            coastingDistanceRatio ?:  string   ,            coastingDistance ?:  string   ,            cruisingDistanceRatio ?:  string   ,            cruisingDistance ?:  string   ,            avgSpeed ?:  string   ,            avgDrivingSpeed ?:  string   ,            avgEngineSpeed ?:  string   ,            economicEngineSpeedDurationRatio ?:  string   ,            economicEngineSpeedDuration ?:  string   ,            avgEnergyConsumption ?:  string   ,            energyConsumption ?:  string   ,            drivingEnergyConsumption ?:  string   ,            drivingEnergyConsumptionRatio ?:  string   ,            idleEnergyConsumptionRatio ?:  string   ,            idleEnergyConsumption ?:  string   ,            avgAdblueConsumption ?:  string   ,            adblueConsumption ?:  string   ,            avgGrossWeight ?:  string   ,            brakeTimes ?:  number   ,            harshBrakeTimes ?:  number   ,            accelerationTimes ?:  number   ,            avgBrakeTimes ?:  number   ,            avgHarshBrakeTimes ?:  number   ,            avgAccelerationTimes ?:  number   ,            odometer ?:  string   ,            createTime ?:  string   ,            updateTime ?:  string       }
/**
 * 查询车辆每日数据列表
 */
export const listData:requestType = (query) => {
    return request({
        url: '/cwgl/data/list',
        method:'get',
        params:query
    })
}
/**
 * 查询车辆每日数据详细
 */
export const getData:requestType = (id) => {
    return request({
        url: '/cwgl/data/' + id,
        method:'get'
    })
}
/**
 * 新增车辆每日数据
 */
export const addData:requestType = (data) => {
    return request({
        url: '/cwgl/data',
        method: 'post',
        data
    })
}
/**
 * 修改车辆每日数据
 */
export const updateData:requestType = (data) => {
    return request({
        url: '/cwgl/data',
        method: 'put',
        data
    })
}
/**
 * 删除车辆每日数据
 */
export const delData:requestType = (id) => {
    return request({
        url: '/cwgl/data/' + id,
        method: 'delete'
    })
}
/**
 * 导出车辆每日数据
 */
export const exportData:requestType = (query) => {
    return new Promise<any>(()=>{
        download('/cwgl/data/export',query);
    })
}
ui/admin-ui3/src/views/cwgl/data/index.vue
New file
@@ -0,0 +1,234 @@
<template>
  <basicContainer >
    <avue-crud
        :option="option"
        :table-loading="pageF.loading"
        :data="tableData"
        :page="page"
        :permission="permissionList"
        :before-open="beforeOpen"
        v-model="form"
        ref="crudRef"
        @row-update="rowUpdate"
        @row-save="rowSave"
        @refresh-change="refreshChange"
        @row-del="rowDel"
        @search-change="searchChange"
        @search-reset="searchReset"
        @selection-change="selectionChange"
        @current-change="currentChange"
        @size-change="sizeChange"
        @on-load="onLoad"
    >
      <template #menu-left>
        <el-button
            type="success"
            icon="Edit"
            :disabled="pageF.single"
            v-hasPermi="['cwgl:data:edit']"
            @click="handleUpdate">修改
        </el-button>
        <el-button
            type="danger"
            icon="Delete"
            :disabled="pageF.multiple"
            @click="handleDelete"
            v-hasPermi="['cwgl:data:remove']"
        >删除
        </el-button>
        <el-button
            type="warning"
            plain
            icon="Download"
            @click="handleExport"
            v-hasPermi="['cwgl:data:export']"
        >导出
        </el-button>
      </template>
    </avue-crud>
  </basicContainer>
</template>
<script setup name="data" lang="ts">
  import {DataI,addData, delData, exportData, getData, listData, updateData} from "@/api/cwgl/data";
  import useCurrentInstance from "@/utils/useCurrentInstance";
  import {computed,reactive, ref, toRefs} from "vue";
  import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
  import {usePagePlus} from "@/hooks/usePagePlus";
  import {hasPermission} from "@/utils/permissionUtils";
  const { proxy } = useCurrentInstance();
  const crudRef = ref();
  const permissionList = computed(()=>{
    return {
      addBtn: hasPermission(["cwgl:data:add"]),
      delBtn: hasPermission(["cwgl:data:remove"]),
      editBtn: hasPermission(["cwgl:data:edit"]),
      viewBtn: hasPermission(["cwgl:data:query"]),
    }
  })
  const data = reactive({
    form:<DataI>{},
    queryParams:<DataI&PageQueryInterface>{},
    page: <PagesInterface>{
      pageSize: 10,
      total: 0,
      currentPage: 1,
    },
    selectionList:[],
  })
  const {queryParams,form,page,selectionList} = toRefs(data);
  const option = ref({
    pageKey: 'Data',
    rowKey: 'id',
    column: {
                                id: {
          label: '主键ID',
                            },
                                vin: {
          label: '车架号',
                                rules: [
              {
                required: true,
                message: "车架号不能为空", trigger: "blur" }
            ],                  },
                                chassisType: {
          label: '底盘类型',
                            },
                                eventDate: {
          label: '数据日期',
                                rules: [
              {
                required: true,
                message: "数据日期不能为空", trigger: "blur" }
            ],                  },
                                distance: {
          label: '行驶里程',
                            },
                                duration: {
          label: '用车时长',
                            },
                                shutdownDuration: {
          label: '熄火停车时长',
                            },
                                drivingDuration: {
          label: '行驶时长',
                            },
                                drivingDurationRatio: {
          label: '行驶时长占比',
                            },
                                idleDurationRatio: {
          label: '怠速时长占比',
                            },
                                idleDuration: {
          label: '怠速时长',
                            },
                                coastingDistanceRatio: {
          label: '滑行距离占比',
                            },
                                coastingDistance: {
          label: '滑行距离',
                            },
                                cruisingDistanceRatio: {
          label: '巡航距离占比',
                            },
                                cruisingDistance: {
          label: '巡航距离',
                            },
                                avgSpeed: {
          label: '平均速度',
                            },
                                avgDrivingSpeed: {
          label: '平均行车速度',
                            },
                                avgEngineSpeed: {
          label: '发动机平均转速',
                            },
                                economicEngineSpeedDurationRatio: {
          label: '经济转速时长占比',
                            },
                                economicEngineSpeedDuration: {
          label: '经济转速时长',
                            },
                                avgEnergyConsumption: {
          label: '百公里能耗',
                            },
                                energyConsumption: {
          label: '耗油量',
                            },
                                drivingEnergyConsumption: {
          label: '行驶耗油量',
                            },
                                drivingEnergyConsumptionRatio: {
          label: '行驶耗油量占比',
                            },
                                idleEnergyConsumptionRatio: {
          label: '怠速耗油量占比',
                            },
                                idleEnergyConsumption: {
          label: '怠速耗油量',
                            },
                                avgAdblueConsumption: {
          label: '百公里尿素消耗',
                            },
                                adblueConsumption: {
          label: '尿素消耗',
                            },
                                avgGrossWeight: {
          label: '平均整车质量',
                            },
                                brakeTimes: {
          label: '刹车次数',
                            },
                                harshBrakeTimes: {
          label: '急刹车次数',
                            },
                                accelerationTimes: {
          label: '急加速次数',
                            },
                                avgBrakeTimes: {
          label: '百公里刹车次数',
                            },
                                avgHarshBrakeTimes: {
          label: '百公里急刹车次数',
                            },
                                avgAccelerationTimes: {
          label: '百公里急加速次数',
                            },
                                odometer: {
          label: '里程表里程',
                            },
                                createTime: {
          label: '创建时间',
                            },
                                updateTime: {
          label: '更新时间',
                            },
          }
  })
  const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
    searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
    form:form,
    option:option,
    queryParams:queryParams,
    idKey:'id',
    page:page.value,
    getListApi:listData,
    getDetailApi:getData,
    exportApi:exportData,
    deleteApi:delData,
    addApi:addData,
    updateApi:updateData,
    handleUpdateFunc:()=>{
      crudRef.value.rowEdit(selectionList.value[0]);
    },
    handleSelectionChangeFunc:(selection:any)=>{
      selectionList.value = selection;
    }
  })
</script>