|
@@ -302,13 +302,14 @@ public class YiBinCallReportApplication : CallReportApplicationBase, ICallReport
|
|
|
var list = await _userRepository.Queryable()
|
|
|
.LeftJoin<TrCallRecord>((u, c) => u.Id == c.UserId)
|
|
|
.Where(u => !u.IsDeleted && u.UserType == EUserType.Seat)
|
|
|
- .Where((u, c) => c.CreatedTime >= dto.StartTime)
|
|
|
- .Where((u, c) => c.CreatedTime <= dto.EndTime)
|
|
|
+ .Where((u, c) => c.BeginRingTime >= dto.StartTime)
|
|
|
+ .Where((u, c) => c.BeginRingTime <= dto.EndTime)
|
|
|
.Where((u, c) => c.CallDirection == ECallDirection.In)
|
|
|
.GroupBy((u, c) => new { c.UserName, c.UserId })
|
|
|
.Select((u, c) => new QuerySeatMonthCallResp
|
|
|
{
|
|
|
Name = c.UserName,
|
|
|
+ UserId = c.UserId,
|
|
|
InAnswered = SqlFunc.AggregateSum(SqlFunc.IIF(c.AnsweredTime != null, 1, 0)), //呼入接通量
|
|
|
InAvailableAnswer = SqlFunc.AggregateSum(SqlFunc.IIF(c.AnsweredTime != null && c.Duration >= effectiveTimes, 1, 0)), //有效接通量
|
|
|
InHangupImmediateWhenAnswered = SqlFunc.AggregateSum(SqlFunc.IIF(c.AnsweredTime != null && c.Duration < connectByeTimes, 1, 0)),//接通秒挂
|
|
@@ -321,6 +322,38 @@ public class YiBinCallReportApplication : CallReportApplicationBase, ICallReport
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 坐席月接通明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public override ISugarQueryable<QuerySeatMonthCallDetailResp> QuerySeatMonthCallDetail(QuerySeatMonthCallDetailRequest dto)
|
|
|
+ {
|
|
|
+ return _trCallRecordRepository.Queryable()
|
|
|
+ .WhereIF(dto.RingStartTime.HasValue, x => x.BeginRingTime >= dto.RingStartTime)
|
|
|
+ .WhereIF(dto.RingEndTime.HasValue, x => x.BeginRingTime <= dto.RingEndTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.EmpId), x => x.UserId == dto.EmpId)
|
|
|
+ .WhereIF(dto.AnsweredStartTime.HasValue, x => x.AnsweredTime >= dto.AnsweredStartTime)
|
|
|
+ .WhereIF(dto.AnsweredEndTime.HasValue, x => x.AnsweredTime <= dto.AnsweredEndTime)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.TelNo), x => x.TelNo.Contains(dto.TelNo!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Cpn),x=>x.CPN.Contains(dto.Cpn!))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Cdpn), x => x.CDPN.Contains(dto.Cdpn!))
|
|
|
+ .Where(x => x.CallDirection == ECallDirection.In)
|
|
|
+ .OrderBy(x => x.BeginRingTime)
|
|
|
+ .MergeTable()
|
|
|
+ .Select(x => new QuerySeatMonthCallDetailResp
|
|
|
+ {
|
|
|
+ Cpn = x.CPN,
|
|
|
+ Cdpn = x.CDPN,
|
|
|
+ TelNo = x.TelNo,
|
|
|
+ AnsweredTime = x.AnsweredTime,
|
|
|
+ RingTimeBegin = x.BeginRingTime,
|
|
|
+ SeatName = x.UserName
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//public override async Task<PagedDto<TrCallDto>> GetCallDetailListAsync(GetCallListDto dto, CancellationToken cancellationToken)
|
|
|
//{
|
|
|
// var (total, items) = await _trCallRecordRepository.Queryable()
|