2024-11-13 13:18:44 +08:00
|
|
|
using System.Linq;
|
2024-11-11 11:29:32 +08:00
|
|
|
using Infrastructure.Attribute;
|
|
|
|
|
using DOAN.Model.MES.base_;
|
|
|
|
|
using DOAN.Model.MES.bigscreen.Dto;
|
|
|
|
|
using DOAN.Model.MES.dev;
|
2024-11-11 20:02:27 +08:00
|
|
|
using DOAN.Model.mes.echarts;
|
2024-11-11 11:29:32 +08:00
|
|
|
using DOAN.Model.MES.mm;
|
2024-11-11 20:02:27 +08:00
|
|
|
using DOAN.Model.MES.product;
|
|
|
|
|
using DOAN.Model.MES.quality.FQC;
|
|
|
|
|
using DOAN.Model.MES.quality.IPQC;
|
|
|
|
|
using DOAN.Model.MES.quality.IQC;
|
2024-11-11 11:29:32 +08:00
|
|
|
using DOAN.Service.MES.bigScreen.IService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace DOAN.Service.MES.bigScreen
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 质量大屏
|
|
|
|
|
/// </summary>
|
|
|
|
|
[AppService(ServiceType = typeof(IQualityBigScreenService), ServiceLifetime = LifeTime.Transient)]
|
|
|
|
|
public class QualityBigScreenService : BaseService<DeviceAccount>, IQualityBigScreenService
|
2024-11-11 20:02:27 +08:00
|
|
|
{
|
|
|
|
|
public EchartsOptions GetMoudle01()
|
|
|
|
|
{
|
|
|
|
|
var LineEchart = new EchartsOptions();
|
|
|
|
|
|
|
|
|
|
LineEchart.Title = new EchartsTitle("今天IQC缺陷分布占比", "今天IQC缺陷分布占比");
|
|
|
|
|
|
|
|
|
|
// List<EchartsSeries> Series=new List<EchartsSeries>();
|
|
|
|
|
EchartsSeries SeriesData = new EchartsSeries();
|
|
|
|
|
|
|
|
|
|
var EchartsSeriesDataList= Context.Queryable<QcDefectCollection>()
|
|
|
|
|
.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<EchartsSeries>(){SeriesData};
|
|
|
|
|
return LineEchart;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public EchartsOptions GetMoudle02()
|
|
|
|
|
{
|
|
|
|
|
var LineEchart = new EchartsOptions();
|
|
|
|
|
|
|
|
|
|
LineEchart.Title = new EchartsTitle("今天IPQC缺陷分布占比", "今天IPQC缺陷分布占比");
|
|
|
|
|
|
|
|
|
|
// List<EchartsSeries> Series=new List<EchartsSeries>();
|
|
|
|
|
EchartsSeries SeriesData = new EchartsSeries();
|
|
|
|
|
|
|
|
|
|
var EchartsSeriesDataList= Context.Queryable<QcDefectCollection>()
|
|
|
|
|
.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<EchartsSeries>(){SeriesData};
|
|
|
|
|
return LineEchart;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public EchartsOptions GetMoudle03()
|
|
|
|
|
{
|
|
|
|
|
var LineEchart = new EchartsOptions();
|
|
|
|
|
|
|
|
|
|
LineEchart.Title = new EchartsTitle("今天FQC缺陷分布占比", "今天FQC缺陷分布占比");
|
|
|
|
|
|
|
|
|
|
// List<EchartsSeries> Series=new List<EchartsSeries>();
|
|
|
|
|
EchartsSeries SeriesData = new EchartsSeries();
|
|
|
|
|
|
|
|
|
|
var EchartsSeriesDataList = Context.Queryable<ProWorkorder>()
|
|
|
|
|
.LeftJoin<QcFinishedproductDefectCollection>((p, f) => p.Workorder == f.Workorder)
|
|
|
|
|
.LeftJoin<QcDefectConfig>((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<EchartsSeries>(){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<QcDefectCollection>()
|
|
|
|
|
.Where(it=>it.Type==1)
|
|
|
|
|
.Where(it=>it.DateTime>DateTime.Today.AddDays(-6)&&it.DateTime<DateTime.Today.AddDays(1))
|
|
|
|
|
|
|
|
|
|
.GroupBy(it=>it.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<EchartsSeries>(){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<QcDefectCollection>()
|
|
|
|
|
.Where(it=>it.Type==2)
|
|
|
|
|
.Where(it=>it.DateTime>DateTime.Today.AddDays(-6)&&it.DateTime<DateTime.Today.AddDays(1))
|
|
|
|
|
|
|
|
|
|
.GroupBy(it=>it.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<EchartsSeries>(){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<ProWorkorder>()
|
|
|
|
|
.LeftJoin<QcFinishedproductDefectCollection>((p, f) => p.Workorder == f.Workorder)
|
|
|
|
|
.LeftJoin<QcDefectConfig>((p, f, d) => f.DefectCode == d.Code)
|
|
|
|
|
.Where((p, f, d) => p.WorkorderDate>DateTime.Today.AddDays(-6)&&p.WorkorderDate<DateTime.Today.AddDays(1))
|
|
|
|
|
.GroupBy((p, f, d) => 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<QcDefectConfig> QcDefectConfigList= Context.Queryable<QcDefectConfig>().ToList();
|
|
|
|
|
var list = new List<EchartsSeries>();
|
|
|
|
|
foreach (var item in QcDefectConfigList)
|
|
|
|
|
{
|
|
|
|
|
EchartsSeries QcSeries = new EchartsSeries();
|
|
|
|
|
QcSeries.Name = item.Name+"-缺陷数";
|
|
|
|
|
List<EchartsSeriesData> 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;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-11 11:29:32 +08:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|