package com.gci.boot.modules.vehicles.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gci.boot.modules.statis.vo.StatisParamVO;
import com.gci.boot.modules.statis.vo.RepairStatisVO;
import com.gci.boot.modules.vehicles.entity.TbRepairAssign;
import com.gci.boot.modules.vehicles.entity.TbRepairInfo;
import com.gci.boot.modules.vehicles.vo.RepairInfoListVO;
import com.gci.boot.modules.vehicles.vo.VehicleInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbRepairInfoMapper extends BaseMapper<TbRepairInfo> {


    List<RepairInfoListVO> findRepairInfoList(Page page,
                                              @Param("vo") RepairInfoListVO vo);

    List<RepairInfoListVO> findRepairInfoAllList(@Param("vo") RepairInfoListVO vo);


    List<VehicleInfoVO> findVehicleInfoByProjectId(@Param("projectId") String projectId);

    List<TbRepairAssign> findRepairShop();


    List<VehicleInfoVO> findVehicleInfoByTime(@Param("vehicleType") String vehicleType,
                                              @Param("vehicleModel") String vehicleModel,
                                              @Param("vehicleBrand") String vehicleBrand);

    List<VehicleInfoVO> findVehicleInfoByMile(@Param("vehicleType") String vehicleType,
                                              @Param("vehicleModel") String vehicleModel,
                                              @Param("vehicleBrand") String vehicleBrand);


    /**
     * 维修统计 按天 月 年
     * @param page
     * @param vo
     * @return
     */
    List<RepairStatisVO> findStatisRepairByDayMonthYear(Page page,
                                               @Param("vo") StatisParamVO vo);


    /**
     * 维修统计 按天 月 年
     * @param vo
     * @return
     */
    List<RepairStatisVO> findStatisRepairAll(@Param("vo") StatisParamVO vo,
                                             @Param("listProjectIds") List<String> listProjectIds);

    /**
     * 维修统计全部 并 附带车牌号
     * @param vo
     * @return
     */
    List<RepairStatisVO> findStatisRepairAndPlateNumberAll(@Param("vo") StatisParamVO vo,
                                                           @Param("listProjectIds") List<String> listProjectIds);

    /**
     * 维修统计全部 并 附带车牌号  项目以车辆表为准
     * @param vo
     * @return
     */
    List<RepairStatisVO> findStatisRepairAndPlateNumberAllHis(@Param("vo") StatisParamVO vo,
                                                           @Param("listProjectIds") List<String> listProjectIds);

    /**
     * 根据车辆及时间统计
     * @param vo
     * @return
     */
    List<RepairStatisVO> findStatisRepairAndPlateNumber(@Param("vo") StatisParamVO vo);

    /**
     * 维修统计根据项目统计
     * @param vo
     * @return
     */
    List<RepairStatisVO> findStatisRepairAllGroupByProject(@Param("vo") StatisParamVO vo);
}
