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.RepairStatisVO;
import com.gci.boot.modules.statis.vo.StatisParamVO;
import com.gci.boot.modules.statis.vo.UpkeepStatisVO;
import com.gci.boot.modules.vehicles.entity.TbUpkeepBill;
import com.gci.boot.modules.vehicles.entity.TbUpkeepPlan;
import com.gci.boot.modules.vehicles.vo.RepairInfoListVO;
import com.gci.boot.modules.vehicles.vo.UpkeepInfoListVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbUpkeepBillMapper extends BaseMapper<TbUpkeepBill> {

    List<UpkeepInfoListVO> findUpkeepBillList(Page page,
                                              @Param("vo") UpkeepInfoListVO vo);

    List<UpkeepInfoListVO> findAllUpkeepBillList(@Param("vo") UpkeepInfoListVO vo);

    /**最终结果通过，更新计划表的状态为已归档--5**/
    void updateFinshPlan(@Param("id") String id,
                          @Param("auditStatus") Integer auditStatus);

    /**
     * 保养统计 按天 月 年
     * @param page
     * @param vo
     * @return
     */
    List<UpkeepStatisVO> findStatisUpkeepByDayMonthYear(Page page,
                                                        @Param("vo") StatisParamVO vo);


    /**
     * 保养统计 按天 月 年
     * @param vo
     * @return
     */
    List<UpkeepStatisVO> findStatisUpkeepAll(@Param("vo") StatisParamVO vo,
                                             @Param("listProjectIds") List<String> listProjectIds);

    /**
     * 保养统计 并 附带车牌
     * @param vo
     * @return
     */
    List<UpkeepStatisVO> findStatisUpkeepAndPlateNumberAll(@Param("vo") StatisParamVO vo,
                                                           @Param("listProjectIds") List<String> listProjectIds);

    /**
     * 保养统计 并 附带车牌 项目以车辆为主
     * @param vo
     * @return
     */
    List<UpkeepStatisVO> findStatisUpkeepAndPlateNumberAllHis(@Param("vo") StatisParamVO vo,
                                                           @Param("listProjectIds") List<String> listProjectIds);

    /**
     * 保养统计 并 附带车牌 根据车辆及时间统计
     * @param vo
     * @return
     */
    List<UpkeepStatisVO> findStatisUpkeepAndPlateNumber(@Param("vo") StatisParamVO vo);

    /**
     * 保养根据项目统计
     * @param vo
     * @return
     */
    List<UpkeepStatisVO> findStatisUpkeepAllGroupByProject(@Param("vo") StatisParamVO vo);
}
