|
@@ -1,4 +1,5 @@
|
|
|
-using Hotline.CallCenter.Calls;
|
|
|
+using System.Collections;
|
|
|
+using Hotline.CallCenter.Calls;
|
|
|
using Hotline.Orders;
|
|
|
using Hotline.Repository.SqlSugar.DataPermissions;
|
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
@@ -27,6 +28,7 @@ using System.Collections.Generic;
|
|
|
using Hotline.SeedData;
|
|
|
using Hotline.Share.Notifications.NewRockCallCenter;
|
|
|
using Hotline.Statistics;
|
|
|
+using System.Dynamic;
|
|
|
|
|
|
namespace Hotline.Repository.SqlSugar.Orders
|
|
|
{
|
|
@@ -424,7 +426,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<DataTable> OrderAcceptanceTime(TimeSharingPagedKeywordRequest dto)
|
|
|
+ public async Task<object> OrderAcceptanceTime(TimeSharingPagedKeywordRequest dto)
|
|
|
{
|
|
|
List<int> dts = new List<int>();
|
|
|
for (int i = 0; i < 24; i++)
|
|
@@ -446,7 +448,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)
|
|
@@ -460,65 +462,33 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.MergeTable();
|
|
|
|
|
|
var list = await listHour.LeftJoin(listOrg, (x, p) => x.ColumnName.ToString() == p.Hour)
|
|
|
- .Where((x,p)=> !string.IsNullOrEmpty(p.DicDataValue))
|
|
|
- .OrderBy(x => x.ColumnName)
|
|
|
+ //.Where((x,p)=> !string.IsNullOrEmpty(p.DicDataValue))
|
|
|
+ .OrderBy((x,p) => x.ColumnName )
|
|
|
.Select((x, p) => new
|
|
|
{
|
|
|
Hour = x.ColumnName.ToString() + ":00 - " + x.ColumnName.ToString() + ":59",
|
|
|
p.DicDataValue,
|
|
|
p.count
|
|
|
})
|
|
|
+ .MergeTable()
|
|
|
.ToPivotTableAsync(p => p.DicDataValue, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
- var dtList = list.Clone();
|
|
|
-
|
|
|
- foreach (DataColumn col in dtList.Columns)
|
|
|
- {
|
|
|
- if (col.ColumnName != "Hour")
|
|
|
- {
|
|
|
- col.DataType = typeof(Int64);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- foreach (DataRow row in list.Rows)
|
|
|
+ var col = list.Columns.Contains("Column1");
|
|
|
+ if (col)
|
|
|
{
|
|
|
- DataRow rowNew = dtList.NewRow();
|
|
|
- for (int i = 0; i < list.Columns.Count; i++)
|
|
|
- {
|
|
|
- rowNew[i] = list.Columns[i].ColumnName == "Hour"? row[i]: int.Parse(row[i].ToString()) ;
|
|
|
- }
|
|
|
- dtList.Rows.Add(rowNew);
|
|
|
- }
|
|
|
+ list.Columns.Remove("Column1");
|
|
|
+ }
|
|
|
+ var dtList = list.Clone();
|
|
|
|
|
|
- //foreach (DataColumn col in dtList.Columns)
|
|
|
- //{
|
|
|
- // if (col.ColumnName != "Hour" || col.ColumnName != "Column1")
|
|
|
- // {
|
|
|
- // col.DataType = typeof(Int64);
|
|
|
- // }
|
|
|
- //}
|
|
|
- //foreach (DataColumn col in dtList.Columns)
|
|
|
- //{
|
|
|
- // if (col.ColumnName != "Hour" || col.ColumnName != "Column1")
|
|
|
- // {
|
|
|
- // col.DataType = typeof(Int64);
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
- //foreach (DataRow row in list.Rows)
|
|
|
- //{
|
|
|
- // DataRow rowNew = dtList.NewRow();
|
|
|
- // rowNew = row;
|
|
|
- // dtList.Rows.Add(rowNew);
|
|
|
- //}
|
|
|
- if (await Db.Queryable<StatisticsPurTypeSatisfied>().Where(x => x.DateTime >= dto.StartTime && x.DateTime <= dto.EndTime).AnyAsync())
|
|
|
+ if (await Db.Queryable<StatisticsPurTypeSatisfied>().Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime).AnyAsync())
|
|
|
{
|
|
|
- // 老系统数据
|
|
|
- var oldData = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
- .Where(x => x.DateTime >= dto.StartTime && x.DateTime <= dto.EndTime)
|
|
|
+ // 老系统数据
|
|
|
+ var oldData = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
+ .Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime)
|
|
|
.GroupBy(x => x.Month)
|
|
|
.Select(x => new
|
|
|
{
|
|
|
- Hour = x.Month.ToString() + ":00 - " + x.Month.ToString() + ":59",
|
|
|
+ _Hour = x.Month.ToString() + ":00 - " + x.Month.ToString() + ":59",
|
|
|
_1 = SqlFunc.AggregateSum(x.Opinion),
|
|
|
_2 = SqlFunc.AggregateSum(x.PeopleHelp),
|
|
|
_3 = SqlFunc.AggregateSum(x.PollutionReporting),
|
|
@@ -532,29 +502,61 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
_50 = SqlFunc.AggregateSum(x.Epidemic),
|
|
|
_SB = SqlFunc.AggregateSum(x.Declare),
|
|
|
}).ToDataTableAsync();
|
|
|
- // var listHour2 = Db.Reportable(dts).ToQueryable<int>();
|
|
|
- //var oldData = await listHour2.MergeTable().LeftJoin(oldQuery, (x,p) => x.ColumnName.ToString() == p.Month.ToString())
|
|
|
- // .OrderBy((x, p) => x.ColumnName)
|
|
|
- // .Select((x, p) => new
|
|
|
- // {
|
|
|
- // Hour = x.ColumnName.ToString() + ":00 - " + x.ColumnName.ToString() + ":59", p._1,p._2,p._3,p._10,p._15,p._20,p._25,p._30,p._35,p._40,p._50,p._SB
|
|
|
- // }).ToDataTableAsync();
|
|
|
-
|
|
|
- foreach (DataColumn column in oldData.Columns)
|
|
|
- {
|
|
|
- column.ColumnName = column.ColumnName.Replace("_", "");
|
|
|
- }
|
|
|
- dtList.Merge(oldData);
|
|
|
- }
|
|
|
- return dtList;
|
|
|
- }
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 受理类型分时统计---导出
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public async Task<DataTable> OrderAcceptanceTimeExport(TimeSharingPagedKeywordRequest dto)
|
|
|
+ #region 处理数据
|
|
|
+
|
|
|
+ for (int i = 0; i < list.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ DataRow newRow = dtList.NewRow();
|
|
|
+ for (int j = 0; j < list.Columns.Count; j++)
|
|
|
+ {
|
|
|
+ if (i == 0)
|
|
|
+ {
|
|
|
+ dtList.Columns[i].DataType = list.Columns[i].ColumnName == "Hour" ? typeof(string) : typeof(Int64);
|
|
|
+ }
|
|
|
+ if (list.Columns[j].ColumnName == "Hour")
|
|
|
+ {
|
|
|
+ newRow[j] = list.Rows[i][j];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var num = string.IsNullOrEmpty(list.Rows[i][j].ToString()) ? 0 : int.Parse(list.Rows[i][j].ToString());
|
|
|
+ var oldRow = oldData.AsEnumerable().Where(x => x.Field<string>("_Hour") == list.Rows[i]["hour"]).FirstOrDefault();
|
|
|
+ var allNum = oldRow == null ? num : oldRow.Field<int>(dtList.Columns[i].ColumnName) + num;
|
|
|
+ newRow[j] = allNum;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dtList.Rows.Add(newRow);
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ return ToDynamicList(dtList);
|
|
|
+ }
|
|
|
+ public static List<dynamic> ToDynamicList( DataTable dt)
|
|
|
+ {
|
|
|
+ List<dynamic> dynamicList = new List<dynamic>();
|
|
|
+
|
|
|
+ foreach (DataRow row in dt.Rows)
|
|
|
+ {
|
|
|
+ dynamic dynamicObj = new ExpandoObject();
|
|
|
+ var expandoDict = (IDictionary<string, object>)dynamicObj;
|
|
|
+ foreach (DataColumn column in dt.Columns)
|
|
|
+ {
|
|
|
+ expandoDict[column.ColumnName] = row[column];
|
|
|
+ }
|
|
|
+ dynamicList.Add(dynamicObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ return dynamicList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 受理类型分时统计---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<DataTable> OrderAcceptanceTimeExport(TimeSharingPagedKeywordRequest dto)
|
|
|
{
|
|
|
List<int> dts = new();
|
|
|
for (int i = 0; i < 24; i++)
|