diff --git a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs index 47b8064..8343be7 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs @@ -43,6 +43,22 @@ namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Product return SUCCESS(response); } + //TODO 本周 各工序产量统计 + [HttpGet("BarProcessProductStatistic_week")] + public IActionResult BarProcessProductStatisticWeek() + { + var response = _productSmartScreenService.BarProcessProductStatisticWeek(); + + return SUCCESS(response); + } + //TODO 本月 各工序产量统计 + [HttpGet("BarProcessProductStatistic_month")] + public IActionResult BarProcessProductStatisticMonth() + { + var response = _productSmartScreenService.BarProcessProductStatisticMonth(); + + return SUCCESS(response); + } //TODO 本月产量 折线图 diff --git a/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs index cd009d2..04d1054 100644 --- a/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs +++ b/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs @@ -14,6 +14,8 @@ namespace DOAN.Service.MES.SmartScreen.Product.IService DigitalTurntableModel DigitalTurntable(); EchartsOptions BarProcessProductStatistic(); + EchartsOptions BarProcessProductStatisticMonth(); + EchartsOptions BarProcessProductStatisticWeek(); EchartsOptions OutputOfCurrentmonth(); diff --git a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs index f598b3a..bf26ec2 100644 --- a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs +++ b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs @@ -11,6 +11,7 @@ using DOAN.Model.MES.SmartScreen.Product; using DOAN.Model.MES.SmartScreen; using Microsoft.Data.SqlClient; using DOAN.Model.MES.base_; +using MathNet.Numerics; namespace DOAN.Service.MES.SmartScreen.Product { @@ -65,7 +66,7 @@ namespace DOAN.Service.MES.SmartScreen.Product echartsOptions.XAxis=xAxis; //获取各个工序今日累计报工值 EchartsSeries echartsSeries = new EchartsSeries(); - echartsSeries.Name = "今日各个工序今日累计报工数"; + echartsSeries.Name = "今日各个工序累计报工数"; List Data = Context.Queryable() .LeftJoin((it,w)=>it.ProcessId==w.Id) .Where((it, w) => it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1)) @@ -79,7 +80,7 @@ namespace DOAN.Service.MES.SmartScreen.Product echartsOptions.Series.Add(echartsSeries); //获取各个工序今日累计计划值 EchartsSeries echartsSeries2 = new EchartsSeries(); - echartsSeries2.Name = "今日各个工序今日累计计划数"; + echartsSeries2.Name = "今日各个工序累计计划数"; List Data2 = Context.Queryable() .LeftJoin((it, w) => it.ProcessId == w.Id) .Where((it, w) => it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1)) @@ -94,6 +95,120 @@ namespace DOAN.Service.MES.SmartScreen.Product + return echartsOptions; + } + public EchartsOptions BarProcessProductStatisticWeek() + { + // 获取当前时间 + DateTime now = DateTime.Now; + + // 计算到本周一需要减去的天数 + int daysToSubtract = ((int)now.DayOfWeek - (int)DayOfWeek.Monday + 7) % 7; + + // 获取本周一的日期 + DateTime mondayMorning = now.AddDays(-daysToSubtract).Date; // .Date将时间设置为00:00:00 + + // 获取本周日午夜(实际上是下周一开始时间) + DateTime sundayMidnight = mondayMorning.AddDays(7); + + + EchartsOptions echartsOptions = new EchartsOptions(); + echartsOptions.Title = new EchartsTitle("本周各工序产量统计", "本周各工序产量统计"); + EchartsXAxis xAxis = new EchartsXAxis(); + + xAxis.Data = Context.Queryable().LeftJoin((r, p) => r.FkWorkProcesses == p.Id) + .Where((r, p) => r.FkWorkRoute == 32) + .OrderBy((r, p) => p.Id) + .Select((r, p) => p.Name) + .ToList(); + echartsOptions.XAxis = xAxis; + //获取各个工序今日累计报工值 + EchartsSeries echartsSeries = new EchartsSeries(); + echartsSeries.Name = "本周各个工序累计报工数"; + List Data = Context.Queryable() + .LeftJoin((it, w) => it.ProcessId == w.Id) + .Where((it, w) => it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight) + .GroupBy((it, w) => new { it.ProcessId, w.Name }) + .Select((it, w) => new EchartsSeriesData() + { + Name = w.Name, + Value = SqlFunc.AggregateSum(it.FinishNum ?? 0) + }).ToList(); + echartsSeries.Data = Data; + echartsOptions.Series.Add(echartsSeries); + //获取各个工序今日累计计划值 + EchartsSeries echartsSeries2 = new EchartsSeries(); + echartsSeries2.Name = "本周各个工序累计计划数"; + List Data2 = Context.Queryable() + .LeftJoin((it, w) => it.ProcessId == w.Id) + .Where((it, w) => it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight) + .GroupBy((it, w) => new { it.ProcessId, w.Name }) + .Select((it, w) => new EchartsSeriesData() + { + Name = w.Name, + Value = SqlFunc.AggregateSum(it.PlanNum ?? 0) + }).ToList(); + echartsSeries2.Data = Data2; + echartsOptions.Series.Add(echartsSeries2); + + + + return echartsOptions; + } + public EchartsOptions BarProcessProductStatisticMonth() + { + // 获取当前日期时间 + DateTime now = DateTime.Now; + + // 获取本月第一天的日期时间(凌晨) + DateTime firstDayOfMonth = new DateTime(now.Year, now.Month, 1, 0, 0, 0); + + // 获取本月最后一天的日期时间(午夜) + int daysInMonth = DateTime.DaysInMonth(now.Year, now.Month); + DateTime lastDayOfMonth = new DateTime(now.Year, now.Month, daysInMonth, 23, 59, 59); + + + EchartsOptions echartsOptions = new EchartsOptions(); + echartsOptions.Title = new EchartsTitle("本月各工序产量统计", "本月各工序产量统计"); + EchartsXAxis xAxis = new EchartsXAxis(); + + xAxis.Data = Context.Queryable().LeftJoin((r, p) => r.FkWorkProcesses == p.Id) + .Where((r, p) => r.FkWorkRoute == 32) + .OrderBy((r, p) => p.Id) + .Select((r, p) => p.Name) + .ToList(); + echartsOptions.XAxis = xAxis; + //获取各个工序今日累计报工值 + EchartsSeries echartsSeries = new EchartsSeries(); + echartsSeries.Name = "本月各个工序今日累计报工数"; + List Data = Context.Queryable() + .LeftJoin((it, w) => it.ProcessId == w.Id) + .Where((it, w) => it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth) + .GroupBy((it, w) => new { it.ProcessId, w.Name }) + .Select((it, w) => new EchartsSeriesData() + { + Name = w.Name, + Value = SqlFunc.AggregateSum(it.FinishNum ?? 0) + }).ToList(); + echartsSeries.Data = Data; + echartsOptions.Series.Add(echartsSeries); + //获取各个工序今日累计计划值 + EchartsSeries echartsSeries2 = new EchartsSeries(); + echartsSeries2.Name = "本月各个工序今日累计计划数"; + List Data2 = Context.Queryable() + .LeftJoin((it, w) => it.ProcessId == w.Id) + .Where((it, w) => it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth) + .GroupBy((it, w) => new { it.ProcessId, w.Name }) + .Select((it, w) => new EchartsSeriesData() + { + Name = w.Name, + Value = SqlFunc.AggregateSum(it.PlanNum ?? 0) + }).ToList(); + echartsSeries2.Data = Data2; + echartsOptions.Series.Add(echartsSeries2); + + + return echartsOptions; }