using Hotline.Share.Dtos; using Hotline.Share.Dtos.Snapshot; using Microsoft.AspNetCore.Mvc; using Hotline.Repository.SqlSugar.Extensions; using Hotline.Share.Tools; using Hotline.Settings.Hotspots; using Hotline.Share.Requests; using SqlSugar; using XF.Domain.Authentications; using Hotline.Settings; using Hotline.Caching.Interfaces; using Hotline.Share.Enums.Order; using Hotline.Share.Enums.Snapshot; using XF.Utility.EnumExtensions; using Amazon.Runtime.Internal.Util; using System.Collections; using Mapster; using Hotline.Share.Dtos.Settings; using XF.Domain.Repository; using Hotline.Configurations; using Microsoft.Extensions.Options; using Hotline.Snapshot.IRepository; using Hotline.Application.Snapshot.Contracts; namespace Hotline.Api.Controllers.Snapshot; /// /// 随手拍统计 /// public class BiSnapshotController : BaseController { private readonly IBiSnapshotApplication _biSnapshotApplication; private readonly IIndustryRepository _industryRepository; private readonly ISystemDicDataCacheManager _systemDicDataCacheManager; private readonly IRepository _areaRepository; private readonly IOptionsSnapshot _appOptions; public BiSnapshotController(IBiSnapshotApplication biSnapshotApplication, IIndustryRepository industryRepository, ISystemDicDataCacheManager systemDicDataCacheManager, IRepository areaRepository, IOptionsSnapshot appOptions) { _biSnapshotApplication = biSnapshotApplication; _industryRepository = industryRepository; _systemDicDataCacheManager = systemDicDataCacheManager; _areaRepository = areaRepository; _appOptions = appOptions; } /// /// 随手拍统计基础数据 /// /// [HttpGet("statistics/basedata")] public async Task> GetSnapshotStatisticsBaseDataAsync() { return new Dictionary() { { "industry", await _industryRepository.GetDataBaseAsync() } }; } /// /// 随手拍统计 /// /// [HttpGet("statistics")] public async Task GetSnapshotStatisticsAsync([FromQuery] SnapshotStatisticsInDto dto) => await _biSnapshotApplication.GetSnapshotStatisticsAsync(dto, HttpContext.RequestAborted); /// /// 随手拍统计详情集合 /// /// /// [HttpGet("statistics/details")] public async Task> GetSnapshotStatisticsDetailAsync([FromQuery] SnapshotStatisticsDetailInDto dto) => (await _biSnapshotApplication.GetSnapshotStatisticsDetail(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 市民红包审核统计 /// /// /// [HttpGet("redpack/audit")] public IList GetRedPackAuditStatisticsAsync([FromQuery] RedPackStatisticsInDto dto) => _biSnapshotApplication.GetRedPackAuditStatistics(dto); /// /// 市民红包审核统计详情 /// /// /// [HttpGet("redpack/audit/details")] public async Task> GetRedPackAuditStatisticsDetailsAsync([FromQuery] RedPackStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetRedPackAuditStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 热点类型小类统计 /// /// /// [HttpGet("hotspot-statistics")] public async Task> GetHotspotStatisticsAsync([FromQuery] HotspotStatisticsInDto dto) => await _biSnapshotApplication.GetHotspotStatistics(dto).ToListAsync(); /// /// 热点类型小类统计明细 /// /// /// [HttpGet("hotspot-statistics-detail")] public async Task> GetHotspotStatisticsDetailAsync([FromQuery] HotspotStatisticsDetailsInDto dto) => (await _biSnapshotApplication.HotspotStatisticsDetail(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 热点类型-随手拍 /// /// /// [HttpGet("hotspot-data-statistics")] public async Task> GetHotspotDataStatisticsAsync([FromQuery] HotspotDataStatisticsInDto dto) { var items = await _biSnapshotApplication.GetHotspotDataStatisticsAsync(dto).ToListAsync(); if (items.Count != 0) { items.Add(new HotspotDataStatisticsOutDto { Name = "合计", OrderCount = items.Sum(x => x.OrderCount), }); } return items; } /// /// 办件统计-随手拍 /// /// /// [HttpGet("processing-statistics")] public async Task> GetSnapshotProcessingStatistics([FromQuery] SnapshotProcessingStatisticsInDto dto) => await _biSnapshotApplication.GetSnapshotProcessingStatistics(dto).ToListAsync(); /// /// 办件统计明细-随手拍 /// /// /// [HttpGet("processing-statistics-detail")] public async Task> GetSnapshotProcessingStatisticsDetails([FromQuery] SnapshotProcessingStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetSnapshotProcessingStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 网格员办理情况统计 /// /// /// [HttpGet("guider-work-statistics")] public async Task> GetGuiderWorkStatisticsAsync([FromQuery] GuiderWorkStatisticsInDto dto) => await _biSnapshotApplication.GetGuiderWorkStatisticsAsync(dto).ToListAsync(); /// /// 网格员办理情况统计详情 /// /// /// [HttpGet("guider-work-statistics-detail")] public async Task> GetGuiderWorkStatisticsDetailsAsync([FromQuery] GuiderWorkStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetGuiderWorkStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 网格员系统工单状态日志基础数据 /// /// [HttpGet("guider-work-log/basedata")] public async Task> GetGuiderWorkLogsAsyncBasedataAsync() { return new Dictionary { { "orderStatus", EnumExts.GetDescriptions()}, }; } /// /// 网格员系统工单状态日志 /// /// /// [HttpGet("guider-work-log")] public async Task> GetGuiderWorkLogsAsync([FromQuery] GuiderWorkLogsInDto dto) => (await _biSnapshotApplication.GetGuiderWorkLogs(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 重复件-随手拍 /// /// /// [HttpGet("duplicate")] public async Task> GetDuplicateItemsAsync([FromQuery] DuplicateItemsInDto dto) => (await _biSnapshotApplication.GetDuplicateItems(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 社区统计 /// /// /// [HttpGet("community-statistics")] public async Task> GetCommunityStatisticsAsync([FromQuery] CommunityStatisticsInDto dto) => await _biSnapshotApplication.GetCommunityStatistics(dto).ToListAsync(); /// /// 社区统计-详情 /// /// /// [HttpGet("community-statistics-detail")] public async Task> GetCommunityStatisticsDetailsAsync([FromQuery] CommunityStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetCommunityStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 随手拍区域统计 /// /// /// [HttpGet("county-redpack-statistics")] public async Task> GetCountyRedPackStatisticsAsync([FromQuery] CountyRedPackStatisticsInDto dto) => await _biSnapshotApplication.GetCountyRedPackStatistics(dto).ToListAsync(); /// /// 部门考核统计-随手拍 /// /// /// [HttpGet("department-statistics")] public async Task> GetSnapshotDepartmentStatisticsAsync([FromQuery] SnapshotDepartmentStatisticsInDto dto) => await _biSnapshotApplication.GetSnapshotDepartmentStatistics(dto).ToListAsync(); /// /// 部门平均办理时间-随手拍 /// /// /// [HttpGet("department-avetime-statistics")] public async Task> GetSnapshotDepartmentAveTimeStatisticsAsync([FromQuery] SnapshotDepartmentAveTimeStatisticsInDto dto) => await _biSnapshotApplication.GetSnapshotDepartmentAveTimeStatistics(dto).ToListAsync(); /// /// 部门平均办理时间-随手拍-详情 /// /// /// [HttpGet("department-avetime-statistics-detail")] public async Task> GetSnapshotDepartmentAveTimeStatisticsDtailsAsync([FromQuery] SnapshotDepartmentAveTimeStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetSnapshotDepartmentAveTimeStatisticsDtails(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 检查合规统计 /// /// /// [HttpGet("compliant-statistics")] public async Task> CompliantStatisticsAsync([FromQuery] CompliantStatisticsInDto dto) { var items = await _biSnapshotApplication.GetCompliantStatistics(dto).ToListAsync(); items.AddSumLine("OrgName"); return items; } /// /// 行业统计 /// /// /// [HttpGet("industry-statistics")] public async Task GetIndustryStatisticsAsync([FromQuery] IndustryStatisticsInDto dto) { var areaCode = _appOptions.Value.AreaCode; return new IndustryStatisticsOutDto { Headers = await _areaRepository.Queryable().Where(m => m.ParentId == areaCode).Select(m => new SystemDicDataOutDto { Id = m.Id, DicDataName = m.AreaName, DicDataValue = m.AreaName, }).ToListAsync(), Data = _biSnapshotApplication.GetIndustryStatistics(dto) }; } /// /// 行业统计详情 /// /// /// [HttpGet("industry-statistics-detail")] public async Task> GetIndustryStatisticsDetailsAsync([FromQuery] IndustryStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetIndustryStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 检查合规统计-详情 /// /// /// [HttpGet("compliant-statistics-detail")] public async Task> CompliantStatisticsDetailsAsync([FromQuery] CompliantStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetCompliantStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 重办统计-随手拍 /// /// /// [HttpGet("re_transact-statistics")] public async Task GetReTransactStatisticsAsync([FromQuery] ReTransactStatisticsInDto dto) { var headers = _systemDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.InstaShotSpecialReason).Adapt>(); return new ReTransactStatisticsOutDto { Headers = headers, Data = _biSnapshotApplication.GetReTransactStatistics(dto) }; } /// /// 重办统计详情-随手拍 /// /// /// [HttpGet("re_transact-statistics-detail")] public async Task> GetReTransactStatisticsDetailAsync([FromQuery] ReTransactStatisticsDetailsInDto dto) => (await _biSnapshotApplication.GetReTransactStatisticsDetail(dto).ToPagedListAsync(dto)).ToPaged(); /// /// 随手拍区域积分统计 /// /// /// [HttpGet("county_points")] public async Task> GetAreaPointsStatistics([FromQuery] SnapshotCountyPointsStatisticsInDto dto) => await _biSnapshotApplication.GetAreaPointsStatistics(dto).ToListAsync(HttpContext.RequestAborted); }