|
@@ -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;
|
|
|
}
|
|
|
}
|
|
|
}
|