|
@@ -1,4 +1,12 @@
|
|
|
using Hotline.Orders;
|
|
|
+using Hotline.Settings;
|
|
|
+using Hotline.Share.Dtos.Knowledge;
|
|
|
+using Hotline.Share.Dtos;
|
|
|
+using Hotline.Share.Dtos.Order;
|
|
|
+using Hotline.Share.Enums.KnowledgeBase;
|
|
|
+using Hotline.Share.Enums.Order;
|
|
|
+using Microsoft.AspNetCore.Mvc;
|
|
|
+using SqlSugar;
|
|
|
|
|
|
namespace Hotline.Api.Controllers.Bi
|
|
|
{
|
|
@@ -9,5 +17,49 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
{
|
|
|
_orderRepository = orderRepository;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 部门数据统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("org_data_list")]
|
|
|
+ public async Task<PagedDto<OrderBiOrgDataListVo>> DataList([FromQuery] OrderBiOrgDataListDto 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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|