Dun.Jason 1 year ago
parent
commit
96a6c32b32

+ 33 - 8
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -28,16 +28,18 @@ namespace Hotline.Api.Controllers.Bi
         private readonly IMapper _mapper;
         private readonly IRepository<WorkflowCountersign> _workflowCountersignRepository;
         private readonly IRepository<OrderSpecial> _orderSpecialRepository;
+		private readonly IRepository<OrderVisit> _orderVisitRepository;
 
 		public BiOrderController(
-            IOrderRepository orderRepository,
-            IRepository<Hotspot> hotspotTypeRepository,
-            ISystemDicDataCacheManager sysDicDataCacheManager,
-            IRepository<OrderVisitDetail> orderVisitDetailRepository,
-            IRepository<OrderDelay> orderDelayRepository,
-            IRepository<WorkflowCountersign> workflowCountersignRepository,
-            IRepository<OrderSpecial> orderSpecialRepository,
-			IMapper mapper
+			IOrderRepository orderRepository,
+			IRepository<Hotspot> hotspotTypeRepository,
+			ISystemDicDataCacheManager sysDicDataCacheManager,
+			IRepository<OrderVisitDetail> orderVisitDetailRepository,
+			IRepository<OrderDelay> orderDelayRepository,
+			IRepository<WorkflowCountersign> workflowCountersignRepository,
+			IRepository<OrderSpecial> orderSpecialRepository,
+			IMapper mapper,
+			IRepository<OrderVisit> orderVisitRepository
             )
         {
             _orderRepository = orderRepository;
@@ -48,6 +50,7 @@ namespace Hotline.Api.Controllers.Bi
             _workflowCountersignRepository = workflowCountersignRepository;
             _orderSpecialRepository = orderSpecialRepository;
 			_mapper = mapper;
+			_orderVisitRepository = orderVisitRepository;
         }
 
         /// <summary>
@@ -564,6 +567,28 @@ namespace Hotline.Api.Controllers.Bi
             return await _orderRepository.HotPortJoinOrgStatistics(dto.StartTime, dto.EndTime);
         }
 
+		/// <summary>
+		/// 回访量统计
+		/// </summary>
+		/// <returns></returns>
+		[HttpGet("visit-measure-statistics")]
+		public async Task<List<VisitMeasureStatisticsDto>> VisitMeasureStatistics(DateTime StartDate,DateTime EndDate,string? VisitName)
+		{
+			EndDate = EndDate.AddDays(1).AddSeconds(-1);
+			var list = await _orderVisitRepository.Queryable()
+				.Includes(x => x.Employee)
+				.Where(x => x.VisitTime >= StartDate && x.VisitTime <= EndDate && x.VisitState == EVisitState.Visited)
+				.WhereIF(!string.IsNullOrEmpty(VisitName),x=>x.Employee.Name.Contains(VisitName))
+				.GroupBy(x=> new { x.EmployeeId,x.Employee.Name })
+				.Select(x=> new VisitMeasureStatisticsDto()
+                { 
+					VisitName = x.Employee.Name,
+					AiVisitCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.VisitType== EVisitType.ChipVoiceVisit,1,0)),
+                    ArtificialVisitCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.VisitType == EVisitType.ArtificialVisit,1,0))
+                })
+				.ToListAsync();
+			return list;
+        }
 
     }
 }

+ 9 - 0
src/Hotline.Share/Dtos/Order/OrderBiDto.cs

@@ -171,4 +171,13 @@ namespace Hotline.Share.Dtos.Order
 		public int ExaminingTotal { get; set; }
 
     }
+
+	public class VisitMeasureStatisticsDto
+	{
+		public string VisitName { get; set; }
+
+		public int AiVisitCount { get; set; }
+
+		public int ArtificialVisitCount { get; set; }
+    }
 }