diff --git a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs index 8343be7..119d453 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Product/ProductSmartScreenController.cs @@ -71,6 +71,16 @@ namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Product } + //TODO 今天各工序(人)的累计完工数 + [HttpGet("accumulatedreport")] + public IActionResult AccumulatedReport() + { + var response = _productSmartScreenService.AccumulatedReport(); + return SUCCESS(response); + + } + + } diff --git a/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs index 04d1054..e0a0a0a 100644 --- a/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs +++ b/DOAN.Service/MES/SmartScreen/Product/IService/IProductSmartScreenService.cs @@ -19,5 +19,7 @@ namespace DOAN.Service.MES.SmartScreen.Product.IService EchartsOptions OutputOfCurrentmonth(); + EchartsOptions AccumulatedReport(); + } } diff --git a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs index 8ba3228..c603271 100644 --- a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs +++ b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs @@ -12,6 +12,7 @@ using DOAN.Model.MES.SmartScreen; using Microsoft.Data.SqlClient; using DOAN.Model.MES.base_; using MathNet.Numerics; +using System.Data; namespace DOAN.Service.MES.SmartScreen.Product { @@ -45,7 +46,7 @@ namespace DOAN.Service.MES.SmartScreen.Product .Where(it => it.ProcessId == 90).Sum(it => it.FinishNum??0); - digital.GroupQuantity=Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).GroupBy(it=>it.GroupCode).Count(); + digital.GroupQuantity=Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Select(it=>it.GroupCode).MergeTable().Distinct().Count(); return digital; @@ -127,7 +128,7 @@ namespace DOAN.Service.MES.SmartScreen.Product echartsSeries.Name = "本周各个工序累计报工数"; List Data = Context.Queryable() .LeftJoin((it, w) => it.ProcessId == w.Id) - .Where((it, w) => it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight) + .Where((it, w) => w.Status == 1 && it.JobDateTime >= mondayMorning && it.JobDateTime <= sundayMidnight) .GroupBy((it, w) => new { it.ProcessId, w.Name }) .Select((it, w) => new EchartsSeriesData() { @@ -314,6 +315,74 @@ namespace DOAN.Service.MES.SmartScreen.Product } } + return echartsOptions; + + } + + + public EchartsOptions AccumulatedReport() + { + EchartsOptions echartsOptions = new EchartsOptions(); + + echartsOptions.Title = new EchartsTitle("今日各工序实时累计完工数折线图", "今日各工序实时累计完工数折线图"); + + //1.查询各个工序 + int[] processArray= Context.Queryable() + .Where(it => it.JobDateTime > DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)) + .Select(it => it.ProcessId) + .Distinct() + .ToArray(); + + //2 系列值-这组 今日实时累计完成数(每10分钟) + for(int i=0;i().Where(it => it.Id == processArray[i]).Select(it => it.Name).First(); + + EchartsSeries echartsSeries = new EchartsSeries(); + echartsSeries.Name = ProcessName + "工序今日实时累计完成数(每10分钟)"; + echartsSeries.Type = "line"; + List echartsSeriesDatas = new List(); + + string sql = "SELECT" + + "FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 ) * 600 ) AS time_period," + + "SUM( finish_num ) AS count " + + "FROM" + + "pro_reportwork " + + "WHERE" + + "DATE(job_datetime) = CURDATE() AND process_id=@ process_id " + + "GROUP BY" + + "FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 )" + + "ORDER BY" + + "time_period"; + + DataTable result = Context.Ado.GetDataTable(sql, new { process_id = processArray[i], }); + int sum = 0; + + + foreach (DataRow row in result.Rows) + { + // DateTime value =(DateTime)row["time_period"]; + DateTime value = row["time_period"] != DBNull.Value ? Convert.ToDateTime(row["time_period"]) : DateTime.MinValue; + int count = Convert.ToInt32(row["count"]); + + sum = sum + count; + EchartsSeriesData echartsSeriesData = new EchartsSeriesData() + { + Name = value.ToString("HH:mm"), + Value = sum + }; + echartsSeriesDatas.Add(echartsSeriesData); + } + + echartsSeries.Data = echartsSeriesDatas.OrderBy(it => it.Name).ToList(); + + echartsOptions.XAxis = new EchartsXAxis() { Data = echartsSeriesDatas.Select(it => it.Name).ToList() }; + + echartsOptions.Series.Add(echartsSeries); + + } + + return echartsOptions; }