田爽 vor 1 Jahr
Ursprung
Commit
ce2864f64d
1 geänderte Dateien mit 37 neuen und 5 gelöschten Zeilen
  1. 37 5
      src/Hotline.Api/Controllers/Bi/BiOrderController.cs

+ 37 - 5
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -31,8 +31,8 @@ namespace Hotline.Api.Controllers.Bi
         private readonly IRepository<OrderVisitDetail> _orderVisitDetailRepository;
         private readonly IRepository<OrderDelay> _orderDelayRepository;
         private readonly IMapper _mapper;
-        private readonly ISystemOrganizeRepository _organizeRepository;
         private readonly IRepository<WorkflowCountersign> _workflowCountersignRepository;
+        private readonly IRepository<OrderSpecial> _orderSpecialRepository;
 
 		public BiOrderController(
             IOrderRepository orderRepository,
@@ -40,8 +40,8 @@ namespace Hotline.Api.Controllers.Bi
             ISystemDicDataCacheManager sysDicDataCacheManager,
             IRepository<OrderVisitDetail> orderVisitDetailRepository,
             IRepository<OrderDelay> orderDelayRepository,
-            ISystemOrganizeRepository organizeRepository,
             IRepository<WorkflowCountersign> workflowCountersignRepository,
+            IRepository<OrderSpecial> orderSpecialRepository,
 			IMapper mapper
             )
         {
@@ -50,8 +50,8 @@ namespace Hotline.Api.Controllers.Bi
             _sysDicDataCacheManager = sysDicDataCacheManager;
             _orderVisitDetailRepository = orderVisitDetailRepository;
             _orderDelayRepository = orderDelayRepository;
-            _organizeRepository = organizeRepository;
             _workflowCountersignRepository = workflowCountersignRepository;
+            _orderSpecialRepository = orderSpecialRepository;
 			_mapper = mapper;
         }
 
@@ -283,6 +283,38 @@ namespace Hotline.Api.Controllers.Bi
             return list;
         }
 
-
-    }
+		/// <summary>
+		/// 特提统计
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("special_data_list")]
+		public async Task<PagedDto<OrderBiSpecialListVo>> SpecialDataList([FromQuery] ReportPagedRequest dto)
+		{
+			var query = _orderSpecialRepository.Queryable()
+				.WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
+				.WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
+				.GroupBy(x => new { x.Cause })
+				.Select(x => new OrderBiSpecialListVo
+				{
+					Cause = x.Cause,
+					OrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
+					MaxSpecialTime = SqlFunc.AggregateMax(x.CreationTime),
+				}).MergeTable();
+			switch (dto.SortField)
+			{
+				case "cause":
+					query = dto.SortRule == 0 ? query.OrderBy(x => x.Cause) : query.OrderByDescending(x => x.Cause);
+					break;
+				case "orderNum":
+					query = dto.SortRule == 0 ? query.OrderBy(x => x.OrderNum) : query.OrderByDescending(x => x.OrderNum);
+					break;
+				case "maxSpecialTime":
+					query = dto.SortRule == 0 ? query.OrderBy(x => x.MaxSpecialTime) : query.OrderByDescending(x => x.MaxSpecialTime);
+					break;
+			}
+			var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
+			return new PagedDto<OrderBiSpecialListVo>(total, items);
+		}
+	}
 }