Browse Source

受理类型分时统计

田爽 4 months ago
parent
commit
0821ea774b

+ 4 - 3
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -34,8 +34,10 @@ using Microsoft.Extensions.Options;
 using Org.BouncyCastle.Utilities.Collections;
 using SqlSugar;
 using System.Data;
+using Hotline.Share.Dtos.WebPortal;
 using XF.Domain.Authentications;
 using XF.Domain.Exceptions;
+using XF.Domain.Filters;
 using XF.Domain.Repository;
 using XF.Utility.EnumExtensions;
 
@@ -3777,10 +3779,9 @@ namespace Hotline.Api.Controllers.Bi
                 {
                     Key =  p.DicDataValue,
                     Value = p.DicDataName
-                }).ToListAsync();
+                }).OrderBy(p=>p.Key).ToListAsync();
 			 var res = new  { Item = item, TitleData = titleData };
-			 var resString = Newtonsoft.Json.JsonConvert.SerializeObject(res);
-			return Newtonsoft.Json.JsonConvert.DeserializeObject(resString);
+			return res;
         }
 
         /// <summary>

+ 72 - 70
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -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++)

+ 1 - 1
src/Hotline/Orders/IOrderRepository.cs

@@ -61,7 +61,7 @@ namespace Hotline.Orders
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        Task<DataTable> OrderAcceptanceTime(TimeSharingPagedKeywordRequest dto);
+        Task<object> OrderAcceptanceTime(TimeSharingPagedKeywordRequest dto);
 
         /// <summary>
         /// 受理类型分时统计---导出