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);
}