|
@@ -260,51 +260,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
})
|
|
|
.ToPivotTableAsync(p => p.AreaName, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
|
|
|
- //修改列名
|
|
|
- dt.Columns["Hour"].ColumnName = "时间段";
|
|
|
- dt.Columns.Remove("Column1");
|
|
|
-
|
|
|
- //增加小计
|
|
|
- DataColumn totalColumn = new DataColumn("小计", typeof(decimal));
|
|
|
- dt.Columns.Add(totalColumn);
|
|
|
- for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
- {
|
|
|
- int sumcount = 0;
|
|
|
- for (int j = 1; j < dt.Columns.Count - 1; j++)
|
|
|
- {
|
|
|
- sumcount += Convert.ToInt32(dt.Rows[i][j].ToString());
|
|
|
- }
|
|
|
- dt.Rows[i][dt.Columns.Count - 1] = sumcount;
|
|
|
- }
|
|
|
-
|
|
|
- //增加合计
|
|
|
- DataRow totalRow = dt.NewRow();
|
|
|
- totalRow["时间段"] = "合计";
|
|
|
- for (int i = 1; i < dt.Columns.Count; i++)
|
|
|
- {
|
|
|
- int sumcount = 0;
|
|
|
- for (int j = 0; j < dt.Rows.Count; j++)
|
|
|
- {
|
|
|
- sumcount += Convert.ToInt32(dt.Rows[j][i].ToString());
|
|
|
- }
|
|
|
- totalRow[i] = sumcount;
|
|
|
- }
|
|
|
- dt.Rows.Add(totalRow);
|
|
|
-
|
|
|
- //移除列
|
|
|
- if (dto.AddColumnName.Any())
|
|
|
- {
|
|
|
- for (int i = 0; i < dt.Columns.Count; i++)
|
|
|
- {
|
|
|
- var name = dt.Columns[i].ColumnName;
|
|
|
- if (!dto.AddColumnName.Contains(name))
|
|
|
- {
|
|
|
- dt.Columns.Remove(name);
|
|
|
- i = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return dt;
|
|
|
+ return InitDatatTable(dt, dto.AddColumnName);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -408,51 +364,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
})
|
|
|
.ToPivotTableAsync(p => p.HotSpotName, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
|
|
|
- //修改列名
|
|
|
- dt.Columns["Hour"].ColumnName = "时间段";
|
|
|
- dt.Columns.Remove("Column1");
|
|
|
-
|
|
|
- //增加小计
|
|
|
- DataColumn totalColumn = new DataColumn("小计", typeof(decimal));
|
|
|
- dt.Columns.Add(totalColumn);
|
|
|
- for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
- {
|
|
|
- int sumcount = 0;
|
|
|
- for (int j = 1; j < dt.Columns.Count - 1; j++)
|
|
|
- {
|
|
|
- sumcount += Convert.ToInt32(dt.Rows[i][j].ToString());
|
|
|
- }
|
|
|
- dt.Rows[i][dt.Columns.Count - 1] = sumcount;
|
|
|
- }
|
|
|
-
|
|
|
- //增加合计
|
|
|
- DataRow totalRow = dt.NewRow();
|
|
|
- totalRow["时间段"] = "合计";
|
|
|
- for (int i = 1; i < dt.Columns.Count; i++)
|
|
|
- {
|
|
|
- int sumcount = 0;
|
|
|
- for (int j = 0; j < dt.Rows.Count; j++)
|
|
|
- {
|
|
|
- sumcount += Convert.ToInt32(dt.Rows[j][i].ToString());
|
|
|
- }
|
|
|
- totalRow[i] = sumcount;
|
|
|
- }
|
|
|
- dt.Rows.Add(totalRow);
|
|
|
-
|
|
|
- //移除列
|
|
|
- if (dto.AddColumnName.Any())
|
|
|
- {
|
|
|
- for (int i = 0; i < dt.Columns.Count; i++)
|
|
|
- {
|
|
|
- var name = dt.Columns[i].ColumnName;
|
|
|
- if (!dto.AddColumnName.Contains(name))
|
|
|
- {
|
|
|
- dt.Columns.Remove(name);
|
|
|
- i = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return dt;
|
|
|
+ return InitDatatTable(dt, dto.AddColumnName);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -481,7 +393,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
|
|
|
var listOrg = Db.Queryable<SystemDicData>()
|
|
|
.LeftJoin(listOrder, (s, p) => s.DicDataValue == p.AcceptTypeCode)
|
|
|
- .Where((s, p) => s.DicTypeCode== "AcceptType")
|
|
|
+ .Where((s, p) => s.DicTypeCode == "AcceptType")
|
|
|
.GroupBy((s, p) => s.DicDataValue).GroupBy((s, p) => s.DicDataName)
|
|
|
.GroupBy((s, p) => p.Hour)
|
|
|
.OrderBy((s, p) => s.DicDataValue)
|
|
@@ -556,12 +468,130 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
})
|
|
|
.ToPivotTableAsync(p => p.DicDataName, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
|
|
|
+ return InitDatatTable(dt, dto.AddColumnName);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 信件来源分时统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<object> OrderSourceTime(TimeSharingPagedKeywordRequest dto)
|
|
|
+ {
|
|
|
+ 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 >= dto.StartTime && p.CreationTime <= dto.EndTime)
|
|
|
+ .WhereIF(dto.IdentityType != null, p => p.IdentityType == dto.IdentityType)
|
|
|
+ .Select(p => new
|
|
|
+ {
|
|
|
+ SourceChannelCode = p.SourceChannelCode,
|
|
|
+ Hour = p.CreationTime.Hour.ToString()
|
|
|
+ })
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ var listOrg = Db.Queryable<SystemDicData>()
|
|
|
+ .LeftJoin(listOrder, (s, p) => s.DicDataValue == p.SourceChannelCode)
|
|
|
+ .Where((s, p) => s.DicTypeCode == "SourceChannel")
|
|
|
+ .GroupBy((s, p) => s.DicDataValue).GroupBy((s, p) => s.DicDataName)
|
|
|
+ .GroupBy((s, p) => p.Hour)
|
|
|
+ .OrderBy((s, p) => s.DicDataValue)
|
|
|
+ .Select((s, p) => new
|
|
|
+ {
|
|
|
+ count = SqlFunc.AggregateSum(SqlFunc.IIF(p.SourceChannelCode != null && p.SourceChannelCode != "", 1, 0)),
|
|
|
+ DicDataValue = s.DicDataValue,
|
|
|
+ Hour = SqlFunc.IIF(p.Hour == null || p.Hour == "", "0", p.Hour),
|
|
|
+ DicDataName = s.DicDataName
|
|
|
+ })
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ var list = 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.DicDataValue,
|
|
|
+ p.count
|
|
|
+ })
|
|
|
+ .ToPivotListAsync(p => p.DicDataValue, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
+ return list;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 信件来源分时统计---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<DataTable> OrderSourceTimeExport(TimeSharingPagedKeywordRequest dto)
|
|
|
+ {
|
|
|
+ List<int> dts = new();
|
|
|
+ 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 >= dto.StartTime && p.CreationTime <= dto.EndTime)
|
|
|
+ .WhereIF(dto.IdentityType != null, p => p.IdentityType == dto.IdentityType)
|
|
|
+ .Select(p => new
|
|
|
+ {
|
|
|
+ SourceChannelCode = p.SourceChannelCode,
|
|
|
+ Hour = p.CreationTime.Hour.ToString()
|
|
|
+ })
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ var listOrg = Db.Queryable<SystemDicData>()
|
|
|
+ .LeftJoin(listOrder, (s, p) => s.DicDataValue == p.SourceChannelCode)
|
|
|
+ .Where((s, p) => s.DicTypeCode == "SourceChannel")
|
|
|
+ .GroupBy((s, p) => s.DicDataValue).GroupBy((s, p) => s.DicDataName)
|
|
|
+ .GroupBy((s, p) => p.Hour)
|
|
|
+ .OrderBy((s, p) => s.DicDataValue)
|
|
|
+ .Select((s, p) => new
|
|
|
+ {
|
|
|
+ count = SqlFunc.AggregateSum(SqlFunc.IIF(p.SourceChannelCode != null && p.SourceChannelCode != "", 1, 0)),
|
|
|
+ DicDataValue = s.DicDataValue,
|
|
|
+ Hour = SqlFunc.IIF(p.Hour == null || p.Hour == "", "0", p.Hour),
|
|
|
+ DicDataName = s.DicDataName
|
|
|
+ })
|
|
|
+ .MergeTable();
|
|
|
+
|
|
|
+ var dt = 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.DicDataName,
|
|
|
+ p.count
|
|
|
+ })
|
|
|
+ .ToPivotTableAsync(p => p.DicDataName, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
+ return InitDatatTable(dt, dto.AddColumnName);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 处理导出数据
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dt"></param>
|
|
|
+ /// <param name="AddColumnName"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public DataTable InitDatatTable(DataTable dt, List<string> AddColumnName)
|
|
|
+ {
|
|
|
//修改列名
|
|
|
- dt.Columns["Hour"].ColumnName = "时间段";
|
|
|
+ if (dt.Columns.Contains("Hour"))
|
|
|
+ dt.Columns["Hour"].ColumnName = "时间段";
|
|
|
|
|
|
//增加小计
|
|
|
DataColumn totalColumn = new DataColumn("小计", typeof(decimal));
|
|
|
dt.Columns.Add(totalColumn);
|
|
|
+ if (dt.Columns.Contains("Column1"))
|
|
|
+ dt.Columns.Remove("Column1");
|
|
|
+ //计算小计
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
{
|
|
|
int sumcount = 0;
|
|
@@ -586,20 +616,27 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
}
|
|
|
dt.Rows.Add(totalRow);
|
|
|
|
|
|
- //移除列
|
|
|
- if (dto.AddColumnName.Any())
|
|
|
+ //创建新表
|
|
|
+ DataTable dt2 = new DataTable();
|
|
|
+
|
|
|
+ //添加表头
|
|
|
+ foreach (var item in AddColumnName)
|
|
|
{
|
|
|
- for (int i = 0; i < dt.Columns.Count; i++)
|
|
|
+ if (dt.Columns.Contains(item))
|
|
|
+ dt2.Columns.Add(item);
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理数据
|
|
|
+ foreach (DataRow sourceRow in dt.Rows)
|
|
|
+ {
|
|
|
+ DataRow targetRow = dt2.NewRow();
|
|
|
+ foreach (var item in AddColumnName)
|
|
|
{
|
|
|
- var name = dt.Columns[i].ColumnName;
|
|
|
- if (!dto.AddColumnName.Contains(name))
|
|
|
- {
|
|
|
- dt.Columns.Remove(name);
|
|
|
- i = 0;
|
|
|
- }
|
|
|
+ targetRow[item] = sourceRow[item];
|
|
|
}
|
|
|
+ dt2.Rows.Add(targetRow);
|
|
|
}
|
|
|
- return dt;
|
|
|
+ return dt2;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|