田爽 há 1 ano atrás
pai
commit
a685017965

+ 51 - 3
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -7,13 +7,15 @@ using Hotline.Share.Enums.KnowledgeBase;
 using Hotline.Share.Enums.Order;
 using Microsoft.AspNetCore.Mvc;
 using SqlSugar;
+using Hotline.Share.Requests;
+using Hotline.Users;
 
 namespace Hotline.Api.Controllers.Bi
 {
 	public class BiOrderController : BaseController
 	{
 		private readonly IOrderRepository _orderRepository;
-		public BiOrderController(IOrderRepository orderRepository) 
+		public BiOrderController(IOrderRepository orderRepository)
 		{
 			_orderRepository = orderRepository;
 		}
@@ -24,7 +26,7 @@ namespace Hotline.Api.Controllers.Bi
 		/// <param name="dto"></param>
 		/// <returns></returns>
 		[HttpGet("org_data_list")]
-		public async Task<PagedDto<OrderBiOrgDataListVo>> DataList([FromQuery] OrderBiOrgDataListDto dto)
+		public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
 		{
 			//TODO 会签统计待处理 目前缺少关联关系
 			var total = 0;
@@ -38,7 +40,7 @@ namespace Hotline.Api.Controllers.Bi
 				{
 					OrgName = o.Name,
 					OrgId = x.ActualHandleOrgCode,
-					HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status > 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
+					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))
@@ -61,5 +63,51 @@ namespace Hotline.Api.Controllers.Bi
 			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("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);
+		}
 	}
 }

+ 1 - 1
src/Hotline.Api/Controllers/OrderController.cs

@@ -1814,7 +1814,7 @@ public class OrderController : BaseController
         var dto = _mapper.Map<OrderDto>(order!);
 
         var files = await _fileRepository.Queryable()
-            .Where(x => x.Key == dto.Id && x.Classify == "理上传" && string.IsNullOrEmpty(x.FlowKey)).ToListAsync();
+            .Where(x => x.Key == dto.Id && x.Classify == "理上传" && string.IsNullOrEmpty(x.FlowKey)).ToListAsync();
         dto.Files = _mapper.Map<List<FileDto>>(files);
 
         var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == order.CallId).FirstAsync();

+ 16 - 21
src/Hotline.Share/Dtos/Order/OrderBiDto.cs

@@ -21,27 +21,22 @@ namespace Hotline.Share.Dtos.Order
 		public int Subtotal => HandlerExtendedNum + CounterHandlerExtendedNum + NoHandlerExtendedNum + CounterNoHandlerExtendedNum;
 	}
 
-
-	public record OrderBiOrgDataListDto: PagedKeywordRequest
+	public class OrderBiCentreDataListVo
 	{
-		/// <summary>
-		/// 开始时间
-		/// </summary>
-		public DateTime? CreationTimeStart { get; set; }
-
-		/// <summary>
-		/// 结束时间
-		/// </summary>
-		public DateTime? CreationTimeEnd { get; set; }
-
-		/// <summary>
-		/// 排序字段 
-		/// </summary>
-		public string SortField { get; set; }
-
-		/// <summary>
-		/// 排序规则  0 升序  1 降序
-		/// </summary>
-		public int SortRule { get; set; }
+		public string UserName { get; set; }
+
+		public string UserId { get; set; }
+
+		public int CentreArchive { get; set; }
+
+		public int CentreCareOf { get; set; }
+
+		public int NoCentreCareOf { get; set; }
+
+		public int Invalid { get; set; }
+
+		public int Repeat { get; set; }
+
+		public int Subtotal => CentreArchive + CentreCareOf + NoCentreCareOf + Invalid + Repeat;
 	}
 }

+ 24 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -3,4 +3,28 @@
 public record PagedKeywordRequest : PagedRequest
 {
     public string? Keyword { get; set; }
+}
+
+public record ReportPagedRequest : PagedKeywordRequest 
+{
+
+	/// <summary>
+	/// 开始时间
+	/// </summary>
+	public DateTime? CreationTimeStart { get; set; }
+
+	/// <summary>
+	/// 结束时间
+	/// </summary>
+	public DateTime? CreationTimeEnd { get; set; }
+
+	/// <summary>
+	/// 排序字段 
+	/// </summary>
+	public string SortField { get; set; }
+
+	/// <summary>
+	/// 排序规则  0 升序  1 降序
+	/// </summary>
+	public int SortRule { get; set; }
 }