Explorar el Código

统计图表优化,产量计算8点到20点

KWD hace 2 meses
padre
commit
7de238f449

+ 45 - 10
TeamAAS-VM/Data/SystemDatabaseService.cs

@@ -395,11 +395,28 @@ namespace TeamAAS_VP.Data
         /// <returns></returns>
         public async Task<int> GetTodayProductionAsync(string productName)
         {
-            //今天的起始时间
-            var todayStart = DateTime.UtcNow.Date;
-            //今天的结束时间
-            var todayEnd = DateTime.UtcNow.Date;
-            todayEnd = todayEnd.AddDays(1);
+            DateTime todayStart;
+            DateTime todayEnd;
+
+            if (DateTime.Now.Hour >= 8 && DateTime.Now.Hour < 20)
+            {
+                // 白班
+                todayStart = DateTime.Today.AddHours(8);
+                todayEnd = DateTime.Today.AddHours(20);
+            }
+            else if (DateTime.Now.Hour >= 20)
+            {
+                // 当天夜班
+                todayStart = DateTime.Today.AddHours(20);
+                todayEnd = DateTime.Today.AddDays(1).AddHours(8);
+            }
+            else
+            {
+                // 凌晨属于前一天夜班
+                todayStart = DateTime.Today.AddDays(-1).AddHours(20);
+                todayEnd = DateTime.Today.AddHours(8);
+            }
+
             //按照产品名称和时间范围查询生产记录的总数
             //var total = await _db.Queryable<ProductionRecord>()
             //    .Where(r => r.ProductName == productName && r.Timestamp >= todayStart && r.Timestamp < todayEnd)
@@ -435,16 +452,34 @@ namespace TeamAAS_VP.Data
         }
 
         /// <summary>
-        /// 获取所有已知分类相加起来的当前时间往前的一个小时的产能
+        /// 获取所有已知分类相加起来的今天NG的产能
         /// </summary>
         /// <param name="productName"></param>
         /// <returns></returns>
         public async Task<int> GetNGProductionAsync(string productName)
         {
-            var todayStart = DateTime.UtcNow.Date;
-            //今天的结束时间
-            var todayEnd = DateTime.UtcNow.Date;
-            todayEnd = todayEnd.AddDays(1);
+            DateTime todayStart;
+            DateTime todayEnd;
+
+            if (DateTime.Now.Hour >= 8 && DateTime.Now.Hour < 20)
+            {
+                // 白班
+                todayStart = DateTime.Today.AddHours(8);
+                todayEnd = DateTime.Today.AddHours(20);
+            }
+            else if (DateTime.Now.Hour >= 20)
+            {
+                // 当天夜班
+                todayStart = DateTime.Today.AddHours(20);
+                todayEnd = DateTime.Today.AddDays(1).AddHours(8);
+            }
+            else
+            {
+                // 凌晨属于前一天夜班
+                todayStart = DateTime.Today.AddDays(-1).AddHours(20);
+                todayEnd = DateTime.Today.AddHours(8);
+            }
+
             //按照产品名称和时间范围查询生产记录的总数
             //var total = await _db.Queryable<ProductionRecord>()
             //    .Where(r => r.ProductName == productName && r.Timestamp >= todayStart && r.Timestamp < todayEnd && r.Category == "NG")

+ 23 - 14
TeamAAS-VM/ViewModels/Statistics/ProductionStatementViewModel.cs

@@ -244,8 +244,8 @@ namespace TeamAAS_VP.ViewModels.Statistics
             var ay1 = new LinearAxis()
             {
                 Key = "y1",
-                Title= Lang.数量,
-                TitlePosition=1,
+                Title = Lang.数量,
+                TitlePosition = 1,
                 Minimum = 0,
                 Position = AxisPosition.Left,
                 IsZoomEnabled = false,
@@ -287,14 +287,14 @@ namespace TeamAAS_VP.ViewModels.Statistics
             {
                 return model;
             }
-
             foreach (var category in Items.First().Value.Keys)
             {
                 var barSeries = new LinearBarSeries { Title = category };
                 barSeries.YAxisKey = "y1";
                 barSeries.BarWidth = 10;
                 // 点击时弹出的label内容
-                barSeries.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.日}: {4:0}";
+                //barSeries.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.日}: {4:0}";
+                barSeries.TrackerFormatString = "{0}\r\n{2:dd}: {4:0}";
                 foreach (var item in Items)
                 {
                     if (item.Value.ContainsKey(category))
@@ -306,13 +306,13 @@ namespace TeamAAS_VP.ViewModels.Statistics
                         barSeries.Points.Add(new OxyPlot.DataPoint(DateTimeAxis.ToDouble(item.Key), 0));
                     }
                 }
-
                 model.Series.Add(barSeries);
             }
 
             var Series = new LineSeries { Title = Lang.总产量 };
             Series.YAxisKey = "y1";
-            Series.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.日}: {4:0}";
+            //Series.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.日}: {4:0}";
+            Series.TrackerFormatString = "{0}\r\n{2:dd}: {4:0}";
             foreach (var item in Items)
             {
                 Int64 count = 0;
@@ -384,8 +384,6 @@ namespace TeamAAS_VP.ViewModels.Statistics
             {
                 return model;
             }
-
-
             foreach (var category in Items.First().Value.Keys)
             {
 
@@ -393,7 +391,8 @@ namespace TeamAAS_VP.ViewModels.Statistics
                 barSeries.YAxisKey = "y1";
                 barSeries.BarWidth = 10;
                 // 点击时弹出的label内容
-                barSeries.TrackerFormatString = $"{0}\r\n{Lang.周}{2:0}: {4:0}";
+                //barSeries.TrackerFormatString = $"{0}\r\n{Lang.周}{2:0}: {44:0}";
+                barSeries.TrackerFormatString = "{0}\r\n{2:0}: {4:0}";
                 foreach (var item in Items)
                 {
                     if (item.Value.ContainsKey(category))
@@ -411,7 +410,8 @@ namespace TeamAAS_VP.ViewModels.Statistics
 
             var Series = new LineSeries { Title = Lang.当前周产能统计 };
             Series.YAxisKey = "y1";
-            Series.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.日}: {4:0}";
+            //Series.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.日}: {4:0}";
+            Series.TrackerFormatString = "{0}\r\n{2:0}: {4:0}";
             foreach (var item in Items)
             {
                 Int64 count = 0;
@@ -480,7 +480,7 @@ namespace TeamAAS_VP.ViewModels.Statistics
             model.Axes.Add(ay1);
             model.Axes.Add(ax);
 
-            if (Items.Count<=0)
+            if (Items.Count <= 0)
             {
                 return model;
             }
@@ -492,10 +492,18 @@ namespace TeamAAS_VP.ViewModels.Statistics
                 barSeries.YAxisKey = "y1";
                 barSeries.BarWidth = 10;
                 // 点击时弹出的label内容
-                barSeries.TrackerFormatString = "{0}\r\n{2:0}Hours: {4:0}";
+                barSeries.TrackerFormatString = "{0}\r\n{2:0}H: {4:0}";
                 foreach (var item in Items)
                 {
-                    barSeries.Points.Add(new OxyPlot.DataPoint(LinearAxis.ToDouble(item.Key), (double)(item.Value[category])));
+                    if (item.Value.ContainsKey(category))
+                    {
+                        barSeries.Points.Add(new OxyPlot.DataPoint(DateTimeAxis.ToDouble(item.Key), (double)(item.Value[category])));
+                    }
+                    else
+                    {
+                        barSeries.Points.Add(new OxyPlot.DataPoint(DateTimeAxis.ToDouble(item.Key), 0));
+                    }
+
                 }
 
                 model.Series.Add(barSeries);
@@ -503,7 +511,8 @@ namespace TeamAAS_VP.ViewModels.Statistics
 
             var Series = new LineSeries { Title = Lang.总产量 };
             Series.YAxisKey = "y1";
-            Series.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.小时}: {4:0}";
+            //Series.TrackerFormatString = $"{0}\r\n{2:dd}{Lang.小时}: {4:0}";
+            Series.TrackerFormatString = "{0}\r\n{2:0}H: {4:0}";
             foreach (var item in Items)
             {
                 Int64 count = 0;