|
@@ -28,10 +28,10 @@ namespace Hotline.Repository.SqlSugar.CallCenter
|
|
|
//}
|
|
|
|
|
|
//var list = await Db.Reportable(dts).ToQueryable<DateTime>()
|
|
|
- // .LeftJoin<TrCallRecord>((it,o)=> o.CreatedTime>= it.ColumnName && o.CreatedTime<=it.ColumnName.AddHours(1))
|
|
|
+ // .LeftJoin<TrCallRecord>((it, o) => o.CreatedTime >= it.ColumnName && o.CreatedTime <= it.ColumnName.AddHours(1))
|
|
|
// .Where((it, o) => o.CreatedTime >= beginDate)
|
|
|
// .WhereIF(endDate.HasValue, (it, o) => o.CreatedTime <= endDate.Value.Date.AddDays(1).AddMilliseconds(-1))
|
|
|
- // .WhereIF(!endDate.HasValue,(it, o) => o.CreatedTime <= beginDate.Date.AddDays(1).AddMilliseconds(-1))
|
|
|
+ // .WhereIF(!endDate.HasValue, (it, o) => o.CreatedTime <= beginDate.Date.AddDays(1).AddMilliseconds(-1))
|
|
|
// .GroupBy(it => it.ColumnName)
|
|
|
// .OrderBy(it => it.ColumnName)
|
|
|
// .Select((it, o) => new TrCallHourDto()
|
|
@@ -46,33 +46,39 @@ namespace Hotline.Repository.SqlSugar.CallCenter
|
|
|
// IvrByeCount = SqlFunc.AggregateSum(SqlFunc.IIF(o.CallDirection == ECallDirection.In && o.BeginIvrTime.HasValue && !o.BeginQueueTime.HasValue && !o.BeginRingTime.HasValue && o.OnState == EOnState.NoOn, 1, 0)), //IVR挂断
|
|
|
// }).ToListAsync();
|
|
|
//计算小时差
|
|
|
- //if (!endDate.HasValue)
|
|
|
- //{
|
|
|
- // endDate = beginDate.Date.AddDays(1).AddMilliseconds(-1);
|
|
|
- //}
|
|
|
- //TimeSpan timeDifference = endDate.Value.Subtract(beginDate).Duration();
|
|
|
-
|
|
|
- //int hourDiff = (int)(timeDifference.TotalHours);
|
|
|
+ if (!endDate.HasValue)
|
|
|
+ {
|
|
|
+ endDate = beginDate.Date.AddDays(1).AddMilliseconds(-1);
|
|
|
+ }
|
|
|
+ TimeSpan timeDifference = endDate.Value.Subtract(beginDate).Duration();
|
|
|
|
|
|
+ int hourDiff = (int)(timeDifference.TotalHours);
|
|
|
+ if (!endDate.HasValue)
|
|
|
+ {
|
|
|
+ endDate = beginDate.Date.AddDays(1).AddMilliseconds(-1);
|
|
|
+ }
|
|
|
+ //计算时间差
|
|
|
+ int hour = Convert.ToInt32((endDate - beginDate).Value.TotalHours);
|
|
|
|
|
|
- List<DateTime> dts = new List<DateTime>() { beginDate.Date.AddDays(1) };
|
|
|
- for (int i = 0; i < 24; i++)
|
|
|
+ List<DateTime> dts = new List<DateTime>() { beginDate };
|
|
|
+ for (int i = 0; i < hour - 1; i++)
|
|
|
{
|
|
|
- dts.Add(dts.Last().AddHours(-1));
|
|
|
+ dts.Add(dts.Last().AddHours(1));
|
|
|
}
|
|
|
|
|
|
var list = await Db.Reportable(dts).ToQueryable<DateTime>()
|
|
|
- .LeftJoin<TrCallRecord>((it, o) => o.CreatedTime.Hour == it.ColumnName.Hour)
|
|
|
- .WhereIF(endDate.HasValue, (it, o) => o.CreatedTime <= endDate.Value.Date.AddDays(1).AddMilliseconds(-1))
|
|
|
- .WhereIF(!endDate.HasValue, (it, o) => o.CreatedTime <= beginDate.Date.AddDays(1).AddMilliseconds(-1))
|
|
|
- .GroupBy(it => it.ColumnName.Hour)
|
|
|
- .OrderBy(it => it.ColumnName.Hour)
|
|
|
+ .LeftJoin<TrCallRecord>((it, o) => o.CreatedTime >= it.ColumnName && o.CreatedTime <= it.ColumnName.AddHours(1))
|
|
|
+ .GroupBy(it => it.ColumnName)
|
|
|
+ .OrderBy(it => it.ColumnName)
|
|
|
.Select((it, o) => new TrCallHourDto()
|
|
|
{
|
|
|
+ Dates = it.ColumnName,
|
|
|
Hour = it.ColumnName.Hour,
|
|
|
- Count = SqlFunc.AggregateCount(o.Id)
|
|
|
+ Count = SqlFunc.AggregateSum(SqlFunc.IIF(o.CallDirection == ECallDirection.In, 1, 0))
|
|
|
}).ToListAsync();
|
|
|
|
|
|
+ //Db.Queryable<TrCallRecord>().LeftJoin<>
|
|
|
+
|
|
|
|
|
|
return list;
|
|
|
}
|