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.projects.entity.TbVehicleCheck;
import com.gci.boot.modules.statis.vo.StatisParamVO;
import com.gci.boot.modules.statis.vo.ViolationRecordStatisVO;
import com.gci.boot.modules.vehicles.entity.TbViolationRecord;
import com.gci.boot.modules.vehicles.vo.VehicleProjectVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbViolationRecordMapper extends BaseMapper<TbViolationRecord> {

    /**
     * 获取车牌-项目-责任人列表
     * @return
     */
    List<VehicleProjectVO> queryVehicleProject();

    /**
     * 获取所有车牌列表
     * @return
     */
    List<VehicleProjectVO> queryAllVehicle();

    /**
     * 获取所有项目列表(cancelFlag 废弃状态 0-正常 1-废弃)
     * @return
     */
    List<VehicleProjectVO> queryProjects(@Param("cancelFlag") Integer cancelFlag, @Param("delFlag") Integer delFlag);

    /**
     * 获取车牌-项目(车牌没项目的返回其它)
     * @return
     */
    List<VehicleProjectVO> queryOtherVehicleProject();


    /**
     * 违章统计 按天 月 年
     * @param page
     * @param vo
     * @return
     */
    List<ViolationRecordStatisVO> findStatisViolationByDayMonthYear(Page page,
                                                                    @Param("vo") StatisParamVO vo);


    /**
     * 违章统计 按天 月 年
     * @param vo
     * @return
     */
    List<ViolationRecordStatisVO> findStatisViolationAll(@Param("vo") StatisParamVO vo);

    /**
     * 违章统计 按年
     * @param vo
     * @param listProjectIds
     * @return
     */
    List<ViolationRecordStatisVO> findStatisViolationAndPlateNumberAll(@Param("vo") StatisParamVO vo,@Param("listProjectIds") List<String> listProjectIds);

    /**
     * 违章统计 按年
     * @param vo
     * @param listProjectIds
     * @return
     */
    List<ViolationRecordStatisVO> findStatisViolationAndPlateNumberAllHis(@Param("vo") StatisParamVO vo,@Param("listProjectIds") List<String> listProjectIds);

	public List<TbVehicleCheck> getCheckViolationCount();

}
