Dun.Jason 9 달 전
부모
커밋
53ac8117ba
2개의 변경된 파일70개의 추가작업 그리고 1개의 파일을 삭제
  1. 27 0
      src/Hotline.Api/Controllers/Bi/BiOrderController.cs
  2. 43 1
      src/Hotline.Share/Requests/PagedKeywordRequest.cs

+ 27 - 0
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -14,6 +14,7 @@ using Hotline.Share.Dtos.Ai;
 using Hotline.Share.Dtos.Bi;
 using Hotline.Share.Dtos.Bigscreen;
 using Hotline.Share.Dtos.CallCenter;
+using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.CallCenter;
 using Hotline.Share.Enums.FlowEngine;
@@ -3010,6 +3011,7 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("hotspot-area-statistics")]
         public async Task<object> HotspotAndAreaStatistics([FromQuery] HotspotAndAreaStatisticsReq dto)
         {
+
             var (areaList, returnList) = await _orderApplication.HotspotAndAreaStatistics(dto);
 
             return new { AreaList = areaList, Data = returnList };
@@ -3037,7 +3039,32 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("accepttype-statistics")]
         public async Task<List<AcceptTypeStatisticsDto>> AcceptTypeStatistics([FromQuery] AcceptTypeStatisticsReq dto)
         {
+            dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
+            var list = await _orderRepository.Queryable()
+                .Where(x => x.CreationTime >= dto.StartTime && x.CreationTime < dto.EndTime)
+                .GroupBy(x => x.AcceptType)
+                .Select(x => new AcceptTypeStatisticsDto
+                { 
+                    AcceptType = x.AcceptType,
+                    SumCount = SqlFunc.AggregateCount(x.AcceptType),
+                    CompletionCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status>= EOrderStatus.Filed,1,0)),
+                    VisitCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status == EOrderStatus.Visited,1,0))
+                }).ToListAsync();
+            int SumCount = list.Sum(x => x.SumCount);
+            list.Add(new AcceptTypeStatisticsDto()
+            {
+                 AcceptType="合计",
+                 SumCount = SumCount,
+                 CompletionCount = list.Sum(x=>x.CompletionCount),
+                 VisitCount = list.Sum(x=>x.VisitCount)
+            });
 
+            list.ForEach(x =>
+            {
+                x.SumCountRate = SumCount > 0 ? Math.Round((double)x.SumCount / (double)SumCount) : 0;
+            });
+
+            return list;
         }
 
 

+ 43 - 1
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -406,12 +406,54 @@ public class AcceptTypeStatisticsReq
 
     public DateTime EndTime { get; set; }
 
-
+    /// <summary>
+    /// 0:全部 ,1:市民,2:企业
+    /// </summary>
     public int TypeId { get; set; }
 
+    public string Gateway { get; set; }
+
     /// <summary>
     /// 导出列名
     /// </summary>
     public List<string> AddColumnName { get; set; } = new();
 
 }
+
+
+public class AcceptTypeStatisticsDto
+{
+    /// <summary>
+    /// 受理类型
+    /// </summary>
+    public string AcceptType { get; set; }
+    /// <summary>
+    /// 分类量
+    /// </summary>
+    public int SumCount { get; set; }
+
+    /// <summary>
+    /// 办结量
+    /// </summary>
+    public int CompletionCount { get; set; }
+
+    /// <summary>
+    /// 办结率
+    /// </summary>
+    public double CompletionRate => SumCount > 0 ? Math.Round((double)CompletionCount / (double)CompletionRate) : 0.000;
+
+    /// <summary>
+    /// 回访量
+    /// </summary>
+    public int VisitCount { get; set; }
+
+    /// <summary>
+    /// 回访率
+    /// </summary>
+    public double VisitRate => SumCount > 0 ? Math.Round((double)VisitCount / (double)SumCount) : 0;
+
+    /// <summary>
+    /// 占比
+    /// </summary>
+    public double SumCountRate { get; set; }
+}