浏览代码

visitjudge

Dun.Jason 10 月之前
父节点
当前提交
194b49405d

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

@@ -906,7 +906,8 @@ public class OrderController : BaseController
             .WhereIF(dto.ActualHandleTimeEnd.HasValue, d => d.Order.ActualHandleTime <= dto.ActualHandleTimeEnd) //办结时间结束
             .WhereIF(dto.VisitTimeStart.HasValue, d => d.VisitTime >= dto.VisitTimeStart) //回访开始时间
             .WhereIF(dto.VisitTimeEnd.HasValue, d => d.VisitTime <= dto.VisitTimeEnd)
-            .WhereIF(dto.JudgeState==null,d=>d.JudgeState!= EJudgeState.Judging)
+            .WhereIF(dto.IsIng == true, d=>d.JudgeState == EJudgeState.Judging)
+            .WhereIF(dto.IsIng == false,d=>d.JudgeState != EJudgeState.Judging)
             .WhereIF(dto.JudgeState!=null,d=>d.JudgeState == dto.JudgeState)
             .WhereIF(dto.OrgJudge!=null,d=>d.OrgJudge == dto.OrgJudge)
             .WhereIF(dto.SeatJudge!=null,d=>d.SeatJudge == dto.SeatJudge)

+ 9 - 1
src/Hotline.Api/Realtimes/RealtimeMethods.cs

@@ -73,7 +73,15 @@
         #endregion
 
         #region 司法大屏
-        public static string EnforcementOrderHandlingDetail = "EnforcementOrderHandlingDetail"; 
+        public static string EnforcementOrderHandlingDetail = "EnforcementOrderHandlingDetail";
+        #endregion
+
+        #region 话务排队信息
+
+        public static string ToDayWaitNum = "ToDayWaitNum";
+
+        public static string CurrentWaitNum = "CurrentWaitNum";
+
         #endregion
     }
 }

+ 13 - 1
src/Hotline.Api/Realtimes/RealtimeService.cs

@@ -230,8 +230,17 @@ public class RealtimeService : IRealtimeService, IScopeDependency
     public Task EnforcementOrderHandlingDetailAsync(object obj, CancellationToken cancellationToken) =>
         SendToGroupAsync(RealtimeGroupNames.EnforcementBigDataScreen, RealtimeMethods.EnforcementOrderHandlingDetail, obj, cancellationToken);
 
-    
 
+    #region 话务排队信息
+
+    public Task TodayWaitNumAsync(int count, CancellationToken cancellationToken) =>
+        SendToGroupAsync(RealtimeGroupNames.CallCenter, RealtimeMethods.ToDayWaitNum, count, cancellationToken);
+
+    public Task CurrentWaitNumAsync(int count, CancellationToken cancellationToken) =>
+        SendToGroupAsync(RealtimeGroupNames.CallCenter, RealtimeMethods.CurrentWaitNum, count, cancellationToken);
+
+
+    #endregion
     #region private
 
     private async Task SendCallCenterMsgAsync(string userId, string msg, object? value, CancellationToken cancellationToken)
@@ -264,4 +273,7 @@ public class RealtimeService : IRealtimeService, IScopeDependency
         _hubContext.Clients.Group(groupName).SendAsync(method, value, cancellationToken);
 
     #endregion
+
+   
+
 }

+ 40 - 0
src/Hotline.Application/CallCenter/Calls/CurrentWaitNumService.cs

@@ -0,0 +1,40 @@
+using Hotline.Realtimes;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Application.CallCenter.Calls
+{
+    public class CurrentWaitNumService : BackgroundService
+    {
+        private readonly IServiceScopeFactory _serviceScopeFactory;
+
+        public CurrentWaitNumService(IServiceScopeFactory serviceScopeFactory)
+        {
+            _serviceScopeFactory = serviceScopeFactory;
+        }
+
+        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+        {
+            using var scope = _serviceScopeFactory.CreateScope();
+            var realtimeService = scope.ServiceProvider.GetRequiredService<IRealtimeService>();
+
+            int times = 3000;//5秒
+            while(!stoppingToken.IsCancellationRequested)
+            {
+                try
+                {
+
+                }
+                catch{}
+                await Task.Delay(times);
+            }
+
+
+        }
+    }
+}

+ 2 - 1
src/Hotline.Application/CallCenter/Calls/ToDayWaitNumService.cs

@@ -24,7 +24,7 @@ namespace Hotline.Application.CallCenter.Calls
             using var scope = _serviceScopeFactory.CreateScope();
             var realtimeService = scope.ServiceProvider.GetRequiredService<IRealtimeService>();
             var _trcallrecordRepoository = scope.ServiceProvider.GetRequiredService<IRepository<TrCallRecord>>();
-            int times = 60000;//分钟
+            int times = 60000;//分钟
             while (!stoppingToken.IsCancellationRequested)
             {
                 try
@@ -33,6 +33,7 @@ namespace Hotline.Application.CallCenter.Calls
                         .Where(x => x.CreatedTime.Date == DateTime.Now.Date)
                         .Where(x => x.QueueTims > 0 && x.Duration == 0)
                         .CountAsync();
+                    await realtimeService.TodayWaitNumAsync(count, stoppingToken);
                 }
                 catch {}
                 await Task.Delay(times);

+ 5 - 0
src/Hotline.Share/Dtos/Order/OrderVisitDto.cs

@@ -105,6 +105,11 @@ namespace Hotline.Share.Dtos.Order
         /// 坐席扭转
         /// </summary>
         public bool? SeatJudge { get; set; }
+
+        /// <summary>
+        /// 是否待扭转
+        /// </summary>
+        public bool IsIng { get; set; }
     }
 
     public class JudgeVisitReq

+ 19 - 1
src/Hotline/Realtimes/IRealtimeService.cs

@@ -63,7 +63,25 @@ namespace Hotline.Realtimes
 
         #region 司法大屏
 
-        Task EnforcementOrderHandlingDetailAsync(object obj, CancellationToken cancellationToken); 
+        Task EnforcementOrderHandlingDetailAsync(object obj, CancellationToken cancellationToken);
+        #endregion
+
+        #region 话务排队信息
+        /// <summary>
+        /// 今日排队
+        /// </summary>
+        /// <param name="count"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task TodayWaitNumAsync(int count, CancellationToken cancellationToken);
+        /// <summary>
+        /// 当前等待
+        /// </summary>
+        /// <param name="count"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        Task CurrentWaitNumAsync(int count, CancellationToken cancellationToken);
+
         #endregion
     }
 }

+ 7 - 0
src/Tr.Sdk/Tels/ITrClient.Tel.cs

@@ -32,5 +32,12 @@ namespace Tr.Sdk
         Task<List<QueryBlacklistResponse>> QueryBlacklistAsync(QueryBlacklistRequest request, CancellationToken cancellationToken) =>
             ExecuteAsync<QueryBlacklistRequest,List<QueryBlacklistResponse>>(request, cancellationToken);
         #endregion
+
+        #region 队列信息
+
+        Task<QueryQueueWaitNumResponse> QueryQueueWaitNumAsync(QueryQueueWaitNumRequest request, CancellationToken cancellationToken) =>
+            ExecuteAsync<QueryQueueWaitNumRequest, QueryQueueWaitNumResponse>(request, cancellationToken);
+
+        #endregion
     }
 }

+ 28 - 0
src/Tr.Sdk/Tels/QueryQueueWaitNumRequest.cs

@@ -0,0 +1,28 @@
+using RestSharp;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json.Serialization;
+using System.Threading.Tasks;
+
+namespace Tr.Sdk.Tels
+{
+    public class QueryQueueWaitNumRequest : TrRequest
+    {
+        public override Method HttpMethod() => Method.Get;
+
+        public override string Path() => $"/api/ola/queues/{QueueId}/get-callers";
+
+        [RequestProperty(Name = "args")]
+        public string QueueId { get; set; }
+    }
+
+
+    public class QueryQueueWaitNumResponse
+    {
+        [JsonPropertyName("count")]
+        public string Count { get; set; }
+    }
+    
+}