|
@@ -1,4 +1,5 @@
|
|
|
using Hotline.Orders;
|
|
|
+using Hotline.Repository.SqlSugar.Extensions;
|
|
|
using Hotline.Settings;
|
|
|
using Hotline.Share.Dtos.Knowledge;
|
|
|
using Hotline.Share.Dtos;
|
|
@@ -12,102 +13,101 @@ using Hotline.Users;
|
|
|
|
|
|
namespace Hotline.Api.Controllers.Bi
|
|
|
{
|
|
|
- public class BiOrderController : BaseController
|
|
|
- {
|
|
|
- private readonly IOrderRepository _orderRepository;
|
|
|
- public BiOrderController(IOrderRepository orderRepository)
|
|
|
- {
|
|
|
- _orderRepository = orderRepository;
|
|
|
- }
|
|
|
+ public class BiOrderController : BaseController
|
|
|
+ {
|
|
|
+ private readonly IOrderRepository _orderRepository;
|
|
|
+ public BiOrderController(IOrderRepository orderRepository)
|
|
|
+ {
|
|
|
+ _orderRepository = orderRepository;
|
|
|
+ }
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 部门数据统计
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("org_data_list")]
|
|
|
- public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
|
|
|
- {
|
|
|
- //TODO 会签统计待处理 目前缺少关联关系
|
|
|
- var total = 0;
|
|
|
- var query = _orderRepository.Queryable(false, false, false)
|
|
|
- .LeftJoin<SystemOrganize>((x, o) => x.ActualHandleOrgCode == o.Id)
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, (x, o) => x.CreationTime >= dto.CreationTimeStart)
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, (x, o) => x.CreationTime <= dto.CreationTimeEnd)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Keyword), (x, o) => o.Name.Contains(dto.Keyword!))
|
|
|
- .GroupBy((x, o) => new { x.ActualHandleOrgCode, o.Name })
|
|
|
- .Select((x, o) => new OrderBiOrgDataListVo
|
|
|
- {
|
|
|
- OrgName = o.Name,
|
|
|
- OrgId = x.ActualHandleOrgCode,
|
|
|
- HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status >= 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
|
|
|
- //CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsDeleted, 1, 0)),
|
|
|
- NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
|
|
|
- //CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status == EKnowledgeStatus.OnShelf, 1, 0))
|
|
|
- }).MergeTable();
|
|
|
- switch (dto.SortField)
|
|
|
- {
|
|
|
- case "handlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.HandlerExtendedNum) : query.OrderByDescending(x => x.HandlerExtendedNum);
|
|
|
- break;
|
|
|
- case "counterHandlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterHandlerExtendedNum) : query.OrderByDescending(x => x.CounterHandlerExtendedNum);
|
|
|
- break;
|
|
|
- case "noHandlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.NoHandlerExtendedNum) : query.OrderByDescending(x => x.NoHandlerExtendedNum);
|
|
|
- break;
|
|
|
- case "counterNoHandlerExtendedNum":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterNoHandlerExtendedNum) : query.OrderByDescending(x => x.CounterNoHandlerExtendedNum);
|
|
|
- break;
|
|
|
- }
|
|
|
- var items = query.ToPageList(dto.PageIndex, dto.PageSize, ref total);
|
|
|
- return new PagedDto<OrderBiOrgDataListVo>(total, items);
|
|
|
- }
|
|
|
+ /// <summary>
|
|
|
+ /// 部门数据统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("org_data_list")]
|
|
|
+ public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
|
|
|
+ {
|
|
|
+ //TODO 会签统计待处理 目前缺少关联关系
|
|
|
+ var query = _orderRepository.Queryable(false, false, false)
|
|
|
+ .LeftJoin<SystemOrganize>((x, o) => x.ActualHandleOrgCode == o.Id)
|
|
|
+ .WhereIF(dto.StartTime.HasValue, (x, o) => x.CreationTime >= dto.StartTime)
|
|
|
+ .WhereIF(dto.EndTime.HasValue, (x, o) => x.CreationTime <= dto.EndTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), (x, o) => o.Name.Contains(dto.Keyword!))
|
|
|
+ .GroupBy((x, o) => new { x.ActualHandleOrgCode, o.Name })
|
|
|
+ .Select((x, o) => new OrderBiOrgDataListVo
|
|
|
+ {
|
|
|
+ OrgName = o.Name,
|
|
|
+ OrgId = x.ActualHandleOrgCode,
|
|
|
+ HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status >= 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
|
|
|
+ //CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsDeleted, 1, 0)),
|
|
|
+ NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
|
|
|
+ //CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status == EKnowledgeStatus.OnShelf, 1, 0))
|
|
|
+ }).MergeTable();
|
|
|
+ switch (dto.SortField)
|
|
|
+ {
|
|
|
+ case "handlerExtendedNum":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.HandlerExtendedNum) : query.OrderByDescending(x => x.HandlerExtendedNum);
|
|
|
+ break;
|
|
|
+ case "counterHandlerExtendedNum":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterHandlerExtendedNum) : query.OrderByDescending(x => x.CounterHandlerExtendedNum);
|
|
|
+ break;
|
|
|
+ case "noHandlerExtendedNum":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.NoHandlerExtendedNum) : query.OrderByDescending(x => x.NoHandlerExtendedNum);
|
|
|
+ break;
|
|
|
+ case "counterNoHandlerExtendedNum":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.CounterNoHandlerExtendedNum) : query.OrderByDescending(x => x.CounterNoHandlerExtendedNum);
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 中心统计
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("centre_data_list")]
|
|
|
- public async Task<PagedDto<OrderBiCentreDataListVo>> CentreDataList([FromQuery] ReportPagedRequest dto)
|
|
|
- {
|
|
|
- var total = 0;
|
|
|
- var query = _orderRepository.Queryable(false, false, false)
|
|
|
- .WhereIF(dto.CreationTimeStart.HasValue, x=> x.CreationTime >= dto.CreationTimeStart)
|
|
|
- .WhereIF(dto.CreationTimeEnd.HasValue, x => x.CreationTime <= dto.CreationTimeEnd)
|
|
|
- //.WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => o.Name.Contains(dto.Keyword!))
|
|
|
- .GroupBy(x => new { x.AcceptorId,x.AcceptorName })
|
|
|
- .Select(x => new OrderBiCentreDataListVo
|
|
|
- {
|
|
|
- UserName = x.AcceptorName,
|
|
|
- UserId = x.AcceptorId,
|
|
|
- CentreArchive = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status >= 300 && x.ProcessType == EProcessType.Zhiban, 1, 0)),
|
|
|
- CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status >= 300 && x.ProcessType == EProcessType.Jiaoban, 1, 0)),
|
|
|
- //NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
|
|
|
- Invalid = SqlFunc.AggregateSum(SqlFunc.IIF(x.AcceptType == "无效", 1, 0)),
|
|
|
- Repeat = SqlFunc.AggregateSum(SqlFunc.IIF(x.DuplicateIds != null && x.DuplicateIds.Any(), 1, 0))
|
|
|
- }).MergeTable();
|
|
|
- switch (dto.SortField)
|
|
|
- {
|
|
|
- case "centreArchive":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.CentreArchive) : query.OrderByDescending(x => x.CentreArchive);
|
|
|
- break;
|
|
|
- case "centreCareOf":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.CentreCareOf) : query.OrderByDescending(x => x.CentreCareOf);
|
|
|
- break;
|
|
|
- case "noCentreCareOf":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.NoCentreCareOf) : query.OrderByDescending(x => x.NoCentreCareOf);
|
|
|
- break;
|
|
|
- case "invalid":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.Invalid) : query.OrderByDescending(x => x.Invalid);
|
|
|
- break;
|
|
|
- case "repeat":
|
|
|
- query = dto.SortRule == 0 ? query.OrderBy(x => x.Repeat) : query.OrderByDescending(x => x.Repeat);
|
|
|
- break;
|
|
|
- }
|
|
|
- var items = query.ToPageList(dto.PageIndex, dto.PageSize, ref total);
|
|
|
- return new PagedDto<OrderBiCentreDataListVo>(total, items);
|
|
|
- }
|
|
|
- }
|
|
|
+ var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<OrderBiOrgDataListVo>(total, items);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 中心统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("centre_data_list")]
|
|
|
+ public async Task<PagedDto<OrderBiCentreDataListVo>> CentreDataList([FromQuery] ReportPagedRequest dto)
|
|
|
+ {
|
|
|
+ var query = _orderRepository.Queryable(false, false, false)
|
|
|
+ .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
|
|
|
+ .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => o.Name.Contains(dto.Keyword!))
|
|
|
+ .GroupBy(x => new { x.AcceptorId, x.AcceptorName })
|
|
|
+ .Select(x => new OrderBiCentreDataListVo
|
|
|
+ {
|
|
|
+ UserName = x.AcceptorName,
|
|
|
+ UserId = x.AcceptorId,
|
|
|
+ CentreArchive = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status >= 300 && x.ProcessType == EProcessType.Zhiban, 1, 0)),
|
|
|
+ CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status >= 300 && x.ProcessType == EProcessType.Jiaoban, 1, 0)),
|
|
|
+ //NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
|
|
|
+ Invalid = SqlFunc.AggregateSum(SqlFunc.IIF(x.AcceptType == "无效", 1, 0)),
|
|
|
+ Repeat = SqlFunc.AggregateSum(SqlFunc.IIF(x.DuplicateIds != null && SqlFunc.JsonArrayLength(x.DuplicateIds) > 0, 1, 0))
|
|
|
+ }).MergeTable();
|
|
|
+ switch (dto.SortField)
|
|
|
+ {
|
|
|
+ case "centreArchive":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.CentreArchive) : query.OrderByDescending(x => x.CentreArchive);
|
|
|
+ break;
|
|
|
+ case "centreCareOf":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.CentreCareOf) : query.OrderByDescending(x => x.CentreCareOf);
|
|
|
+ break;
|
|
|
+ case "noCentreCareOf":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.NoCentreCareOf) : query.OrderByDescending(x => x.NoCentreCareOf);
|
|
|
+ break;
|
|
|
+ case "invalid":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Invalid) : query.OrderByDescending(x => x.Invalid);
|
|
|
+ break;
|
|
|
+ case "repeat":
|
|
|
+ query = dto.SortRule == 0 ? query.OrderBy(x => x.Repeat) : query.OrderByDescending(x => x.Repeat);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return new PagedDto<OrderBiCentreDataListVo>(total, items);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|