Dun.Jason 11 месяцев назад
Родитель
Сommit
d1d710c925

+ 28 - 6
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -442,12 +442,34 @@ namespace Hotline.Api.Controllers
                 .WhereIF(dto.CallDirection != null, x => x.CallDirection == dto.CallDirection)
                 .WhereIF(dto.OnState != null, x => x.OnState == dto.OnState)
                 .WhereIF(dto.EndBy != null, x => x.EndBy == dto.EndBy)
-                .WhereIF(dto.BeginIvrTime.HasValue, x => x.BeginIvrTime >= dto.BeginIvrTime)
-                .WhereIF(dto.EndIvrTime.HasValue, x => x.EndIvrTime <= dto.EndIvrTime)
-                .WhereIF(dto.BeginQueueTime.HasValue, x => x.BeginQueueTime >= dto.BeginQueueTime)
-                .WhereIF(dto.EndQueueTime.HasValue, x => x.EndQueueTime <= dto.EndQueueTime)
-                .WhereIF(dto.AnsweredTime.HasValue, x => x.AnsweredTime >= dto.AnsweredTime)
-                .WhereIF(dto.OverTime.HasValue, x => x.OverTime <= dto.OverTime)
+
+                .WhereIF(dto.BeginIvrTimeStart.HasValue, x => x.BeginIvrTime >= dto.BeginIvrTimeStart)
+                .WhereIF(dto.BeginIvrTimeEnd.HasValue,x=> x.BeginIvrTime<= dto.BeginIvrTimeEnd)
+
+                .WhereIF(dto.EndIvrTimeStart.HasValue, x => x.EndIvrTime >= dto.EndIvrTimeStart)
+                .WhereIF(dto.EndIvrTimeEnd.HasValue,x=> x.EndIvrTime <= dto.EndIvrTimeEnd)
+
+                .WhereIF(dto.BeginQueueTimeStart.HasValue, x => x.BeginQueueTime >= dto.BeginQueueTimeEnd)
+                .WhereIF(dto.BeginQueueTimeEnd.HasValue,x=> x.BeginQueueTime <= dto.BeginQueueTimeEnd)
+
+                .WhereIF(dto.EndQueueTimeStart.HasValue, x => x.EndQueueTime >= dto.EndQueueTimeStart)
+                .WhereIF(dto.EndQueueTimeEnd.HasValue,x=> x.EndQueueTime <= dto.EndQueueTimeEnd)
+
+                .WhereIF(dto.AnsweredTimeStart.HasValue, x => x.AnsweredTime >= dto.AnsweredTimeStart)
+                .WhereIF(dto.AnsweredTimeEnd.HasValue,x=> x.AnsweredTime<= dto.AnsweredTimeEnd)
+
+                .WhereIF(dto.OverTimeStart.HasValue, x => x.OverTime >= dto.OverTimeStart)
+                .WhereIF(dto.OverTimeEnd.HasValue,x=> x.OverTime <= dto.OverTimeEnd)
+
+                .WhereIF(dto.BeginRingTimeStart.HasValue,x=> x.BeginRingTime>= dto.BeginRingTimeStart)
+                .WhereIF(dto.BeginRingTimeEnd.HasValue,x=> x.BeginRingTime<= dto.BeginRingTimeEnd)
+
+                .WhereIF(dto.EndRingTimeStart.HasValue,x=> x.EndRingTimg >= dto.EndRingTimeStart)
+                .WhereIF(dto.EndRingTimeEnd.HasValue, x=>x.EndRingTimg <= dto.EndRingTimeEnd)
+
+                .WhereIF(dto.CallTimeStart.HasValue, x=>x.CreatedTime>= dto.CallTimeStart)
+                .WhereIF(dto.CallTimeEnd.HasValue, x=>x.CreatedTime <= dto.CallTimeEnd)
+
                 .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), x => x.Order.No.Contains(dto.OrderNo))
                 .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Order.Title.Contains(dto.Title))
                 .WhereIF(!string.IsNullOrEmpty(dto.Gateway), x => x.Gateway.Contains(dto.Gateway))

+ 75 - 12
src/Hotline.Share/Dtos/TrCallCenter/TrTelDao.cs

@@ -411,31 +411,94 @@ namespace Hotline.Share.Dtos.TrCallCenter
         public EEndBy? EndBy { get; set; }
 
         /// <summary>
-        /// IVR开始时间
+        /// IVR开始开始时间(修改)
         /// </summary>
-        public DateTime? BeginIvrTime { get; set; }
+        public DateTime? BeginIvrTimeStart { get; set; }
+
         /// <summary>
-        /// IVR结束时间
+        /// IVR开始结束时间(新增)
         /// </summary>
-        public DateTime? EndIvrTime { get; set; }
+        public DateTime? BeginIvrTimeEnd { get; set; }
 
         /// <summary>
-        /// 开始等待时间(队列开始时间)
+        /// IVR结束开始时间(修改)
         /// </summary>
-        public DateTime? BeginQueueTime { get; set; }
+        public DateTime? EndIvrTimeStart { get; set; }
+
         /// <summary>
-        /// 结束等待时间(队列结束时间)
+        /// IVR结束结束时间(新增
         /// </summary>
-        public DateTime? EndQueueTime { get; set; }
+        public DateTime? EndIvrTimeEnd { get; set; }
 
         /// <summary>
-        /// 接通开始时间
+        /// 开始等待开始时间(队列开始时间)(修改)
         /// </summary>
-        public DateTime? AnsweredTime { get; set; }
+        public DateTime? BeginQueueTimeStart { get; set; }
+
+        /// <summary>
+        /// 开始等待结束时间(队列开始时间)(新增)
+        /// </summary>
+        public DateTime? BeginQueueTimeEnd { get; set; }
+
+        /// <summary>
+        /// 结束等待开始时间(队列结束时间)(修改)
+        /// </summary>
+        public DateTime? EndQueueTimeStart { get; set; }
+
+        /// <summary>
+        /// 结束等待结束时间(队列结束时间)(新增)
+        /// </summary>
+        public DateTime? EndQueueTimeEnd { get; set; }
+
+        /// <summary>
+        /// 应答开始时间(修改)
+        /// </summary>
+        public DateTime? AnsweredTimeStart { get; set; }
+
+        /// <summary>
+        /// 应答结束时间(新增)
+        /// </summary>
+        public DateTime? AnsweredTimeEnd { get; set; }
+
+        /// <summary>
+        /// 通话结束开始时间(修改)
+        /// </summary>
+        public DateTime? OverTimeStart { get; set; }
+
+        /// <summary>
+        /// 通话结束结束时间(新增)
+        /// </summary>
+        public DateTime? OverTimeEnd { get; set; }
+
+        /// <summary>
+        /// 振铃开始开始时间(新增)
+        /// </summary>
+        public DateTime? BeginRingTimeStart { get; set; }
+
+        /// <summary>
+        /// 振铃开始结束时间(新增)
+        /// </summary>
+        public DateTime? BeginRingTimeEnd { get; set; }
+
+        /// <summary>
+        /// 振铃结束开始时间(新增)
+        /// </summary>
+        public DateTime? EndRingTimeStart { get; set; }
+
+        /// <summary>
+        /// 振铃结束结束时间(新增)
+        /// </summary>
+        public DateTime? EndRingTimeEnd { get; set; }
+
+        /// <summary>
+        /// 通话开始时间开始(新增)
+        /// </summary>
+        public DateTime? CallTimeStart { get; set; }
+
         /// <summary>
-        /// 接通结束时间
+        /// 通话开始时间结束(新增)
         /// </summary>
-        public DateTime? OverTime { get; set; }
+        public DateTime? CallTimeEnd { get; set; }
 
         /// <summary>
         /// 工单编号

+ 11 - 0
src/Hotline/Settings/TimeLimits/ITimeLimitDomainService.cs

@@ -57,6 +57,17 @@ namespace Hotline.Settings.TimeLimits
 
         TimeResult CalcEndTime(DateTime beginTime, ETimeType timeType, int timeValue, string busCode);
 
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="beginTime"></param>
+        /// <param name="endTime"></param>
+        /// <param name="isCenter"></param>
+        /// <returns></returns>
+        decimal CalcWorkTimeToDecimal(DateTime beginTime, DateTime endTime, bool isCenter);
+
+
         /// <summary>
         /// 
         /// </summary>

+ 27 - 0
src/Hotline/Settings/TimeLimits/TimeLimitDomainService.cs

@@ -146,6 +146,33 @@ namespace Hotline.Settings.TimeLimits
             return CalcEndTime(beginTime, timeConfig, acceptTypeCode);
         }
 
+        public decimal CalcWorkTimeToDecimal(DateTime beginTime,DateTime endTime,bool isCenter)
+        {
+            var min = CalcWorkTime(beginTime, endTime, isCenter);
+            if (isCenter)
+            {
+                return  Math.Round((decimal)min / 60 / 24,2);
+            }
+            else
+            {
+                var workTime = _systemSettingRepository.Get(x => x.Code == SettingConstants.WorkTime);
+                if (workTime!=null)
+                {
+                    DateTime WorkBeginTime = DateTime.Parse(beginTime.ToShortDateString() + " " + workTime.SettingValue[0] + ":00");
+                    DateTime WorkEndTime = DateTime.Parse(beginTime.ToShortDateString() + " " + workTime.SettingValue[1] + ":00");
+
+                    TimeSpan minuteSpan = new TimeSpan(WorkEndTime.Ticks - WorkBeginTime.Ticks);
+                    //总时差分钟数
+                    int minutes = (int)minuteSpan.TotalMinutes;
+
+                    return Math.Round((decimal)min / minutes, 2);
+                }
+                return 0;
+            }
+
+        }
+
+
         /// <summary>
         /// 计算工作时间分钟数
         /// </summary>