Browse Source

受理类型分时统计

田爽 4 tháng trước cách đây
mục cha
commit
940ca71cb7

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

@@ -3773,13 +3773,14 @@ namespace Hotline.Api.Controllers.Bi
 
             var titleData = await _systemDicDataRepository.Queryable()
                 .Where(p => p.DicTypeCode == "AcceptType")
-                .Select(p => new
+                .Select(p => new Kv()
                 {
-                    Key = p.DicDataValue,
+                    Key =  p.DicDataValue,
                     Value = p.DicDataName
                 }).ToListAsync();
-
-            return new { Item = item, TitleData = titleData };
+			 var res = new  { Item = item, TitleData = titleData };
+			 var resString = Newtonsoft.Json.JsonConvert.SerializeObject(res);
+			return Newtonsoft.Json.JsonConvert.DeserializeObject(resString);
         }
 
         /// <summary>

+ 2 - 2
src/Hotline.Api/Program.cs

@@ -38,8 +38,8 @@ try
         .Enrich.FromLogContext()
         .ReadFrom.Configuration(ctx.Configuration), true)
         ;
-
-    builder
+    //builder.Services.AddControllers().AddNewtonsoftJson();
+	builder
         .ConfigureServices()
         .ConfigurePipelines()
         .Run();

+ 82 - 3
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -25,6 +25,8 @@ using XF.Domain.Dependency;
 using XF.Domain.Repository;
 using System.Collections.Generic;
 using Hotline.SeedData;
+using Hotline.Share.Notifications.NewRockCallCenter;
+using Hotline.Statistics;
 
 namespace Hotline.Repository.SqlSugar.Orders
 {
@@ -422,7 +424,7 @@ namespace Hotline.Repository.SqlSugar.Orders
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        public async Task<object> OrderAcceptanceTime(TimeSharingPagedKeywordRequest dto)
+        public async Task<DataTable> OrderAcceptanceTime(TimeSharingPagedKeywordRequest dto)
         {
             List<int> dts = new List<int>();
             for (int i = 0; i < 24; i++)
@@ -458,6 +460,7 @@ 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)
                .Select((x, p) => new
                {
@@ -465,9 +468,85 @@ namespace Hotline.Repository.SqlSugar.Orders
                    p.DicDataValue,
                    p.count
                })
-                .ToPivotListAsync(p => p.DicDataValue, p => p.Hour, p => p.Sum(x => x.count));
-            return list;
+               .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)
+            {
+	            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);
+            }
 
+            //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())
+            {
+                // 老系统数据
+                var oldData = await Db.Queryable<StatisticsPurTypeSatisfied>()
+                    .Where(x => x.DateTime >= dto.StartTime && x.DateTime <= dto.EndTime)
+                    .GroupBy(x => x.Month)
+                    .Select(x => new
+                    {
+						Hour = x.Month.ToString() + ":00 - " + x.Month.ToString() + ":59",
+						_1 = SqlFunc.AggregateSum(x.Opinion),
+                        _2 = SqlFunc.AggregateSum(x.PeopleHelp),
+                        _3 = SqlFunc.AggregateSum(x.PollutionReporting),
+                        _10 = SqlFunc.AggregateSum(x.Consult),
+                        _15 = SqlFunc.AggregateSum(x.Suggest),
+                        _20 = SqlFunc.AggregateSum(x.SeekHelp),
+                        _25 = SqlFunc.AggregateSum(x.Praise),
+                        _30 = SqlFunc.AggregateSum(x.Report),
+                        _35 = SqlFunc.AggregateSum(x.Complaint),
+                        _40 = SqlFunc.AggregateSum(x.Rests) + SqlFunc.AggregateSum(x.Invalid),
+                        _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>

+ 3 - 1
src/Hotline.Share/Dtos/Kv.cs

@@ -1,4 +1,6 @@
-namespace Hotline.Share.Dtos;
+using System.Security.Cryptography.X509Certificates;
+
+namespace Hotline.Share.Dtos;
 
 public class Kv
 {

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

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

+ 1 - 1
src/Hotline/Statistics/StatisticsDepart.cs

@@ -202,7 +202,7 @@ namespace Hotline.Statistics
 		/// 统计日期
 		/// </summary>
 		[SugarColumn(ColumnDescription = "统计日期")]
-		public int DateTime { get; set; }
+		public DateTime Time { get; set; }
 
 		/// <summary>
 		/// 统计时限

+ 1 - 1
src/Hotline/Statistics/StatisticsDepartSatisfied.cs

@@ -136,7 +136,7 @@ namespace Hotline.Statistics
 		/// 统计日期
 		/// </summary>
 		[SugarColumn(ColumnDescription = "统计日期")]
-		public int DateTime { get; set; }
+		public DateTime Time { get; set; }
 
 		/// <summary>
 		/// 统计时限

+ 1 - 1
src/Hotline/Statistics/StatisticsHotspotSatisfied.cs

@@ -105,7 +105,7 @@ namespace Hotline.Statistics
 		/// 统计日期
 		/// </summary>
 		[SugarColumn(ColumnDescription = "统计日期")]
-		public int DateTime { get; set; }
+		public DateTime Time { get; set; }
 
 		/// <summary>
 		/// 统计时限

+ 1 - 1
src/Hotline/Statistics/StatisticsPurTypeSatisfied.cs

@@ -106,7 +106,7 @@ namespace Hotline.Statistics
 		/// 统计日期
 		/// </summary>
 		[SugarColumn(ColumnDescription = "统计日期")]
-		public int DateTime { get; set; }
+		public DateTime Time { get; set; }
 
 		/// <summary>
 		/// 统计时限