成品缺陷统计分析
This commit is contained in:
parent
d310c43056
commit
ebba593e0e
@ -0,0 +1,40 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using DOAN.Service.MES.quality.Analysis.IService;
|
||||
using DOAN.Model.MES.quality.Analysis.Dto;
|
||||
using Xunit.Sdk;
|
||||
using DOAN.Infrastructure;
|
||||
|
||||
namespace DOAN.WebApi.Controllers.MES.quality.Analysis
|
||||
{
|
||||
[Route("mes/qualityManagement/Analysis/FinalAnalysis")]
|
||||
public class FinalAnalysisController : BaseController
|
||||
{
|
||||
private readonly IFinalAnalysisService finalAnalysisService;
|
||||
public FinalAnalysisController(IFinalAnalysisService finalAnalysisService)
|
||||
{
|
||||
this.finalAnalysisService = finalAnalysisService;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//TODO 成品缺陷统计分析
|
||||
[HttpPost("Pie_final_Analysis")]
|
||||
public IActionResult PieFinalAnalysis([FromBody] FinalAnalysisDto finalAnalysis)
|
||||
{
|
||||
if (finalAnalysis == null) { throw new CustomException("finalAnalysis未空"); }
|
||||
|
||||
finalAnalysis.DateRange[0] = ConvertDateTime.ConvertLocalDate(finalAnalysis.DateRange[0]);
|
||||
finalAnalysis.DateRange[1] = ConvertDateTime.ConvertLocalDate(finalAnalysis.DateRange[1]);
|
||||
if (finalAnalysis.DateRange[0] == DateTime.MinValue || finalAnalysis.DateRange[1] == DateTime.MinValue)
|
||||
{
|
||||
throw new CustomException("时间范围有误");
|
||||
}
|
||||
finalAnalysis.DateRange[1] = finalAnalysis.DateRange[1].AddDays(1);
|
||||
var response = finalAnalysisService.PieFinalAnalysis(finalAnalysis);
|
||||
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
54
DOAN.Model/MES/quality/Analysis/Dto/FinalAnalysisDto.cs
Normal file
54
DOAN.Model/MES/quality/Analysis/Dto/FinalAnalysisDto.cs
Normal file
@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.MES.quality.Analysis.Dto
|
||||
{
|
||||
public class FinalAnalysisDto
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 存货编码
|
||||
/// </summary>
|
||||
|
||||
public string ProductionCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 产品名称
|
||||
/// </summary>
|
||||
|
||||
public string ProductionName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 规格型号
|
||||
/// </summary>
|
||||
|
||||
public string Specification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 日期范围
|
||||
/// </summary>
|
||||
public DateTime[] DateRange { get; set; } = new DateTime[2];
|
||||
|
||||
}
|
||||
|
||||
public class ValueName
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public int Value { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class PieDataDto
|
||||
{
|
||||
public string[] LegendData { get; set; }
|
||||
|
||||
|
||||
public List<ValueName> SeriesData { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
51
DOAN.Service/MES/quality/Analysis/FinalAnalysisService.cs
Normal file
51
DOAN.Service/MES/quality/Analysis/FinalAnalysisService.cs
Normal file
@ -0,0 +1,51 @@
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
using DOAN.Model.MES.quality.Analysis.Dto;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Service.MES.quality.Analysis.IService
|
||||
{
|
||||
public interface IFinalAnalysisService
|
||||
{
|
||||
PieDataDto PieFinalAnalysis(FinalAnalysisDto finalAnalysis);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user