|
@@ -1,8 +1,11 @@
|
|
|
-using Hotline.Orders;
|
|
|
+using Hotline.CallCenter.Calls;
|
|
|
+using Hotline.Orders;
|
|
|
using Hotline.Repository.SqlSugar.DataPermissions;
|
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
using Hotline.Settings;
|
|
|
using Hotline.Settings.Hotspots;
|
|
|
+using Hotline.Share.Dtos.CallCenter;
|
|
|
+using Hotline.Share.Enums.CallCenter;
|
|
|
using Hotline.Share.Requests;
|
|
|
using SqlSugar;
|
|
|
using System.Reflection;
|
|
@@ -125,7 +128,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.Select(p => new DepartmentalProcessingStatisticsDataDto
|
|
|
{
|
|
|
OrgCode = p.OrgCode,
|
|
|
- // OrderCountNum = SqlFunc.AggregateSum(p.OrderCountNum),
|
|
|
+ // OrderCountNum = SqlFunc.AggregateSum(p.OrderCountNum),
|
|
|
YbOrderCountNum = SqlFunc.AggregateSum(p.YbOrderCountNum),
|
|
|
ZbOrderCountNum = SqlFunc.AggregateSum(p.ZbOrderCountNum),
|
|
|
Archived = SqlFunc.AggregateSum(p.Archived),
|
|
@@ -135,7 +138,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
PublishedNoOpen = SqlFunc.AggregateSum(p.PublishedNoOpen),
|
|
|
YbOverdue = SqlFunc.AggregateSum(p.YbOverdue),
|
|
|
ZbOverdue = SqlFunc.AggregateSum(p.ZbOverdue),
|
|
|
- CompleteOnTime= SqlFunc.AggregateSum(p.CompleteOnTime),
|
|
|
+ CompleteOnTime = SqlFunc.AggregateSum(p.CompleteOnTime),
|
|
|
HqybOverdue = SqlFunc.AggregateSum(p.HqybOverdue),
|
|
|
HqzbOverdue = SqlFunc.AggregateSum(p.HqzbOverdue),
|
|
|
DelayEnd = SqlFunc.AggregateSum(p.DelayEnd),
|
|
@@ -150,7 +153,56 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
})
|
|
|
.MergeTable();
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 区域分时统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartTime"></param>
|
|
|
+ /// <param name="EndTime"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<object> OrderAreaTime(DateTime? StartTime, DateTime? EndTime)
|
|
|
+ {
|
|
|
+ List<int> dts = new List<int>();
|
|
|
+ for (int i = 0; i < 24; i++)
|
|
|
+ {
|
|
|
+ dts.Add(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ var listHour = Db.Reportable(dts).ToQueryable<int>();
|
|
|
+ var listOrder = Db.Queryable<Order>()
|
|
|
+ .Where(p => p.CreationTime >= StartTime && p.CreationTime <= EndTime)
|
|
|
+ .Select(p => new
|
|
|
+ {
|
|
|
+ AreaCode = p.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
+ Hour = p.CreationTime.Hour.ToString()
|
|
|
+ })
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ var listOrg = Db.Queryable<SystemArea>()
|
|
|
+ .LeftJoin(listOrder, (s, p) => s.Id == p.AreaCode)
|
|
|
+ .Where((s, p) => s.Id.Length == 6 && s.Id != "510000")
|
|
|
+ .GroupBy((s, p) => s.Id)
|
|
|
+ .GroupBy((s, p) => p.Hour)
|
|
|
+ .Select((s, p) => new
|
|
|
+ {
|
|
|
+ count = SqlFunc.AggregateSum(SqlFunc.IIF(p.AreaCode != null && p.AreaCode != "", 1, 0)),
|
|
|
+ AreaCode = s.Id,
|
|
|
+ Hour = SqlFunc.IIF(p.Hour == null || p.Hour == "", "0", p.Hour)
|
|
|
+ })
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ return await listHour.LeftJoin(listOrg, (x, p) => x.ColumnName.ToString() == p.Hour)
|
|
|
+ .OrderBy(x => x.ColumnName)
|
|
|
+ .Select((x, p) => new
|
|
|
+ {
|
|
|
+ Hour = x.ColumnName.ToString()+":00 - "+ x.ColumnName.ToString()+":59",
|
|
|
+ p.AreaCode,
|
|
|
+ p.count
|
|
|
+ })
|
|
|
+ .ToPivotListAsync(p => p.AreaCode, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2)
|