diff --git a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Quality/QualitySmartController.cs b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Quality/QualitySmartController.cs index 0ee7399..5df9b26 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Quality/QualitySmartController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/SmartScreen/Quality/QualitySmartController.cs @@ -75,5 +75,18 @@ namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Quality var response = _QualitySmartService.GetQualitySmartScreenForBarChart(); return SUCCESS(response); } + + /// + /// 按月获取质量大屏数据折线图 + /// + /// + [HttpGet("GetQualitySmartScreenForLineChart")] + [AllowAnonymous] + public IActionResult GetQualitySmartScreenForLineChart() + { + + var response = _QualitySmartService.GetQualitySmartScreenForLineChart(); + return SUCCESS(response); + } } } diff --git a/DOAN.Service/MES/SmartScreen/Quality/IService/IQualitySmartService.cs b/DOAN.Service/MES/SmartScreen/Quality/IService/IQualitySmartService.cs index 25cf09f..ae3bfae 100644 --- a/DOAN.Service/MES/SmartScreen/Quality/IService/IQualitySmartService.cs +++ b/DOAN.Service/MES/SmartScreen/Quality/IService/IQualitySmartService.cs @@ -13,12 +13,9 @@ namespace DOAN.Service.MES.SmartScreen.Quality.IService public interface IQualitySmartService : IBaseService { QualityScreenHeadDto GetQualityScreenHead(); - List GetQualitySmartScreenForWeek(); List GetQualitySmartScreenForMonth(); - - //barchart EchartsOptions - EchartsOptions GetQualitySmartScreenForBarChart(); + EchartsOptions GetQualitySmartScreenForLineChart(); } } diff --git a/DOAN.Service/MES/SmartScreen/Quality/QualitySmartService.cs b/DOAN.Service/MES/SmartScreen/Quality/QualitySmartService.cs index a15741a..ffbaf27 100644 --- a/DOAN.Service/MES/SmartScreen/Quality/QualitySmartService.cs +++ b/DOAN.Service/MES/SmartScreen/Quality/QualitySmartService.cs @@ -140,7 +140,7 @@ namespace DOAN.Service.MES.SmartScreen.Quality dateList.Add(date); // 使用标准日期格式 } - + EchartsOptions echartsOptions = new EchartsOptions(); EchartsXAxis echartsXAxis = new EchartsXAxis(); @@ -171,11 +171,10 @@ namespace DOAN.Service.MES.SmartScreen.Quality foreach (var dateitem in dateList) { DateTime startOfDay = dateitem.Date; - - // 结束时间:当天的 23:59:59 DateTime endOfDay = startOfDay.AddDays(1).AddSeconds(-1); EchartsSeriesData echartsSeriesData = new EchartsSeriesData(); echartsSeriesData.Name = dateitem.ToString("MM-dd"); + echartsSeriesData.Value =Convert.ToDecimal(qcFinishedproductDefectCollections.Where(o=>o.DefectName==classitem&&o.CheckDatetime >= startOfDay && o.CheckDatetime<= endOfDay).Sum(o=>o.Number)); echartsSeriesDatas.Add(echartsSeriesData); @@ -186,5 +185,73 @@ namespace DOAN.Service.MES.SmartScreen.Quality echartsOptions.Series = echartsSeriesList; return echartsOptions; } + + public EchartsOptions GetQualitySmartScreenForLineChart() + { + // 获取当前日期 + DateTime now = DateTime.Now; + // 当前月份的第一天 00:00:00 + DateTime firstDayOfMonth = new DateTime(now.Year, now.Month, 1); + // 当前月份的最后一天 23:59:59 + DateTime lastDayOfMonth = new DateTime(now.Year, now.Month, 1) + .AddMonths(1) + .AddSeconds(-1); + // 创建字符串集合存储日期 + List dateList = new List(); + + // 遍历从第一天到最后一天的日期 + for (DateTime date = firstDayOfMonth; date <= lastDayOfMonth; date = date.AddDays(1)) + { + dateList.Add(date); // 使用标准日期格式 + } + + List proWorkorders = Context.Queryable().Where(o => o.WorkorderDate >= firstDayOfMonth && o.WorkorderDate <= lastDayOfMonth).ToList(); + + EchartsOptions echartsOptions = new EchartsOptions(); + EchartsXAxis echartsXAxis = new EchartsXAxis(); + + List dateStringList = new List(); + foreach (var date in dateList) + { + dateStringList.Add(date.ToString("MM-dd")); + } + echartsXAxis.Data = dateStringList; + echartsOptions.XAxis = echartsXAxis; + + + List echartsSeriesList = new List(); + + // 使用 SqlSugar 进行联表查询和分组统计 + List qcFinishedproductDefectCollections = Context.Queryable() + .Where(defect => defect.CheckDatetime >= firstDayOfMonth && defect.CheckDatetime <= lastDayOfMonth).ToList(); + + + List classname = qcFinishedproductDefectCollections.Select(o => o.DefectName).Distinct().ToList(); + + foreach (var classitem in classname) + { + EchartsSeries echartsSeries = new EchartsSeries(); + echartsSeries.Name = classitem; + List echartsSeriesDatas = new List(); + foreach (var dateitem in dateList) + { + + DateTime startOfDay = dateitem.Date; + DateTime endOfDay = startOfDay.AddDays(1).AddSeconds(-1); + decimal plannum =Convert.ToDecimal(proWorkorders.Where(o => o.WorkorderDate >= startOfDay && o.WorkorderDate <= endOfDay).Sum(o=>o.PlanNum)); + decimal nopassnum= Convert.ToDecimal(qcFinishedproductDefectCollections.Where(o => o.DefectName == classitem && o.CheckDatetime >= startOfDay && o.CheckDatetime <= endOfDay).Sum(o => o.Number)); + decimal passnum = plannum - nopassnum; + EchartsSeriesData echartsSeriesData = new EchartsSeriesData(); + echartsSeriesData.Name = dateitem.ToString("MM-dd"); + echartsSeriesData.Value = passnum/ plannum; + echartsSeriesDatas.Add(echartsSeriesData); + + } + echartsSeries.Data = echartsSeriesDatas; + echartsSeriesList.Add(echartsSeries); + } + echartsOptions.Series = echartsSeriesList; + return echartsOptions; + } } }