using Hotline.Share.Dtos;
using Hotline.Share.Dtos.Snapshot;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hotline.Application.Snapshot.Contracts;
public interface IBiSnapshotApplication
{
    /// <summary>
    /// 热点类型小统计
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<HotspotStatisticsOutDto> GetHotspotStatistics(HotspotStatisticsInDto dto);
    ISugarQueryable<HotspotStatisticsDetailsOutDto> HotspotStatisticsDetail(HotspotStatisticsDetailsInDto dto);
    IList<RedPackStatisticsOutDto> GetRedPackAuditStatistics(RedPackStatisticsInDto dto);
    ISugarQueryable<RedPackStatisticsDetailsOutDto> GetRedPackAuditStatisticsDetails(RedPackStatisticsDetailsInDto dto);
    Task<SnapshotStatisticsOutDto> GetSnapshotStatisticsAsync(SnapshotStatisticsInDto dto, CancellationToken token);
    ISugarQueryable<SnapshotStatisticsDetailOutDto> GetSnapshotStatisticsDetail(SnapshotStatisticsDetailInDto dto);

    /// <summary>
    /// 办件统计-随手拍
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotProcessingStatisticsOutDto> GetSnapshotProcessingStatistics(SnapshotProcessingStatisticsInDto dto);

    /// <summary>
    /// 办件统计明细-随手拍
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotProcessingStatisticsDetailsOutDto> GetSnapshotProcessingStatisticsDetails(SnapshotProcessingStatisticsDetailsInDto dto);

    /// <summary>
    /// 网格员办理情况统计
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<GuiderWorkStatisticsOutDto> GetGuiderWorkStatisticsAsync(GuiderWorkStatisticsInDto dto);

    ISugarQueryable<GuiderWorkStatisticsDetailsOutDto> GetGuiderWorkStatisticsDetails(GuiderWorkStatisticsDetailsInDto dto);
    ISugarQueryable<HotspotDataStatisticsOutDto> GetHotspotDataStatisticsAsync(HotspotDataStatisticsInDto dto);

    /// <summary>
    /// 网格员系统工单状态日志
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<GuiderWorkLogsOutDto> GetGuiderWorkLogs(GuiderWorkLogsInDto dto);
    ISugarQueryable<DuplicateItemsOutDto> GetDuplicateItems(DuplicateItemsInDto dto);
    ISugarQueryable<CommunityStatisticsOutDto> GetCommunityStatistics(CommunityStatisticsInDto dto);

    /// <summary>
    /// 社区统计-详情
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<CommunityStatisticsDetailsOutDto> GetCommunityStatisticsDetails(CommunityStatisticsDetailsInDto dto);

    /// <summary>
    /// 随手拍区域统计
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<CountyRedPackStatisticsOutDto> GetCountyRedPackStatistics(CountyRedPackStatisticsInDto dto);

    /// <summary>
    /// 部门考核统计-随手拍
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    /// <exception cref="NotImplementedException"></exception>
    ISugarQueryable<SnapshotDepartmentStatisticsOutDto> GetSnapshotDepartmentStatistics(SnapshotDepartmentStatisticsInDto dto);

    /// <summary>
    /// 部门平均办理时间-随手拍
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotDepartmentAveTimeStatisticsOutDto> GetSnapshotDepartmentAveTimeStatistics(SnapshotDepartmentAveTimeStatisticsInDto dto);

    ISugarQueryable<SnapshotDepartmentAveTimeStatisticsDetailsOutDto> GetSnapshotDepartmentAveTimeStatisticsDtails(SnapshotDepartmentAveTimeStatisticsDetailsInDto dto);

    /// <summary>
    /// 检查合规统计
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<CompliantStatisticsOutDto> GetCompliantStatistics(CompliantStatisticsInDto dto);

    ISugarQueryable<CompliantStatisticsDetailsOutDto> GetCompliantStatisticsDetails(CompliantStatisticsDetailsInDto dto);
    List<Dictionary<string, object>> GetReTransactStatistics(ReTransactStatisticsInDto dto);
    ISugarQueryable<ReTransactStatisticsDetailsOutDto> GetReTransactStatisticsDetail(ReTransactStatisticsDetailsInDto dto);

    /// <summary>
    /// 行业统计
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    List<Dictionary<string, object>> GetIndustryStatistics(IndustryStatisticsInDto dto);

    /// <summary>
    /// 行业统计详情
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<IndustryStatisticsDetailsOutDto> GetIndustryStatisticsDetails(IndustryStatisticsDetailsInDto dto);

    /// <summary>
    /// 区域积分统计
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotCountyPointsStatisticsOutDto> GetAreaPointsStatistics(SnapshotCountyPointsStatisticsInDto dto);
}
