|
@@ -286,24 +286,63 @@ namespace Hotline.Repository.SqlSugar.CallCenter
|
|
.OrderByDescending(x => x.CreatedTime);
|
|
.OrderByDescending(x => x.CreatedTime);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
public async Task<List<QueryCallDateStatisticsDetailResp>> QueryCallDateStatisticsDetail(DateTime startTime, DateTime endTime)
|
|
public async Task<List<QueryCallDateStatisticsDetailResp>> QueryCallDateStatisticsDetail(DateTime startTime, DateTime endTime)
|
|
{
|
|
{
|
|
- return await Db.Queryable<TrCallRecord>()
|
|
|
|
|
|
+ var query = Db.Queryable<TrCallRecord>()
|
|
.Where(x => x.CreatedTime >= startTime && x.CreatedTime <= endTime && SqlFunc.Length(x.Gateway) > 4 && x.CallDirection == ECallDirection.In)
|
|
.Where(x => x.CreatedTime >= startTime && x.CreatedTime <= endTime && SqlFunc.Length(x.Gateway) > 4 && x.CallDirection == ECallDirection.In)
|
|
.GroupBy(x => x.CreatedTime.ToString("yyyy-MM-dd"))
|
|
.GroupBy(x => x.CreatedTime.ToString("yyyy-MM-dd"))
|
|
- .Select(x => new QueryCallDateStatisticsDetailResp() {
|
|
|
|
|
|
+ .Select(x => new QueryCallDateStatisticsDetailResp()
|
|
|
|
+ {
|
|
Date = x.CreatedTime.ToString("yyyy-MM-dd"),
|
|
Date = x.CreatedTime.ToString("yyyy-MM-dd"),
|
|
- PersonCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.LastOrDefault()=='1',1,0)),
|
|
|
|
- EnterpriseCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.LastOrDefault()=='2',1,0)),
|
|
|
|
- AiCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Gateway == "82826886",1,0)),
|
|
|
|
- PersonCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.LastOrDefault()=='1' && x.OnState == EOnState.On ,1,0)),
|
|
|
|
- EnterpriseCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.LastOrDefault()=='2' && x.OnState== EOnState.On,1,0)),
|
|
|
|
|
|
+ PersonCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1", 1, 0)),
|
|
|
|
+ EnterpriseCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "2", 1, 0)),
|
|
|
|
+ AiCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Gateway == "82826886", 1, 0)),
|
|
|
|
+ PersonCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1" && x.OnState == EOnState.On, 1, 0)),
|
|
|
|
+ EnterpriseCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "2" && x.OnState == EOnState.On, 1, 0)),
|
|
AiCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Gateway == "82826886", 1, 0)),
|
|
AiCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Gateway == "82826886", 1, 0)),
|
|
- PersonRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.LastOrDefault() == '1' && x.QueueTims > 0 && x.RingTimes == 0 && x.OnState == EOnState.NoOn, 1, 0)),//个人服务挂断
|
|
|
|
- EnterpriseRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.LastOrDefault() == '2' && x.QueueTims > 0 && x.RingTimes == 0 && x.OnState == EOnState.NoOn,1,0)), //企业挂断
|
|
|
|
|
|
+ PersonRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1" && x.QueueTims > 0 && x.OnState == EOnState.NoOn, 1, 0)),//个人服务挂断
|
|
|
|
+ EnterpriseRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "2" && x.QueueTims > 0 && x.RingTimes == 0 && x.OnState == EOnState.NoOn, 1, 0)), //企业挂断
|
|
IvrRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.BeginIvrTime.HasValue && !x.BeginQueueTime.HasValue && !x.BeginRingTime.HasValue && x.OnState == EOnState.NoOn, 1, 0)), //IVR挂断
|
|
IvrRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.BeginIvrTime.HasValue && !x.BeginQueueTime.HasValue && !x.BeginRingTime.HasValue && x.OnState == EOnState.NoOn, 1, 0)), //IVR挂断
|
|
- }).ToListAsync();
|
|
|
|
-
|
|
|
|
|
|
+ })
|
|
|
|
+ .OrderBy(x=>x.Date);
|
|
|
|
+ return await query.ToListAsync();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public async Task<List<QueryPersonCallDateStatisticsDetailResp>> QueryPersonCallDateStatisticsDetail(DateTime startTime, DateTime endTime)
|
|
|
|
+ {
|
|
|
|
+ var query = Db.Queryable<TrCallRecord>()
|
|
|
|
+ .Where(x => x.CreatedTime >= startTime && x.CreatedTime <= endTime && SqlFunc.Length(x.Gateway) > 4 && x.CallDirection == ECallDirection.In)
|
|
|
|
+ .GroupBy(x => x.CreatedTime.ToString("yyyy-MM-dd"))
|
|
|
|
+ .Select(x => new QueryPersonCallDateStatisticsDetailResp()
|
|
|
|
+ {
|
|
|
|
+ Date = x.CreatedTime.ToString("yyyy-MM-dd"),
|
|
|
|
+ PersonCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1", 1, 0)),
|
|
|
|
+ PersonCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1" && x.OnState == EOnState.On, 1, 0)),
|
|
|
|
+ PersonRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1" && x.QueueTims > 0 && x.OnState == EOnState.NoOn, 1, 0)),//个人服务挂断
|
|
|
|
+ PersonQueueOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1" && x.QueueTims > 0 && x.RingTimes == 0 && x.OnState == EOnState.NoOn, 1, 0)),//个人服务队列挂断
|
|
|
|
+ PersonWaitOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length -1,1) =="1" && x.RingTimes>0 && x.OnState == EOnState.NoOn,1,0)) //个人服务等待挂断
|
|
|
|
+ })
|
|
|
|
+ .OrderBy(x => x.Date);
|
|
|
|
+ return await query.ToListAsync();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public async Task<List<QueryEnterpriseCallDateStatisticsDetailResp>> QueryEnterpriseCallDateStatisticsDetail(DateTime startTime,DateTime endTime)
|
|
|
|
+ {
|
|
|
|
+ var query = Db.Queryable<TrCallRecord>()
|
|
|
|
+ .Where(x => x.CreatedTime >= startTime && x.CreatedTime <= endTime && SqlFunc.Length(x.Gateway) > 4 && x.CallDirection == ECallDirection.In)
|
|
|
|
+ .GroupBy(x => x.CreatedTime.ToString("yyyy-MM-dd"))
|
|
|
|
+ .Select(x => new QueryEnterpriseCallDateStatisticsDetailResp()
|
|
|
|
+ {
|
|
|
|
+ Date = x.CreatedTime.ToString("yyyy-MM-dd"),
|
|
|
|
+ EnterpriseCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "2", 1, 0)),
|
|
|
|
+ EnterpriseCallInPutthroughCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "2" && x.OnState == EOnState.On, 1, 0)),
|
|
|
|
+ EnterpriseRingOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "2" && x.QueueTims > 0 && x.RingTimes == 0 && x.OnState == EOnState.NoOn, 1, 0)), //企业挂断
|
|
|
|
+ EnterpriseQueueOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1" && x.QueueTims > 0 && x.RingTimes == 0 && x.OnState == EOnState.NoOn, 1, 0)),//个人服务队列挂断
|
|
|
|
+ EnterpriseWaitOffCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1" && x.RingTimes > 0 && x.OnState == EOnState.NoOn, 1, 0)) //个人服务等待挂断
|
|
|
|
+ })
|
|
|
|
+ .OrderBy(x => x.Date);
|
|
|
|
+ return await query.ToListAsync();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|