|
@@ -13,6 +13,8 @@ using Hotline.Share.Enums.Order;
|
|
|
using MapsterMapper;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
+using Org.BouncyCastle.Utilities;
|
|
|
+using Polly.Caching;
|
|
|
using SqlSugar;
|
|
|
using XF.Domain.Authentications;
|
|
|
using XF.Domain.Exceptions;
|
|
@@ -169,9 +171,8 @@ namespace Hotline.Api.Controllers
|
|
|
p.AreaName,
|
|
|
p.Id
|
|
|
})
|
|
|
- .OrderBy(p=>p.Id)
|
|
|
+ .OrderBy(p => p.Id)
|
|
|
.ToListAsync();
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -242,7 +243,6 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="AreaCode"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("event_classification_statistics")]
|
|
|
- [AllowAnonymous]
|
|
|
public async Task<object> GetEventClassificationStatisticsAsync(DateTime StartDate, DateTime EndDate, string Id, string AreaCode)
|
|
|
{
|
|
|
|
|
@@ -298,6 +298,28 @@ namespace Hotline.Api.Controllers
|
|
|
return new { List = items, Total = total, OrderCount = orderCount };
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 事项分类统计--明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("event_classification_statistics_order_list")]
|
|
|
+ public async Task<PagedDto<EnforcementOrderListDto>> GetEventClassificationStatisticsOrderListAsync([FromQuery] QueryEventClassificationStatisticsDto dto)
|
|
|
+ {
|
|
|
+ dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
|
|
|
+
|
|
|
+ var (total, items) = await _enforcementOrdersRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Where(d => d.Order.Id != null)
|
|
|
+ .Where(d => d.Order.CreationTime >= dto.StartDate && d.Order.CreationTime <= dto.EndDate)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.EventTypeId), d => d.EventTypeId == dto.EventTypeId)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.Order.AreaCode == dto.AreaCode)
|
|
|
+ .OrderByDescending(d => d.CreationTime)
|
|
|
+ .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 执法部门办件统计
|
|
|
/// </summary>
|
|
@@ -320,6 +342,7 @@ namespace Hotline.Api.Controllers
|
|
|
})
|
|
|
.Select(d => new
|
|
|
{
|
|
|
+ OrgCode = d.Order.OrgLevelOneCode,
|
|
|
OrgName = d.Order.OrgLevelOneName,
|
|
|
CountNum = SqlFunc.AggregateCount(d.Order.OrgLevelOneCode),
|
|
|
TheClueIsTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == true, 1, 0)),
|
|
@@ -332,7 +355,71 @@ namespace Hotline.Api.Controllers
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 区域受理排行
|
|
|
+ /// 执法部门办件统计---子级
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartDate"></param>
|
|
|
+ /// <param name="EndDate"></param>
|
|
|
+ /// <param name="OrgCode"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("enforcement_departmental_processing_statistics_child")]
|
|
|
+ public async Task<object> GetDepartmentalProcessingStatisticsAsync(DateTime StartDate, DateTime EndDate,string OrgCode)
|
|
|
+ {
|
|
|
+
|
|
|
+ EndDate = EndDate.AddDays(1).AddSeconds(-1);
|
|
|
+ if(string.IsNullOrEmpty(OrgCode))
|
|
|
+ throw UserFriendlyException.SameMessage("部门code不能为空!");
|
|
|
+
|
|
|
+ var data = await _enforcementOrdersRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Where(d => d.Order.Id != null)
|
|
|
+ .Where(d => d.Order.CreationTime >= StartDate && d.Order.CreationTime <= EndDate)
|
|
|
+ .Where(d => d.Order.ActualHandleOrgCode.StartsWith(OrgCode))
|
|
|
+ .GroupBy(d => new
|
|
|
+ {
|
|
|
+ OrgCode = d.Order.ActualHandleOrgCode,
|
|
|
+ OrgName = d.Order.ActualHandleOrgName
|
|
|
+ })
|
|
|
+ .Select(d => new
|
|
|
+ {
|
|
|
+ OrgCode = d.Order.ActualHandleOrgCode,
|
|
|
+ OrgName = d.Order.ActualHandleOrgName,
|
|
|
+ CountNum = SqlFunc.AggregateCount(d.Order.ActualHandleOrgCode),
|
|
|
+ TheClueIsTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == true, 1, 0)),
|
|
|
+ TheClueIsNotTrue = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == false, 1, 0)),
|
|
|
+ EnforcementOrder = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsEnforcementOrder, 1, 0)),
|
|
|
+
|
|
|
+ })
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 执法部门办件统计---明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("enforcement_departmental_processing_statistics_order_list")]
|
|
|
+ public async Task<PagedDto<EnforcementOrderListDto>> GetDepartmentalProcessingStatisticsOrderListAsync([FromQuery] QueryDepartmentalProcessingStatisticsDto dto)
|
|
|
+ {
|
|
|
+ dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
|
|
|
+
|
|
|
+ var (total, items) = await _enforcementOrdersRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Where(d => d.Order.Id != null)
|
|
|
+ .Where(d => d.Order.CreationTime >= dto.StartDate && d.Order.CreationTime <= dto.EndDate)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgCode), d => d.Order.OrgLevelOneCode == dto.OrgCode)
|
|
|
+ .WhereIF(dto.TheClueIsTrue==true, d => d.IsTheClueTrue == true)
|
|
|
+ .WhereIF(dto.TheClueIsNotTrue == true, d => d.IsTheClueTrue == false)
|
|
|
+ .WhereIF(dto.EnforcementOrder == true, d => d.IsEnforcementOrder == true)
|
|
|
+ .OrderByDescending(d => d.CreationTime)
|
|
|
+ .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 区域分类统计
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("regional_classification_statistics")]
|
|
@@ -366,6 +453,30 @@ namespace Hotline.Api.Controllers
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 区域分类统计---明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("regional_classification_statistics_order_list")]
|
|
|
+ public async Task<PagedDto<EnforcementOrderListDto>> GetRegionalClassificationStatisticsOrderListAsync([FromQuery] QueryRegionalClassificationStatisticsDto dto)
|
|
|
+ {
|
|
|
+ dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
|
|
|
+
|
|
|
+ var (total, items) = await _enforcementOrdersRepository.Queryable()
|
|
|
+ .Includes(x => x.Order)
|
|
|
+ .Where(d => d.Order.Id != null)
|
|
|
+ .Where(d => d.Order.CreationTime >= dto.StartDate && d.Order.CreationTime <= dto.EndDate)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.Order.AreaCode == dto.AreaCode)
|
|
|
+ .WhereIF(dto.TheClueIsTrue == true, d => d.IsTheClueTrue == true)
|
|
|
+ .WhereIF(dto.TheClueIsNotTrue == true, d => d.IsTheClueTrue == false)
|
|
|
+ .WhereIF(dto.EnforcementOrder == true, d => d.IsEnforcementOrder == true)
|
|
|
+ .OrderByDescending(d => d.CreationTime)
|
|
|
+ .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<EnforcementOrderListDto>(total, _mapper.Map<List<EnforcementOrderListDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 部门满意度统计
|
|
|
/// </summary>
|