package com.ruoyi.clock.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.clock.domain.ClockRecord;
import com.ruoyi.clock.domain.bo.ActivityClockRecordBo;
import com.ruoyi.clock.domain.bo.ActivityShopSaleBo;
import com.ruoyi.clock.domain.bo.AnalysisQueryBo;
import com.ruoyi.clock.domain.bo.SaleStatisticBo;
import com.ruoyi.clock.domain.vo.*;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.springframework.data.repository.query.Param;

import java.util.List;

/**
 * 打卡记录信息Mapper接口
 *
 * @author pengc
 * @date 2026-03-04
 */
public interface ClockRecordMapper extends BaseMapperPlus<ClockRecordMapper, ClockRecord, ClockRecordVo> {

    ClockStatisticRecordVo queryClockStatisticRecord(@Param("employeeId") Long employeeId);

    List<SaleStatisticRecordVo> querySaleStatisticRecordList(@Param("bo") SaleStatisticBo saleStatisticBo);

    MySaleStatisticRecordVo mySaleRank(@Param("bo") SaleStatisticBo saleStatisticBo);

    MyActivityStatisticVo myActivityStatistic(SaleStatisticBo saleStatisticBo);

    /**
     * 分页查询活动打卡记录列表
     */
    Page<ActivityClockRecordVo> queryActivityClockRecordPage(Page<ActivityClockRecordVo> page,
                                                              @Param("bo") ActivityClockRecordBo bo);


    Page<SaleStatisticRecordVo> querySaleStatisticRecordList(Page<ActivityClockRecordVo> page,@Param("bo") SaleStatisticBo saleStatisticBo);


    /**
     * 查询活动打卡统计（打卡人数 + 销售数量）
     */
    ActivityClockStatisticVo queryActivityClockStatistic(@Param("bo") ActivityClockRecordBo bo);

    /**
     * 分页查询活动店铺销量列表（销量活动 type=1）
     */
    Page<ActivityShopSaleVo> queryActivityShopSalePage(Page<ActivityShopSaleVo> page,
                                                        @Param("bo") ActivityShopSaleBo bo);

    /**
     * 查询仪表板统计数据
     */
    DashboardStatisticVo queryDashboardStatistic();

    /**
     * 查询昨日代理商活动参与人数排行
     */
    List<AgentRankVo> queryYesterdayAgentRank();

    /**
     * 查询昨日门店活动参与人数排行
     */
    List<ShopRankVo> queryYesterdayShopRank();

    /**
     * 查询统计分析概览数据
     */
    AnalysisOverviewVo queryAnalysisOverview();

    /**
     * 查询门店活跃度排行
     */
    List<ShopActivityRankVo> queryShopActivityRank(@Param("bo") AnalysisQueryBo bo);

    /**
     * 查询参与人数与销量趋势
     */
    List<TrendVo> queryTrend(@Param("bo") AnalysisQueryBo bo);

    /**
     * 查询月度参与人数与销量对比
     */
    List<MonthlyComparisonVo> queryMonthlyComparison(@Param("bo") AnalysisQueryBo bo);

    /**
     * 查询门店销量排行榜 TOP 6
     */
    List<ShopSalesRankVo> queryShopSalesRank();

}

