package com.hotwj.platform.config.vehicleThreeInspect.mapper;

import com.hotwj.platform.config.vehicleThreeInspect.domain.HotVehicleThreeInspect;
import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeInspectBo;
import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeInspectVehicleQueryBo;
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectProcessVo;
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectPrintVo;
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectReceivedVehicleVo;
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectUnreceivedVehicleVo;
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;

import java.util.List;

/**
 * 车辆三检Mapper接口
 *
 * @author shihongwei
 * @date 2025-12-29
 */
@Mapper
public interface HotVehicleThreeInspectMapper extends BaseMapperPlus<HotVehicleThreeInspect, HotVehicleThreeInspectVo> {

    /**
     * 查询车辆三检打印列表
     *
     * @param bo 查询条件
     * @return 车辆三检打印列表
     */
    List<HotVehicleThreeInspectPrintVo> selectPrintList(@Param("bo") HotVehicleThreeInspectBo bo);

    /**
     * 分页查询车辆三检流程列表
     *
     * @param page 分页参数
     * @param bo   查询条件
     * @return 流程分页列表
     */
    Page<HotVehicleThreeInspectProcessVo> queryProcessPageList(
            Page<HotVehicleThreeInspectProcessVo> page,
            @Param("bo") HotVehicleThreeInspectBo bo
    );

    /**
     * 查询所有三检未收车的车辆列表
     *
     * @param bo 查询条件
     * @return 未收车车辆列表
     */
    List<HotVehicleThreeInspectUnreceivedVehicleVo> queryUnreceivedVehicles(@Param("bo") HotVehicleThreeInspectVehicleQueryBo bo);

    /**
     * 查询所有三检已收车的车辆列表
     *
     * @param bo 查询条件
     * @return 已收车车辆列表
     */
    List<HotVehicleThreeInspectReceivedVehicleVo> queryReceivedVehicles(@Param("bo") HotVehicleThreeInspectVehicleQueryBo bo);

}
