57 lines
2.2 KiB
C#
57 lines
2.2 KiB
C#
|
|
using System.Linq;
|
|
using DOAN.Model.MES.andon.Dto;
|
|
using DOAN.Model.MES.product;
|
|
using DOAN.Model.MES.quality.Analysis.Dto;
|
|
using DOAN.Model.MES.quality.FQC;
|
|
using DOAN.Model.MES.quality.IQC;
|
|
using DOAN.Repository;
|
|
using DOAN.Service.MES.quality.Analysis.IService;
|
|
using Infrastructure.Attribute;
|
|
|
|
namespace DOAN.Service.MES.quality.Analysis
|
|
{
|
|
/// <summary>
|
|
/// 缺陷类别Service业务层处理
|
|
/// </summary>
|
|
[AppService(ServiceType = typeof(IFinalAnalysisService), ServiceLifetime = LifeTime.Transient)]
|
|
public class FinalAnalysisService : BaseService<QcFinishedproductDefectCollection>, IFinalAnalysisService
|
|
{
|
|
public PieDataDto PieFinalAnalysis(FinalAnalysisDto finalAnalysis)
|
|
{
|
|
|
|
|
|
// 查找所需工单
|
|
var proWorkorders = Context.Queryable<ProWorkorder>()
|
|
.WhereIF(!string.IsNullOrEmpty(finalAnalysis.ProductionCode), it => it.ProductionCode.Contains(finalAnalysis.ProductionCode))
|
|
.WhereIF(!string.IsNullOrEmpty(finalAnalysis.ProductionName), it => it.ProductionName.Contains(finalAnalysis.ProductionName))
|
|
.WhereIF(!string.IsNullOrEmpty(finalAnalysis.Specification), it => it.Specification.Contains(finalAnalysis.Specification))
|
|
.Where(it => it.CreatedTime >= finalAnalysis.DateRange[0] && it.CreatedTime <= finalAnalysis.DateRange[1]);
|
|
|
|
|
|
|
|
List<ValueName> SeriesData = Context.Queryable(proWorkorders)
|
|
.LeftJoin<QcFinishedproductDefectCollection>((p, q) => p.Workorder == q.Workorder)
|
|
.LeftJoin<QcDefectConfig>((p, q, c) => q.DefectCode == c.Code)
|
|
.GroupBy((p, q, c) => q.DefectCode)
|
|
.Having((p, q, c) =>q.DefectCode!=null)
|
|
.Select((p, q, c) => new ValueName()
|
|
{
|
|
Name = SqlFunc.AggregateMin(c.Name),
|
|
Value = SqlFunc.AggregateSum(q.Number ?? 0)
|
|
})
|
|
|
|
.ToList();
|
|
|
|
string[] LegendData = SeriesData.Select(it => it.Name).ToArray();
|
|
|
|
PieDataDto pieDataDto = new PieDataDto();
|
|
pieDataDto.SeriesData = SeriesData;
|
|
pieDataDto.LegendData = LegendData;
|
|
|
|
|
|
return pieDataDto;
|
|
|
|
}
|
|
}
|
|
} |