package com.rj.service;

import com.rj.entity.CustomerManagementStatistics;
import com.baomidou.mybatisplus.extension.service.IService;

import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 客户统计表 服务类
 * </p>
 *
 * @author 李中华 ,spllzh
 * @since 2025-08-07
 */
public interface ICustomerManagementStatisticsService extends IService<CustomerManagementStatistics> {

    /**
     * 生成指定日期的客户统计数据
     * @param date 统计日期
     * @return 生成的统计记录数量
     */
    int generateStatisticsByDate(LocalDate date);

    /**
     * 生成昨天的客户统计数据
     * @return 生成的统计记录数量
     */
    int generateYesterdayStatistics();

    /**
     * 查询指定日期范围的统计数据
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计记录列表
     */
    List<CustomerManagementStatistics> getStatisticsByDateRange(LocalDate startDate, LocalDate endDate);

    /**
     * 查询指定经销商的统计数据
     * @param dealershipId 经销商ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计记录列表
     */
    List<CustomerManagementStatistics> getStatisticsByDealership(String dealershipId, LocalDate startDate, LocalDate endDate);

    /**
     * 查询指定销售的统计数据
     * @param salesId 销售ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计记录列表
     */
    List<CustomerManagementStatistics> getStatisticsBySales(String salesId, LocalDate startDate, LocalDate endDate);

    /**
     * 查询指定销售的统计数据（支持根据ID或电话号码查询）
     * @param salesId 销售ID（可选）
     * @param salesPhone 销售电话号码（可选）
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 统计记录列表
     */
    List<CustomerManagementStatistics> getStatisticsBySales(String salesId, String salesPhone, LocalDate startDate, LocalDate endDate);
}

