2024-10-14 15:42:02 +08:00

51 lines
1.9 KiB
C#

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.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)
.GroupBy((p, q) => q.DefectCode)
.Select((p, q) => new ValueName()
{
Name = q.DefectCode,
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;
}
}
}