Bladeren bron

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

xf 1 jaar geleden
bovenliggende
commit
649706c7d6

+ 50 - 23
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -1350,17 +1350,14 @@ namespace Hotline.Api.Controllers.Bi
         /// </summary>
         /// <param name="StartDate"></param>
         /// <param name="EndDate"></param>
-        /// <param name="UserName"></param>
         /// <param name="PhoneNum"></param>
         /// <returns></returns>
         [HttpGet("high_frequency_call_statistics")]
-        [AllowAnonymous]
         public async Task<object> HighFrequencyCallStatistics(DateTime? StartDate, DateTime? EndDate, string PhoneNum)
         {
             if (!StartDate.HasValue || !EndDate.HasValue)
                 throw UserFriendlyException.SameMessage("请选择时间!");
 
-
             int CallCount = 2;
             var HighFrequencyCallStatistics = _systemSettingCacheManager.GetSetting(SettingConstants.HighFrequencyCallStatistics)?.SettingValue[0];
             if (HighFrequencyCallStatistics != null)
@@ -1373,7 +1370,6 @@ namespace Hotline.Api.Controllers.Bi
                    .Where((p, o) => p.CallOrderType == ECallOrderType.Order)
                    .Where((p, o) => p.ExternalId != null && o.Id != null)
                     .WhereIF(!string.IsNullOrEmpty(PhoneNum), (p, o) => p.CPN == PhoneNum)
-                   // .Where(p=>p.OnState==EOnState.On)
                    .Select((p, o) => new
                    {
                        p.CPN,
@@ -1394,40 +1390,71 @@ namespace Hotline.Api.Controllers.Bi
         }
 
         /// <summary>
-        /// 
+        /// 高频来电统计列表详情
         /// </summary>
-        /// <param name="StartDate"></param>
-        /// <param name="EndDate"></param>
-        /// <param name="PhoneNum"></param>
+        /// <param name="dto"></param>
         /// <returns></returns>
         [HttpGet("high_frequency_call_statistics_order_list")]
-        [AllowAnonymous]
-        public async Task<object> HighFrequencyCallStatisticsOrderList(DateTime? StartDate, DateTime? EndDate, string PhoneNum)
+        public async Task<PagedDto<OrderDto>> HighFrequencyCallStatisticsOrderList([FromQuery] HighFrequencyCallStatisticsRequest dto)
         {
-            if (!StartDate.HasValue || !EndDate.HasValue)
+            if (!dto.StartDate.HasValue || !dto.EndDate.HasValue)
                 throw UserFriendlyException.SameMessage("请选择时间!");
-            if (string.IsNullOrEmpty(PhoneNum))
+            if (string.IsNullOrEmpty(dto.FromPhone))
                 throw UserFriendlyException.SameMessage("号码不能为空!");
 
-            EndDate = EndDate.Value.AddDays(1).AddSeconds(-1);
-            var data = _trCallRecordRepository.Queryable()
+            dto.EndDate = dto.EndDate.Value.AddDays(1).AddSeconds(-1);
+            var data = await _trCallRecordRepository.Queryable()
                     .LeftJoin<Order>((p, o) => p.ExternalId == o.Id)
-                   .Where((p, o) => p.OverTime >= StartDate && p.OverTime <= EndDate)
+                   .Where((p, o) => p.OverTime >= dto.StartDate && p.OverTime <= dto.EndDate)
                    .Where((p, o) => p.CallOrderType == ECallOrderType.Order)
                    .Where((p, o) => p.ExternalId != null && o.Id != null)
-                    .Where((p, o) => p.CPN == PhoneNum)
-                   // .Where(p=>p.OnState==EOnState.On)
-                   .Select((p, o) => new
-                   {
-                       p.CPN,
+                    .Where((p, o) => p.CPN == dto.FromPhone)
+                   .Select((p, o) =>
                        p.ExternalId
-                   })
-
+                   )
                   .ToListAsync();
 
 
+            var (total, items) = await _orderRepository.Queryable()
+           .Includes(x => x.OrderScreens)
+           .Where(p => data.Contains(p.Id))
+           .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
+           .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d => d.ProvinceNo.Contains(dto.ProvinceNo)) //省本地编号
+           .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No.Contains(dto.No)) //工单编码
+           .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
+           .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannelCode)) //来源渠道
+           .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
+           .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!)) //转接号码
+           .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.ActualHandleOrgCode)) //接办部门
+           .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
+           .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
+           .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+           .WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))  //紧急程度
+                                                                                                     //  .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone.Contains(dto.FromPhone)) //来电号码
+           .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), d => d.Contact.Contains(dto.PhoneNo!)) //联系电话
+           .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode) //推送分类
+           .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
+           .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
+           .WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status))  //工单状态
+           .WhereIF(dto.Statuses.Any(d => d == EOrderStatus.SpecialToUnAccept), d => d.Status <= EOrderStatus.SpecialToUnAccept)
+           .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => d.ActualHandlerName.Contains(dto.ActualHandlerName)) //接办人
+            .WhereIF(dto.IsScreen == true, d => d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //有甄别
+            .WhereIF(dto.IsScreen == false, d => !d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //无甄别
+            .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.ActualHandleStepCode == dto.CurrentStepCode) //当前办理节点
+            .WhereIF(dto.ActualHandleTimeStart.HasValue, d => d.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
+            .WhereIF(dto.ActualHandleTimeEnd.HasValue, d => d.ActualHandleTime <= dto.ActualHandleTimeEnd) //办结时间结束
+            .WhereIF(dto.IsOverTime == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //是 超期
+            .WhereIF(dto.IsOverTime == false, d => (d.ExpiredTime > DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime > d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //否 超期
+            .WhereIF(dto.IdentityType != null, d => d.IdentityType == dto.IdentityType) //来电主体
+            .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName.Contains(dto.FromName)) //来电人姓名
+            .WhereIF(dto.AreaCodes.Any(), d => dto.AreaCodes.Contains(d.AreaCode)) //区域
+            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, x => x.IsProvince == true)
+            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, x => x.IsProvince == false)
+           .OrderByDescending(d => d.CreationTime)
+           .ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+            return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
 
-            return data;
         }
     }
 }

+ 17 - 0
src/Hotline.Share/Requests/HighFrequencyCallStatisticsRequest.cs

@@ -0,0 +1,17 @@
+using Hotline.Share.Dtos.Order;
+
+namespace Hotline.Share.Requests
+{
+    public record HighFrequencyCallStatisticsRequest : QueryOrderDto
+    {
+        /// <summary>
+        /// 查询时间段--开始
+        /// </summary>
+        public DateTime? StartDate { get; set; }
+
+        /// <summary>
+        /// 查询时间段--结束
+        /// </summary>
+        public DateTime? EndDate { get; set; }
+    }
+}