Quellcode durchsuchen

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

xf vor 4 Monaten
Ursprung
Commit
94f4a8d98d

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

@@ -4691,5 +4691,22 @@ namespace Hotline.Api.Controllers.Bi
             var (total, items) = await query.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
             return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
         }
+
+
+        #region 智能回访统计
+
+        /// <summary>
+        /// 智能回访数据统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("aivisit-statistics")]
+        public async Task QueryAiVisitStatistics([FromQuery] QueryAiVisitStatisticsRequest dto)
+        {
+            //_aiOrderVisitDetailRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime).GroupBy(x=>x.OrderId)
+            //    .Select(x=>new );
+        }
+
+        #endregion
     }
 }

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

@@ -519,7 +519,7 @@ ICallApplication callApplication,
         //var r = _timeLimitDomainService.CalcExpiredTime(DateTime.Now, EFlowDirection.CenterToCenter, batchId);
         //var r = _timeLimitDomainService.CalcEndTime(DateTime.Parse("2024-09-12 14:45:47"), Share.Enums.Settings.ETimeType.WorkDay, 2, 80, 50);
         //_capPublisher.PublishDelay((DateTime.Now.AddMinutes(2) - DateTime.Now), EventNames.OrderRelateCall, "123");
-        var times = _expireTime.CalcExpiredTime(DateTime.Parse("2024-11-26 00:02:21"), DateTime.Parse("2024-11-26 00:02:21"), EFlowDirection.CenterToOrg,new OrderTimeClacInfo() { AcceptTypeCode="40"});
+        var times = _expireTime.CalcExpiredTime(DateTime.Parse("2024-12-09 18:37:13"), DateTime.Parse("2024-12-09 18:37:13"), EFlowDirection.CenterToOrg,new OrderTimeClacInfo() { AcceptTypeCode="25"});
         //await _capPublisher.PublishDelay(EventNames.OrderRelateCall, "123", cancellationToken: HttpContext.RequestAborted);
         return OpenResponse.Ok(times.Result);
     }

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

@@ -1354,4 +1354,50 @@ public record SysLogPagedKeywordRequest : PagedKeywordRequest
     /// 是否查询全部
     /// </summary>
     public bool? IsAll { get; set; }
-}
+}
+
+
+#region 智能回访
+
+public class QueryAiVisitStatisticsRequest
+{
+    /// <summary>
+    /// 开始时间
+    /// </summary>
+    public DateTime? StartTime { get; set; }
+
+    /// <summary>
+    /// 结束时间
+    /// </summary>
+    public DateTime? EndTime { get; set; }
+}
+
+public class QueryAiVisitStatisticsResp
+{
+    /// <summary>
+    /// 智能回访总量
+    /// </summary>
+    public int AiVisitCount { get; set; }
+
+    /// <summary>
+    /// 智能回访有效量
+    /// </summary>
+    public int AiVisitSuccessCount { get; set;}
+
+    /// <summary>
+    /// 人工待复核量
+    /// </summary>
+    public int AiVisitArtificialReviewCount { get; set; }
+
+    /// <summary>
+    /// 人工电话复核回访量
+    /// </summary>
+    public int AiVisitCallReviewCount { get; set; }
+
+    /// <summary>
+    /// 人工手动复核填写量
+    /// </summary>
+    public int AiVisitHandReviewCount { get; set; }
+}
+
+#endregion

+ 6 - 1
src/Hotline/Settings/TimeLimitDomain/ExpireTimeSupplier/WorkDaySupplier.cs

@@ -1,5 +1,6 @@
 using Hotline.Settings.TimeLimits;
 using Hotline.Share.Dtos.Settings;
+using System.ComponentModel.DataAnnotations;
 using XF.Domain.Dependency;
 
 namespace Hotline.Settings.TimeLimitDomain.ExpireTimeSupplier;
@@ -201,10 +202,14 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
                     {
                         break;
                     }
-                    else
+                    else if(!await IsWorkDay(beginTime) && beginTime> DateTime.Parse(beginTime.ToShortDateString() + " " + timeConfig.WorkTime[1] + ":00"))
                     {
                         beginTime = DateTime.Parse(beginTime.AddDays(-1).ToShortDateString() +" "+ timeConfig.WorkTime[1] + ":00");
                     }
+                    else
+                    {
+                        beginTime = beginTime.AddDays(1);
+                    }
                 }
 
                 var scondsPlan = (beginTime - startTime).TotalSeconds * (timeConfig.Percentage / 100.00);