Dun.Jason 7 місяців тому
батько
коміт
ef1725e1b1

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

@@ -278,7 +278,7 @@ ICallApplication callApplication,
         //var r = await _aiVisitService.QueryAiVisitTaskResult(batchId, DateTime.Parse("2024-07-28"), DateTime.Parse("2024-08-01"), HttpContext.RequestAborted);
 
         //var r = _timeLimitDomainService.CalcExpiredTime(DateTime.Now, EFlowDirection.CenterToCenter, batchId);
-        var r = _timeLimitDomainService.CalcEndTime(DateTime.Parse("2024-09-12 22:01:28"), Share.Enums.Settings.ETimeType.WorkDay, 3, 80, 50);
+        var r = _timeLimitDomainService.CalcEndTime(DateTime.Parse("2024-09-12 14:45:47"), Share.Enums.Settings.ETimeType.WorkDay, 2, 80, 50);
 
 
         return OpenResponse.Ok(DateTime.Now.ToString("F"));

+ 4 - 0
src/Hotline/Settings/TimeLimitDomain/ExpireTimeSupplier/WorkDaySupplier.cs

@@ -41,6 +41,10 @@ public class WorkDaySupplier : IExpireTimeSupplier, IScopeDependency
             {
                 beginTime = WorkBeginTime.AddDays(1);
             }
+            if (await NotWorkDay(beginTime))
+            {
+                beginTime = WorkBeginTime.AddDays(1);
+            }
         }
 
         while (true)

+ 10 - 3
src/Hotline/Settings/TimeLimits/TimeLimitDomainService.cs

@@ -854,8 +854,9 @@ namespace Hotline.Settings.TimeLimits
                         double workMinutes = duration.TotalMinutes;
                         double totalWorkMinutes = (workMinutes * timeValue) * (Percentage/100.00);
                         double totalWorkMinutesOne = (workMinutes * timeValue) * (PercentageOne / 100.00);
-                        
+
                         //判断开始时间不在工时间段修正时间复位至当天或者第二天的开始时间(如果大于结束时间则复位至第二天的开始时间)
+                        
                         if (beginTime < WorkBeginTime)
                         {
                             beginTime = WorkBeginTime;
@@ -866,17 +867,23 @@ namespace Hotline.Settings.TimeLimits
                             {
                                 beginTime = WorkBeginTime.AddDays(1);
                             }
+                            if (!IsWorkDay(beginTime))
+                            {
+                                beginTime = WorkBeginTime.AddDays(1);
+                            }
                         }
+
                         while (true)
                         {
-                            if(IsWorkDay(beginTime))
+                            if (IsWorkDay(beginTime))
                             {
                                 break;
                             }
                             beginTime = beginTime.AddDays(1);
+                            WorkBeginTime = WorkBeginTime.AddDays(1);
+                            WorkEndTime = WorkEndTime.AddDays(1);
                         }
 
-
                         int day = 1;
                         for (int i = 1; i < timeValue + 1; i++)
                         {

+ 25 - 0
src/Hotline/dataview.md

@@ -314,3 +314,28 @@ ordertemp."Content",
 left join order_visit ordervisittemp on ordervisitdetailtemp."VisitId"=ordervisittemp."Id"
 left join "order" ordertemp on ordervisittemp."OrderId" = ordertemp."Id"
 WHERE ordervisitdetailtemp."VisitTarget" = 20 and ordervisittemp."VisitTime">='2024-07-01' and ordervisittemp."VisitTime"<'2024-08-01' and (ordervisitdetailtemp."OrgProcessingResults"->>'Key')::INT=2 and ordervisittemp."VisitState"=30
+
+## 舆情数据
+ select aaa."GateWay" as 热线号码,
+ aaa."CallInCount" as 呼入,
+ aaa."ConnectCount" as 接通,
+ aaa."NoConnectByeCount" as 未接通秒挂,
+ round(round(aaa."ConnectCount",2)/aaa."CallInCount"*100,2) as 接通率,
+ aaa."EffectiveCount" as 有效接通,
+ aaa."DurationSum"/(aaa."EffectiveCount" + aaa."ConnectByeCount") as 平均时长,
+ aaa."DurationSum" as 通话总时长,
+ aaa."ConnectByeCount" as 接通秒挂,
+ aaa."TimelyAnswerCount" as 及时应答数,
+ round(round(aaa."TimelyAnswerCount",2)/aaa."ConnectCount"*100,2) as 有效率 
+	from (
+ SELECT  
+ "Gateway" AS "GateWay" , 
+ SUM(( CASE  WHEN ( "CallDirection" = 0 ) THEN 1  ELSE 0 END )) AS "CallInCount" , 
+ SUM(( CASE  WHEN (( "CallDirection" = 0 ) AND ( "OnState" = 1 )) THEN 1  ELSE 0 END )) AS "ConnectCount" , 
+ SUM(( CASE  WHEN (((( "CallDirection" = 0 ) AND ( "Duration" = 0 )) AND ( "RingTimes" <= 5 )) AND ( "RingTimes" > 0 )) THEN 1  ELSE 0 END )) AS "NoConnectByeCount" , 
+ SUM(( CASE  WHEN (( "CallDirection" = 0 ) AND ( "Duration" >= 15 )) THEN 1  ELSE 0 END )) AS "EffectiveCount" , 
+ SUM(( CASE  WHEN (( "CallDirection" = 0 ) AND ( "OnState" = 1 )) THEN "Duration"  ELSE 0 END )) AS "DurationSum" , 
+ SUM(( CASE  WHEN ((( "CallDirection" = 0 ) AND ( "Duration" > 0 )) AND ( "Duration" <= 5 )) THEN 1  ELSE 0 END )) AS "ConnectByeCount" , 
+ SUM(( CASE  WHEN ((( "CallDirection" = 0 ) AND ( "OnState" = 1 )) AND ( "RingTimes" <= 15 )) THEN 1  ELSE 0 END )) AS "TimelyAnswerCount"  
+ FROM "tr_call_record"  WHERE (( "CreatedTime" >= '2024-09-12 17:00:00' ) AND ( "CreatedTime" <= '2024-09-13 17:00:00' ))  AND ( "Gateway" = '12333' )GROUP BY "Gateway") aaa
+