package com.ruoyi.credit.mapper;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ruoyi.credit.domain.ValidationStatistics;

/**
 * 验证统计信息Mapper接口
 * 
 * @author ruoyi
 * @date 2025-01-12
 */
public interface ValidationStatisticsMapper 
{
    /**
     * 查询验证统计信息
     * 
     * @param statisticsId 验证统计信息主键
     * @return 验证统计信息
     */
    public ValidationStatistics selectValidationStatisticsById(Long statisticsId);

    /**
     * 根据日期查询验证统计信息
     * 
     * @param statisticsDate 统计日期
     * @return 验证统计信息
     */
    public ValidationStatistics selectValidationStatisticsByDate(Date statisticsDate);

    /**
     * 查询验证统计信息列表
     * 
     * @param validationStatistics 验证统计信息
     * @return 验证统计信息集合
     */
    public List<ValidationStatistics> selectValidationStatisticsList(ValidationStatistics validationStatistics);

    /**
     * 根据日期范围查询验证统计信息列表
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 验证统计信息集合
     */
    public List<ValidationStatistics> selectValidationStatisticsByDateRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 新增验证统计信息
     * 
     * @param validationStatistics 验证统计信息
     * @return 结果
     */
    public int insertValidationStatistics(ValidationStatistics validationStatistics);

    /**
     * 修改验证统计信息
     * 
     * @param validationStatistics 验证统计信息
     * @return 结果
     */
    public int updateValidationStatistics(ValidationStatistics validationStatistics);

    /**
     * 删除验证统计信息
     * 
     * @param statisticsId 验证统计信息主键
     * @return 结果
     */
    public int deleteValidationStatisticsById(Long statisticsId);

    /**
     * 批量删除验证统计信息
     * 
     * @param statisticsIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteValidationStatisticsByIds(Long[] statisticsIds);

    /**
     * 插入或更新验证统计信息（根据日期）
     * 
     * @param validationStatistics 验证统计信息
     * @return 结果
     */
    public int insertOrUpdateValidationStatistics(ValidationStatistics validationStatistics);

    /**
     * 获取最新的统计记录
     * 
     * @param limit 限制数量
     * @return 验证统计信息集合
     */
    public List<ValidationStatistics> selectLatestValidationStatistics(@Param("limit") int limit);
}