diff --git a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs index 6260abd..90ff88a 100644 --- a/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs +++ b/DOAN.Service/MES/SmartScreen/Product/ProductSmartScreenService.cs @@ -29,8 +29,8 @@ namespace DOAN.Service.MES.SmartScreen.Product /// public DigitalTurntableModel DigitalTurntable() { - DigitalTurntableModel digital=new DigitalTurntableModel(); - digital.WorkorderQuantity = Context.Queryable().Where(it=>it.WorkorderDate==DateTime.Today).Count(); + DigitalTurntableModel digital = new DigitalTurntableModel(); + digital.WorkorderQuantity = Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Count(); //digital.FinishedWorkorderQuantity=Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today) // .Where(it=>it.Status==2) @@ -40,20 +40,20 @@ namespace DOAN.Service.MES.SmartScreen.Product // .Where(it => it.Status <2) // .Count(); - digital.ProductionPlanQuantity = Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Sum(it=>it.PlanNum??0); + digital.ProductionPlanQuantity = Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Sum(it => it.PlanNum ?? 0); //digital.ProductionFinishQuantity = Context.Queryable().Where(it => it.JobDateTime >= DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)) // .Where(it => it.ProcessId == 90).Sum(it => it.FinishNum??0); // 今日物料领用 digital.MaterialRequisitionQuantity = Context.Queryable().Where(it => it.ProcessId == 10 && it.JobDateTime >= DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)).Sum(it => it.FinishNum ?? 0); - - + + digital.ShipmentQuantity = Context.Queryable().Where(it => it.ProcessId == 90 && it.JobDateTime >= DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)).Sum(it => it.FinishNum ?? 0); - digital.GroupQuantity=Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Select(it=>it.GroupCode).Distinct().Count(); - - + digital.GroupQuantity = Context.Queryable().Where(it => it.WorkorderDate == DateTime.Today).Select(it => it.GroupCode).Distinct().Count(); + + return digital; } @@ -63,31 +63,31 @@ namespace DOAN.Service.MES.SmartScreen.Product 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) => p.Status == 1 && r.FkWorkRoute == 32) .OrderBy((r, p) => p.Id) .Select((r, p) => p.Name) .ToList(); - echartsOptions.XAxis=xAxis; + echartsOptions.XAxis = xAxis; //获取各个工序今日累计报工值 EchartsSeries echartsSeries = new EchartsSeries(); echartsSeries.Name = "今日各个工序累计报工数"; List Data = Context.Queryable() - .LeftJoin((it,w)=>it.ProcessId==w.Id) - .Where((it, w) =>w.Status==1&& it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1)) - .GroupBy((it, w) => new {it.ProcessId,w.Name}) + .LeftJoin((it, w) => it.ProcessId == w.Id) + .Where((it, w) => w.Status == 1 && it.JobDateTime >= DateTime.Today && it.JobDateTime <= DateTime.Today.AddDays(1)) + .GroupBy((it, w) => new { it.ProcessId, w.Name }) .Select((it, w) => new EchartsSeriesData() { - Name = w.Name, - Value=SqlFunc.AggregateSum(it.FinishNum??0) + Name = w.Name, + Value = SqlFunc.AggregateSum(it.FinishNum ?? 0) }).ToList(); List NewData = new List(); foreach (var item in xAxis.Data) { - - decimal value=Data.Where(it=>it.Name==item).Select(it=>it.Value).FirstOrDefault(); - if(value==0) + + decimal value = Data.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault(); + if (value == 0) { NewData.Add(new EchartsSeriesData() { Name = item, Value = 0 }); } @@ -95,7 +95,7 @@ namespace DOAN.Service.MES.SmartScreen.Product { NewData.Add(new EchartsSeriesData() { Name = item, Value = value }); } - + } echartsSeries.Data = NewData; echartsOptions.Series.Add(echartsSeries); @@ -111,8 +111,8 @@ namespace DOAN.Service.MES.SmartScreen.Product Name = w.Name, Value = SqlFunc.AggregateSum(it.PlanNum ?? 0) }).ToList(); - echartsSeries2.Data = Data2; - // echartsOptions.Series.Add(echartsSeries2); + // echartsSeries2.Data = Data2; + // echartsOptions.Series.Add(echartsSeries2); @@ -138,7 +138,7 @@ namespace DOAN.Service.MES.SmartScreen.Product EchartsXAxis xAxis = new EchartsXAxis(); xAxis.Data = Context.Queryable().LeftJoin((r, p) => r.FkWorkProcesses == p.Id) - .Where((r, p) => r.FkWorkRoute == 32&&p.Status==1) + .Where((r, p) => r.FkWorkRoute == 32 && p.Status == 1) .OrderBy((r, p) => p.Id) .Select((r, p) => p.Name) .ToList(); @@ -184,7 +184,7 @@ namespace DOAN.Service.MES.SmartScreen.Product Name = w.Name, Value = SqlFunc.AggregateSum(it.PlanNum ?? 0) }).ToList(); - echartsSeries2.Data = Data2; + // echartsSeries2.Data = Data2; //echartsOptions.Series.Add(echartsSeries2); @@ -255,8 +255,8 @@ namespace DOAN.Service.MES.SmartScreen.Product Name = w.Name, Value = SqlFunc.AggregateSum(it.PlanNum ?? 0) }).ToList(); - echartsSeries2.Data = Data2; - // echartsOptions.Series.Add(echartsSeries2); + // echartsSeries2.Data = Data2; + // echartsOptions.Series.Add(echartsSeries2); @@ -287,7 +287,7 @@ namespace DOAN.Service.MES.SmartScreen.Product DateTime index = firstDayOfMonth; do { - xData.Add(index.ToString("MM-dd")); + xData.Add(index.ToString("dd")); index = index.AddDays(1); } while (index < lastDayOfMonth.AddDays(1)); @@ -301,16 +301,34 @@ namespace DOAN.Service.MES.SmartScreen.Product LineSeries.Type = "line"; - var result = Context.Queryable() - .LeftJoin((w, r) => w.Workorder == r.Workorder) - .Where((w, r) =>r.ProcessId==70&&w.Status == 1 && w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth) - .GroupBy((w, r) => w.WorkorderDate) - .Select((w, r) => new EchartsSeriesData() - { - Name = w.WorkorderDate.Value.ToString("MM-dd"), - Value = SqlFunc.AggregateSum(r.FinishNum ?? 0) + //var result = Context.Queryable() + // .LeftJoin((w, r) => w.Workorder == r.Workorder) + // .Where((w, r) =>r.ProcessId==70&&w.Status == 1 && w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth) + // .GroupBy((w, r) => w.WorkorderDate) + // .Select((w, r) => new EchartsSeriesData() + // { + // Name = w.WorkorderDate.Value.ToString("MM-dd"), + // Value = SqlFunc.AggregateSum(r.FinishNum ?? 0) + + // }).ToList(); + //var result = Context.Queryable() + // .Where(it=>it.ProcessId == 20 && it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth.AddDays(1)) + // .GroupBy(it => SqlFunc.DateDiff(DateType.Day, it.JobDateTime ?? DateTime.MinValue, DateTime.Now)) // 按天分组 + // .Select(it => new + // { + // Name = it.JobDateTime.Value.ToString("MM-dd"),// 获取日期部分 + // Value = SqlFunc.AggregateSum(it.FinishNum ?? 0) // 聚合求和 + // }).ToList(); + var result = Context.Queryable() + .Where(it => it.ProcessId == 20 && it.JobDateTime >= firstDayOfMonth && it.JobDateTime <= lastDayOfMonth.AddDays(1)) + .GroupBy(it => SqlFunc.DateValue(it.JobDateTime ?? DateTime.MinValue, DateType.Day)) // 按天分组 + .Select(it => new + { + Name = SqlFunc.DateValue(it.JobDateTime ?? DateTime.MinValue, DateType.Day), // 获取日期部分 + Value = SqlFunc.AggregateSum(it.FinishNum ?? 0) // 聚合求和 + }) + .ToList(); - }).ToList(); List LineSeriesData = new List(); foreach (var item in xData) @@ -318,7 +336,7 @@ namespace DOAN.Service.MES.SmartScreen.Product LineSeriesData.Add(new EchartsSeriesData() { Name = item, - Value = result.Where(it => it.Name == item).Select(it => it.Value).FirstOrDefault(), + Value = result.Where(it => it.Name==int.Parse (item)).Select(it => it.Value).FirstOrDefault(), }); } @@ -331,17 +349,31 @@ namespace DOAN.Service.MES.SmartScreen.Product .ToArray(); if (groupArray.Length > 0) { - var GroupresultList = Context.Queryable() - .LeftJoin((w, r) => w.Workorder == r.Workorder) - .Where((w, r) => groupArray.Contains(w.GroupCode)) - .Where((w, r) =>r.ProcessId==70&& w.Status == 1 && w.WorkorderDate >= firstDayOfMonth && w.WorkorderDate <= lastDayOfMonth) - .GroupBy((w, r) => new { w.GroupCode, w.WorkorderDate }) - .Select((w, r) => new - { - groupCode = w.GroupCode, - Name = w.WorkorderDate.Value.ToString("MM-dd"), - Value = SqlFunc.AggregateSum(r.FinishNum ?? 0) - }).ToList(); + //var GroupresultList = Context.Queryable() + // .RightJoin((w, r) => w.Workorder == r.Workorder) + // .Where((w, r) => groupArray.Contains(w.GroupCode)) + // .Where((w, r) => r.ProcessId == 70 && w.Status == 1 && r.JobDateTime >= firstDayOfMonth && r.JobDateTime <= lastDayOfMonth) + // .GroupBy((w, r) => new { w.GroupCode, w.WorkorderDate }) + // .Select((w, r) => new + // { + // groupCode = w.GroupCode, + // Name = w.WorkorderDate.Value.ToString("MM-dd"), + // Value = SqlFunc.AggregateSum(r.FinishNum ?? 0) + // }).ToList(); + + + var GroupresultList = Context.Queryable().LeftJoin((r, w) => r.Workorder == w.Workorder) + .Where((r, w) => groupArray.Contains(w.GroupCode)) + .Where((r, w) => r.ProcessId == 20 && r.JobDateTime >= firstDayOfMonth && r.JobDateTime <= lastDayOfMonth.AddDays(1)) + .GroupBy((r, w) => new { w.GroupCode, Day = SqlFunc.DateValue(r.JobDateTime ?? DateTime.MinValue, DateType.Day) }) // 按天分组 + .Select((r, w) => new + { + groupCode = w.GroupCode, + Name = SqlFunc.DateValue(r.JobDateTime ?? DateTime.MinValue, DateType.Day),// 获取日期部分 + Value = SqlFunc.AggregateSum(r.FinishNum ?? 0) // 聚合求和 + }).ToList(); + + foreach (var group in groupArray) { EchartsSeries groupSeries = new EchartsSeries(); @@ -356,7 +388,7 @@ namespace DOAN.Service.MES.SmartScreen.Product LineSeriesData01.Add(new EchartsSeriesData() { Name = item, - Value = GroupresultList.Where(it => it.Name == item).Where(it => it.groupCode == group).Select(it => it.Value).FirstOrDefault(), + Value = GroupresultList.Where(it => it.Name ==int.Parse(item)).Where(it => it.groupCode == group).Select(it => it.Value).FirstOrDefault(), }); } @@ -377,14 +409,14 @@ namespace DOAN.Service.MES.SmartScreen.Product echartsOptions.Title = new EchartsTitle("昨日-今日各工序实时累计完工数折线图", "昨日-今日各工序实时累计完工数折线图"); //1.查询各个工序 - int[] processArray= Context.Queryable() - .Where(it => it.JobDateTime > DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)) - .OrderBy(it => it.ProcessId) - .Select(it => it.ProcessId) - .Distinct() - .ToArray(); + int[] processArray = Context.Queryable() + .Where(it => it.JobDateTime > DateTime.Today && it.JobDateTime < DateTime.Today.AddDays(1)) + .OrderBy(it => it.ProcessId) + .Select(it => it.ProcessId) + .Distinct() + .ToArray(); //1 X轴 - List DateTimeArray= new List(); + List DateTimeArray = new List(); // 定义起始时间和结束时间 @@ -408,16 +440,16 @@ namespace DOAN.Service.MES.SmartScreen.Product List DateTimeArrayString = DateTimeArray.Select(it => it.ToString("dd-HH:mm")).ToList(); echartsOptions.XAxis = new EchartsXAxis() { Data = DateTimeArrayString }; //2 系列值-这组 今日实时累计完成数(每30分钟) - for (int i=0;i().Where(it => it.Id == processArray[i]).Select(it => it.Name).First(); - + string ProcessName = Context.Queryable().Where(it => it.Id == processArray[i]).Select(it => it.Name).First(); + EchartsSeries echartsSeries = new EchartsSeries(); //echartsSeries.Name = ProcessName + "工序今日实时累计完成数(每10分钟)"; - echartsSeries.Name = ProcessName ; + echartsSeries.Name = ProcessName; 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 " + @@ -432,7 +464,7 @@ namespace DOAN.Service.MES.SmartScreen.Product string sql2 = "SELECT time_period, SUM(finish_num) AS count\r\nFROM (\r\n SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 600 ) * 600 ) AS time_period,\r\n finish_num\r\n FROM pro_reportwork\r\n WHERE DATE(job_datetime) = CURDATE() AND @process_id=process_id\r\n) AS subquery\r\nGROUP BY time_period\r\nORDER BY time_period"; string sql3 = "SELECT time_period, SUM(finish_num) AS count\r\nFROM (\r\n SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( job_datetime ) / 1800 ) * 1800 ) AS time_period,\r\n finish_num\r\n FROM pro_reportwork\r\n WHERE job_datetime>=@SearchDateTime01 AND job_datetime<=@SearchDateTime02 AND process_id=@process_id\r\n) AS subquery\r\nGROUP BY time_period\r\nORDER BY time_period"; - DataTable result = Context.Ado.GetDataTable(sql3, new { SearchDateTime01= startTime, SearchDateTime02=endTime, process_id = processArray[i], }); + DataTable result = Context.Ado.GetDataTable(sql3, new { SearchDateTime01 = startTime, SearchDateTime02 = endTime, process_id = processArray[i], }); int sum = 0; @@ -487,11 +519,11 @@ namespace DOAN.Service.MES.SmartScreen.Product } } - echartsSeries.Data = echartsSeriesDatas.OrderBy(it => it.Name).ToList(); - echartsOptions.Series.Add(echartsSeries); + echartsSeries.Data = echartsSeriesDatas.OrderBy(it => it.Name).ToList(); + echartsOptions.Series.Add(echartsSeries); } - + return echartsOptions;