package com.sundot.airport.item.service;

import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
import com.sundot.airport.common.core.domain.SysUsageReportDto;
import com.sundot.airport.item.domain.*;

import java.util.List;

/**
 * 查获大屏Service接口
 *
 * @author ruoyi
 * @date 2025-07-25
 */
public interface ItemLargeScreenService {

    /**
     * 移交公安情况
     *
     * @param dto 大屏查询参数
     * @return 移交公安情况
     */
    public List<ItemLargeScreenInfoDto> police(BaseLargeScreenQueryParamDto dto);

    /**
     * 故意隐匿情况
     *
     * @param dto 大屏查询参数
     * @return 故意隐匿情况
     */
    public List<ItemLargeScreenInfoDto> conceal(BaseLargeScreenQueryParamDto dto);

    /**
     * 查获类别分布
     *
     * @param dto 大屏查询参数
     * @return 查获类别分布
     */
    public List<ItemLargeScreenCommonDto> category(BaseLargeScreenQueryParamDto dto);

    /**
     * 查获岗位分布
     *
     * @param dto 大屏查询参数
     * @return 查获岗位分布
     */
    public List<ItemLargeScreenCommonDto> post(BaseLargeScreenQueryParamDto dto);

    /**
     * 查获总数量+移交公安数量+故意隐匿数量
     *
     * @param dto 大屏查询参数
     * @return 查获总数量+移交公安数量+故意隐匿数量
     */
    public ItemLargeScreenTotalSomeDto getTotalSome(BaseLargeScreenQueryParamDto dto);

    /**
     * app端查获总数量+移交公安数量+故意隐匿数量
     *
     * @param dto 大屏查询参数
     * @return 查获总数量+移交公安数量+故意隐匿数量
     */
    ItemLargeScreenTotalSomeDto getAppTotalSome(BaseLargeScreenQueryParamDto dto);

    /**
     * pc端查获总数量+移交公安数量+故意隐匿数量
     *
     * @param dto 大屏查询参数
     * @return 查获总数量+移交公安数量+故意隐匿数量
     */
    ItemLargeScreenTotalSomeDto getPcTotalSome(BaseLargeScreenQueryParamDto dto);

    /**
     * 查获排名
     *
     * @param dto  大屏查询参数
     * @param type 类型:1=按科室;2=按班组;3=按个人;4=按大队
     * @return 查获排名
     */
    public List<ItemLargeScreenCommonDto> rank(BaseLargeScreenQueryParamDto dto, int type);

    /**
     * 查获时段分布
     *
     * @param dto 大屏查询参数
     * @return 查获时段分布
     */
    public List<ItemLargeScreenTimeSpanDto> timeSpan(BaseLargeScreenQueryParamDto dto);

    /**
     * app端查获时段分布
     *
     * @param dto
     * @return
     */
    List<ItemLargeScreenTimeSpanDto> appTimeSpan(BaseLargeScreenQueryParamDto dto);

    /**
     * 查获位置分布
     *
     * @param dto 大屏查询参数
     * @return 查获位置分布
     */
    public List<ItemLargeScreenPositionDto> position(BaseLargeScreenQueryParamDto dto);

    /**
     * app端 查获位置分布
     *
     * @param dto
     * @return
     */
    List<ItemLargeScreenPositionAppDto> appPosition(BaseLargeScreenQueryParamDto dto);

    /**
     * 查获通道分布
     *
     * @param dto 大屏查询参数
     * @return 查获通道分布
     */
    public List<ItemLargeScreenChannelDto> channel(BaseLargeScreenQueryParamDto dto);

    /**
     * 使用报表-运行情况-查获模块
     *
     * @param dto 大屏查询参数
     * @return 使用报表-运行情况-查获模块
     */
    public SysUsageReportDto.SeizureModule getSeizureModule(BaseLargeScreenQueryParamDto dto);

    /**
     * 移交公安数据统计（查获总数 + 大队排名）
     *
     * @param dto 大屏查询参数
     * @return 移交公安数据统计
     */
    public ItemLargeScreenPoliceStatsDto getPoliceStats(BaseLargeScreenQueryParamDto dto);

    /**
     * X 光机漏检数据
     *
     * @param dto 大屏查询参数
     * @return X 光机漏检数据
     */
    public List<ItemXRayMissCheckDto> xRayMissCheck(BaseLargeScreenQueryParamDto dto);

    /**
     * X 光机漏检人员统计 TOP3
     *
     * @param dto 大屏查询参数
     * @return X 光机漏检人员统计 TOP3
     */
    public List<ItemXRayMissCheckUserStatsDto> xRayMissCheckUserStatsTop3(BaseLargeScreenQueryParamDto dto);

    /**
     * 异常查获数据
     *
     * @param dto 大屏查询参数
     * @return 异常查获数据
     */
    public List<ItemAbnormalSeizureDto> getAbnormalSeizureData(BaseLargeScreenQueryParamDto dto);

    /**
     * 异常查获数据 TOP3（3 个高于 +3 个低于）
     *
     * @param dto 大屏查询参数
     * @return 异常查获数据 TOP3
     */
    public ItemAbnormalSeizureRankDto getAbnormalSeizureDataTop3(BaseLargeScreenQueryParamDto dto);

}
