package com.sundot.airport.blocked.service;

import com.sundot.airport.blocked.dto.BlockedAreaDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedBrigadeCertificateDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedBrigadeRateStatsDTO;
import com.sundot.airport.blocked.dto.BlockedBrigadeStatsDTO;
import com.sundot.airport.blocked.dto.BlockedCertificateDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedDailyBrigadeLuggageStatsDTO;
import com.sundot.airport.blocked.dto.BlockedDailyBrigadeRateStatsDTO;
import com.sundot.airport.blocked.dto.BlockedDailyBrigadeStatsDTO;
import com.sundot.airport.blocked.dto.BlockedDailyLuggageStatsDTO;
import com.sundot.airport.blocked.dto.BlockedDailyRateStatsDTO;
import com.sundot.airport.blocked.dto.BlockedDailyStatsDTO;
import com.sundot.airport.blocked.dto.BlockedDashboardQueryDTO;
import com.sundot.airport.blocked.dto.BlockedDashboardResultDTO;
import com.sundot.airport.blocked.dto.BlockedDifficultyDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedDiscriminationDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedItemDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedItemLocationDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedMissCheckReasonDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedOperatingYearsDistributionDTO;
import com.sundot.airport.blocked.dto.BlockedRankingDTO;
import com.sundot.airport.blocked.dto.BlockedRateResultDTO;
import com.sundot.airport.blocked.dto.BlockedTimePeriodStatsDTO;

import java.util.List;

/**
 * 查堵大屏Service接口
 * 
 * @author wangxx
 * @date 2026-04-15
 */
public interface IBlockedDashboardService {

    /**
     * 查询查堵总数
     *
     * @param queryDTO 查询参数
     * @return 查堵统计结果
     */
    BlockedDashboardResultDTO getBlockedTotalCount(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询各大队查堵总数(用于柱状图)
     *
     * @param queryDTO 查询参数
     * @return 各大队查堵统计列表
     */
    List<BlockedBrigadeStatsDTO> getBlockedCountByBrigade(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询总查堵万分率(所有大队平均值)
     *
     * @param queryDTO 查询参数
     * @return 查堵万分率统计结果
     */
    BlockedRateResultDTO getTotalBlockedRate(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询各大队平均查堵万分率(用于条形图)
     *
     * @param queryDTO 查询参数
     * @return 各大队查堵万分率统计列表
     */
    List<BlockedBrigadeRateStatsDTO> getBlockedRateByBrigade(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询每日查堵合计件数(用于趋势图)
     *
     * @param queryDTO 查询参数
     * @return 每日查堵统计列表
     */
    List<BlockedDailyStatsDTO> getBlockedCountByDate(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询每日各大队查堵合计件数(用于大队对比表)
     *
     * @param queryDTO 查询参数
     * @return 每日各大队查堵统计列表
     */
    List<BlockedDailyBrigadeStatsDTO> getBlockedCountByDateAndBrigade(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询每日平均查堵万分率(用于趋势图)
     *
     * @param queryDTO 查询参数
     * @return 每日查堵万分率统计列表
     */
    List<BlockedDailyRateStatsDTO> getBlockedRateByDate(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询每日各大队平均查堵万分率(用于大队对比表)
     *
     * @param queryDTO 查询参数
     * @return 每日各大队查堵万分率统计列表
     */
    List<BlockedDailyBrigadeRateStatsDTO> getBlockedRateByDateAndBrigade(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询每日过检行李合计(用于趋势图)
     *
     * @param queryDTO 查询参数
     * @return 每日过检行李统计列表
     */
    List<BlockedDailyLuggageStatsDTO> getTotalLuggageCountByDate(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询每日各大队过检行李合计(用于大队对比表)
     *
     * @param queryDTO 查询参数
     * @return 每日各大队过检行李统计列表
     */
    List<BlockedDailyBrigadeLuggageStatsDTO> getTotalLuggageCountByDateAndBrigade(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵物品分布(用于扇形图)
     *
     * @param queryDTO 查询参数
     * @return 查堵物品分布统计列表
     */
    List<BlockedItemDistributionDTO> getItemDistribution(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询区域查堵数据分布(用于双轴图表)
     *
     * @param queryDTO 查询参数
     * @return 区域查堵数据分布统计
     */
    BlockedAreaDistributionDTO getAreaDistribution(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵类型分布(用于分组柱状图)
     *
     * @param queryDTO 查询参数
     * @return 查堵类型分布统计列表
     */
    List<BlockedDiscriminationDistributionDTO> getDiscriminationDistribution(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵时间段过检行李数及万分率(用于双轴图表)
     *
     * @param queryDTO 查询参数
     * @return 时间段统计列表
     */
    List<BlockedTimePeriodStatsDTO> getTimePeriodStats(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询每日过检行李数及万分率(用于双轴图表)
     *
     * @param queryDTO 查询参数
     * @return 每日统计列表
     */
    List<BlockedTimePeriodStatsDTO> getDailyLuggageAndRate(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-AI复查图像总数(用于双系列图表)
     *
     * @param queryDTO 查询参数
     * @return AI图像统计列表
     */
    List<BlockedDailyStatsDTO> getAiImageStats(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-AI漏判图像总数(用于单系列图表)
     *
     * @param queryDTO 查询参数
     * @return AI漏判图像统计列表
     */
    List<BlockedDailyStatsDTO> getAiMissImageStats(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-AI误判图像总数(用于单系列图表)
     *
     * @param queryDTO 查询参数
     * @return AI误判图像统计列表
     */
    List<BlockedDailyStatsDTO> getAiErrorImageStats(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-主管排行榜
     *
     * @param queryDTO 查询参数
     * @return 主管排行榜列表
     */
    List<BlockedRankingDTO> getSupervisorRanking(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-班组排行榜
     *
     * @param queryDTO 查询参数
     * @return 班组排行榜列表
     */
    List<BlockedRankingDTO> getTeamLeaderRanking(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-人员排行榜
     *
     * @param queryDTO 查询参数
     * @return 人员排行榜列表
     */
    List<BlockedRankingDTO> getReviewedUserRanking(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-物品位置分布(用于扇形图)
     *
     * @param queryDTO 查询参数
     * @return 物品位置分布统计列表
     */
    List<BlockedItemLocationDistributionDTO> getItemLocationDistribution(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-原因分类分布(用于扇形图)
     * 
     * @param queryDTO 查询参数
     * @return 原因分类分布统计列表
     */
    List<BlockedMissCheckReasonDistributionDTO> getMissCheckReasonDistribution(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-图像难易程度分布(用于扇形图)
     * 
     * @param queryDTO 查询参数
     * @return 难易程度分布统计列表
     */
    List<BlockedDifficultyDistributionDTO> getDifficultyDistribution(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询查堵-开机人员持证比例(用于扇形图)
     * 
     * @param queryDTO 查询参数
     * @return 证书级别分布统计列表
     */
    List<BlockedCertificateDistributionDTO> getCertificateDistribution(BlockedDashboardQueryDTO queryDTO);

    /**
     * 查询大队开机人员证书分布(用于柱状图)
     * 
     * @param queryDTO 查询参数
     * @return 大队证书分布统计列表
     */
    List<BlockedBrigadeCertificateDistributionDTO> getBrigadeCertificateDistribution(BlockedDashboardQueryDTO queryDTO);
}
