using System.Linq; using Infrastructure.Attribute; using DOAN.Model.MES.base_; using DOAN.Model.MES.bigscreen.Dto; using DOAN.Model.MES.dev; using DOAN.Model.mes.echarts; using DOAN.Model.MES.mm; using DOAN.Model.MES.product; using DOAN.Model.MES.quality.FQC; using DOAN.Model.MES.quality.IPQC; using DOAN.Model.MES.quality.IQC; using DOAN.Service.MES.bigScreen.IService; namespace DOAN.Service.MES.bigScreen { /// /// 质量大屏 /// [AppService(ServiceType = typeof(IQualityBigScreenService), ServiceLifetime = LifeTime.Transient)] public class QualityBigScreenService : BaseService, IQualityBigScreenService { public EchartsOptions GetMoudle01() { var LineEchart = new EchartsOptions(); LineEchart.Title = new EchartsTitle("今天IQC缺陷分布占比", "今天IQC缺陷分布占比"); // List Series=new List(); EchartsSeries SeriesData = new EchartsSeries(); var EchartsSeriesDataList= Context.Queryable() .Where(it=>it.DateTime==DateTime.Today) .Where(it=>it.Type==1) .GroupBy(it=>it.DefectDescription) .Select(it => new EchartsSeriesData { Name = it.DefectDescription, Value = SqlFunc.AggregateSum(it.Quantity) }).ToList(); SeriesData.Type = "pie"; SeriesData.Data = EchartsSeriesDataList; SeriesData.Name = "缺陷数"; LineEchart.Series= new List(){SeriesData}; return LineEchart; } public EchartsOptions GetMoudle02() { var LineEchart = new EchartsOptions(); LineEchart.Title = new EchartsTitle("今天IPQC缺陷分布占比", "今天IPQC缺陷分布占比"); // List Series=new List(); EchartsSeries SeriesData = new EchartsSeries(); var EchartsSeriesDataList= Context.Queryable() .Where(it=>it.DateTime==DateTime.Today) .Where(it=>it.Type==2) .GroupBy(it=>it.DefectDescription) .Select(it => new EchartsSeriesData { Name = it.DefectDescription, Value = SqlFunc.AggregateSum(it.Quantity) }).ToList(); SeriesData.Type = "pie"; SeriesData.Data = EchartsSeriesDataList; SeriesData.Name = "缺陷数"; LineEchart.Series= new List(){SeriesData}; return LineEchart; } public EchartsOptions GetMoudle03() { var LineEchart = new EchartsOptions(); LineEchart.Title = new EchartsTitle("今天FQC缺陷分布占比", "今天FQC缺陷分布占比"); // List Series=new List(); EchartsSeries SeriesData = new EchartsSeries(); var EchartsSeriesDataList = Context.Queryable() .LeftJoin((p, f) => p.Workorder == f.Workorder) .LeftJoin((p, f, d) => f.DefectCode == d.Code) .Where((p, f, d) => p.WorkorderDate == DateTime.Today) .GroupBy((p, f, d) => new { f.DefectCode, d.Name }) .Select((p, f, d) => new EchartsSeriesData() { Name = d.Name, Value = SqlFunc.AggregateSum(f.Number ?? 0) }).ToList(); SeriesData.Type = "pie"; SeriesData.Data = EchartsSeriesDataList; SeriesData.Name = "缺陷数"; LineEchart.Series= new List(){SeriesData}; return LineEchart; } public EchartsOptions GetMoudle04() { var LineEchart = new EchartsOptions(); var Title = new EchartsTitle(); Title.Text = "前7日IQC缺陷数量直方图"; Title.SubText = "前7日IQC缺陷数量直方图"; LineEchart.Title = Title; var XAxis = new EchartsXAxis(); // 获取今天的日期 var today = DateTime.Today; // 创建一个数组来存储七天的日期 var dates = new DateTime[7]; // 填充数组 for (var i = 0; i < 7; i++) dates[i] = today.AddDays(-i); // 反转数组,使得日期从最早的开始 Array.Reverse(dates); XAxis.Data = dates.Select(it => it.ToString("yyyy-MM-dd")).ToList(); LineEchart.XAxis = XAxis; var Series = new EchartsSeries(); var SeriesData =Context.Queryable() .Where(it=>it.Type==1) .Where(it=>it.DateTime>DateTime.Today.AddDays(-6)&&it.DateTimeit.DateTime) .Select(it=> new EchartsSeriesData { Name =it.DateTime.Value.ToString("yyyy-MM-dd"), Value = SqlFunc.AggregateSum(it.Quantity) }).ToList(); Series.Data = SeriesData; Series.Type = "line"; Series.Name = "缺陷数"; LineEchart.Series = new List(){Series}; return LineEchart; } public EchartsOptions GetMoudle05() { var LineEchart = new EchartsOptions(); var Title = new EchartsTitle(); Title.Text = "前7日IQC缺陷数量直方图"; Title.SubText = "前7日IQC缺陷数量直方图"; LineEchart.Title = Title; var XAxis = new EchartsXAxis(); // 获取今天的日期 var today = DateTime.Today; // 创建一个数组来存储七天的日期 var dates = new DateTime[7]; // 填充数组 for (var i = 0; i < 7; i++) dates[i] = today.AddDays(-i); // 反转数组,使得日期从最早的开始 Array.Reverse(dates); XAxis.Data = dates.Select(it => it.ToString("yyyy-MM-dd")).ToList(); LineEchart.XAxis = XAxis; var Series = new EchartsSeries(); var SeriesData =Context.Queryable() .Where(it=>it.Type==2) .Where(it=>it.DateTime>DateTime.Today.AddDays(-6)&&it.DateTimeit.DateTime) .Select(it=> new EchartsSeriesData { Name =it.DateTime.Value.ToString("yyyy-MM-dd"), Value = SqlFunc.AggregateSum(it.Quantity) }).ToList(); Series.Data = SeriesData; Series.Type = "line"; Series.Name = "缺陷数"; LineEchart.Series = new List(){Series}; return LineEchart; } public EchartsOptions GetMoudle06() { var LineEchart = new EchartsOptions(); var Title = new EchartsTitle(); Title.Text = "前7日FQC缺陷数量直方图"; Title.SubText = "前7日FQC缺陷数量直方图"; LineEchart.Title = Title; var XAxis = new EchartsXAxis(); // 获取今天的日期 var today = DateTime.Today; // 创建一个数组来存储七天的日期 var dates = new DateTime[7]; // 填充数组 for (var i = 0; i < 7; i++) dates[i] = today.AddDays(-i); // 反转数组,使得日期从最早的开始 Array.Reverse(dates); XAxis.Data = dates.Select(it => it.ToString("yyyy-MM-dd")).ToList(); LineEchart.XAxis = XAxis; var result =Context.Queryable() .LeftJoin((p, f) => p.Workorder == f.Workorder) .LeftJoin((p, f, d) => f.DefectCode == d.Code) .Where((p, f, d) => p.WorkorderDate>DateTime.Today.AddDays(-6)&&p.WorkorderDate new { p.WorkorderDate ,f.DefectCode,d.Name}) .Select((p, f, d) => new { WorkorderDate=p.WorkorderDate, DefectCode=f.DefectCode, Name = d.Name, Value = SqlFunc.AggregateSum(f.Number ?? 0) }).ToList(); List QcDefectConfigList= Context.Queryable().ToList(); var list = new List(); foreach (var item in QcDefectConfigList) { EchartsSeries QcSeries = new EchartsSeries(); QcSeries.Name = item.Name+"-缺陷数"; List Data = result.Where(it => it.DefectCode == item.Code) .Select(it => new EchartsSeriesData() { Name = it.Name, Value = it.Value }).ToList(); QcSeries.Data = Data; list.Add(QcSeries); } LineEchart.Series = list; return LineEchart; } } }