From 4e2b817762f5290844b0d875ecc7c477aea22a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Thu, 15 Aug 2024 10:23:36 +0800 Subject: [PATCH] 1 --- .../mes/qc/FQC/CommonFQCController.cs | 4 +- ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs | 20 ++ ZR.Service/mes/qc/CommonFQCService.cs | 275 +++++++++++++++--- .../mes/qc/IService/ICommonFQCService.cs | 2 +- 4 files changed, 261 insertions(+), 40 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs index d1a249a3..05c8552a 100644 --- a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs @@ -135,11 +135,11 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC /// 查询值 /// QcCommonFqcBoardDto 看板数据 [HttpPost("getProductAndPolishAndOneTimeFqcBoardData")] - public IActionResult GetProductAndPolishAndOneTimeFqcBoardData() + public IActionResult GetProductAndPolishAndOneTimeFqcBoardData([FromBody] QcProductAndPolishAndOneTimeFqcBoardQuery query) { try { - var result = _commonFQCService.GetProductAndPolishAndOneTimeFqcBoardData(); + var result = _commonFQCService.GetProductAndPolishAndOneTimeFqcBoardData(query); return ToResponse(new ApiResult(200, "ok", result)); } catch (Exception ex) diff --git a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs index 12d5bed5..eb70d819 100644 --- a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs +++ b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs @@ -173,6 +173,26 @@ public string Remark { get; set; } = default; } + + /// + /// 产线,抛光,一次合格品质量报表看板查询条件 + /// + public class QcProductAndPolishAndOneTimeFqcBoardQuery + { + /// + /// 物料号(成品零件号) + /// + public string Partnumber { get; set; } + /// + /// 开始时间 + /// + public DateTime? StartTime { get; set; } = default; + /// + /// 开始时间 + /// + public DateTime? EndTime { get; set; } = default; + } + /// /// 产线,抛光,一次合格品质量报表看板 /// diff --git a/ZR.Service/mes/qc/CommonFQCService.cs b/ZR.Service/mes/qc/CommonFQCService.cs index 19ab757b..e900f2ea 100644 --- a/ZR.Service/mes/qc/CommonFQCService.cs +++ b/ZR.Service/mes/qc/CommonFQCService.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -515,86 +516,276 @@ namespace ZR.Service.mes.qc // 获取产线相关数据 public QcProductAndPolishAndOneTimeFqcBoardDto GetProductTotal( - QcProductAndPolishAndOneTimeFqcBoardDto boardData + QcProductAndPolishAndOneTimeFqcBoardDto boardData, + QcProductAndPolishAndOneTimeFqcBoardQuery query ) { + var predicate1 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.FinishedPartNumber == query.Partnumber + ) + .AndIF( + query.StartTime != null, + it => it.StartTime >= query.StartTime.Value.ToLocalTime() + ) + .AndIF( + query.EndTime != null, + it => it.StartTime <= query.EndTime.Value.ToLocalTime() + ) + .ToExpression(); + var predicate2 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.FinishedPartNumber == query.Partnumber + ) + .AndIF( + query.StartTime != null, + it => it.StartTime >= query.StartTime.Value.ToLocalTime() + ) + .AndIF( + query.EndTime != null, + it => it.StartTime <= query.EndTime.Value.ToLocalTime() + ) + .ToExpression(); boardData.ProductRequireTotal = - Context.Queryable().Sum(it => it.RequireNumber) ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.RequireNumber) ?? 0; boardData.ProductQualifiedTotal = - Context.Queryable().Sum(it => it.QualifiedNumber) ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.ProductPolishTotal = - Context.Queryable().Sum(it => it.PaoguangTotal) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.PaoguangTotal) ?? 0; boardData.ProductSandingTotal = - Context.Queryable().Sum(it => it.DamoTotal) ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.DamoTotal) ?? 0; boardData.ProductDiscardTotal = - Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.BaofeiTotal) ?? 0; return boardData; } // 获取抛光相关数据 public QcProductAndPolishAndOneTimeFqcBoardDto GetPolishTotal( - QcProductAndPolishAndOneTimeFqcBoardDto boardData + QcProductAndPolishAndOneTimeFqcBoardDto boardData, + QcProductAndPolishAndOneTimeFqcBoardQuery query ) { + var predicateInventory = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.Partnumber == query.Partnumber + ) + .ToExpression(); + var predicate1 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.Partnumber == query.Partnumber + ) + .AndIF( + query.StartTime != null, + it => it.StartTime >= query.StartTime.Value.ToLocalTime() + ) + .AndIF( + query.EndTime != null, + it => it.StartTime <= query.EndTime.Value.ToLocalTime() + ) + .ToExpression(); + var predicate2 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.Partnumber == query.Partnumber + ) + .AndIF( + query.StartTime != null, + it => it.StartTime >= query.StartTime.Value.ToLocalTime() + ) + .AndIF( + query.EndTime != null, + it => it.StartTime <= query.EndTime.Value.ToLocalTime() + ) + .ToExpression(); boardData.PolishWarehouseTotal = - Context.Queryable().Sum(it => it.Quantity) ?? 0; + Context + .Queryable() + .Where(predicateInventory) + .Sum(it => it.Quantity) ?? 0; boardData.PolishRequireTotal = - Context.Queryable().Sum(it => it.RequireNumber) ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.RequireNumber) ?? 0; boardData.PolishQualifiedTotal = - Context.Queryable().Sum(it => it.QualifiedNumber) - ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.PolishSandingTotal = - Context.Queryable().Sum(it => it.DamoTotal) ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.DamoTotal) ?? 0; boardData.PolishDiscardTotal = - Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0; + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.BaofeiTotal) ?? 0; boardData.AfterPolishRequireTotal = - Context.Queryable().Sum(it => it.RequireNumber) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.RequireNumber) ?? 0; boardData.AfterPolishQualifiedTotal = - Context.Queryable().Sum(it => it.QualifiedNumber) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.AfterPolishPolishTotal = - Context.Queryable().Sum(it => it.PaoguangTotal) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.PaoguangTotal) ?? 0; boardData.AfterPolishSandingTotal = - Context.Queryable().Sum(it => it.DamoTotal) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.DamoTotal) ?? 0; boardData.AfterPolishDiscardTotal = - Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.BaofeiTotal) ?? 0; return boardData; } // 获取一次合格品相关数据 public QcProductAndPolishAndOneTimeFqcBoardDto GetOneTimeTotal( - QcProductAndPolishAndOneTimeFqcBoardDto boardData + QcProductAndPolishAndOneTimeFqcBoardDto boardData, + QcProductAndPolishAndOneTimeFqcBoardQuery query ) { + var predicate1 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.Partnumber == query.Partnumber + ) + .ToExpression(); + var predicate2 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.Partnumber == query.Partnumber + ) + .AndIF( + query.StartTime != null, + it => it.StartTime >= query.StartTime.Value.ToLocalTime() + ) + .AndIF( + query.EndTime != null, + it => it.StartTime <= query.EndTime.Value.ToLocalTime() + ) + .ToExpression(); boardData.OneTimeWarehouseTotal = - Context.Queryable().Sum(it => it.Quantity) ?? 0; + Context.Queryable().Where(predicate1).Sum(it => it.Quantity) + ?? 0; boardData.GP12RequireTotal = - Context.Queryable().Sum(it => it.RequireNumber) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.RequireNumber) ?? 0; boardData.GP12QualifiedTotal = - Context.Queryable().Sum(it => it.QualifiedNumber) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.GP12PolishTotal = - Context.Queryable().Sum(it => it.PaoguangTotal) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.PaoguangTotal) ?? 0; boardData.GP12SandingTotal = - Context.Queryable().Sum(it => it.DamoTotal) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.DamoTotal) ?? 0; boardData.GP12DiscardTotal = - Context.Queryable().Sum(it => it.BaofeiTotal) ?? 0; + Context + .Queryable() + .Where(predicate2) + .Sum(it => it.BaofeiTotal) ?? 0; return boardData; } // 获取成品仓库相关数据 public QcProductAndPolishAndOneTimeFqcBoardDto GetFinishProductTotal( - QcProductAndPolishAndOneTimeFqcBoardDto boardData + QcProductAndPolishAndOneTimeFqcBoardDto boardData, + QcProductAndPolishAndOneTimeFqcBoardQuery query ) { + var predicate1 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.Partnumber == query.Partnumber + ) + .AndIF( + query.StartTime != null, + it => it.EntryWarehouseTime >= query.StartTime.Value.ToLocalTime() + ) + .AndIF( + query.EndTime != null, + it => it.EntryWarehouseTime <= query.EndTime.Value.ToLocalTime() + ) + .ToExpression(); + var predicate2 = Expressionable + .Create() + .AndIF( + !string.IsNullOrEmpty(query.Partnumber), + it => it.Partnumber == query.Partnumber + ) + .AndIF( + query.StartTime != null, + it => it.OutTime >= query.StartTime.Value.ToLocalTime() + ) + .AndIF(query.EndTime != null, it => it.OutTime <= query.EndTime.Value.ToLocalTime()) + .ToExpression(); boardData.FinishProductPartTotal = - Context.Queryable().Sum(it => it.GoodsNumAction) ?? 0; - boardData.FinishProductPackageTotal = Context.Queryable().Count(); + Context + .Queryable() + .Where(predicate1) + .Sum(it => it.GoodsNumAction) ?? 0; + boardData.FinishProductPackageTotal = Context + .Queryable() + .Where(predicate1) + .Count(); boardData.FinishProductPartOutTotal = - Context.Queryable().Sum(it => it.GoodsNumAction) ?? 0; - boardData.FinishProductPackageOutTotal = Context.Queryable().Count(); + Context.Queryable().Where(predicate2).Sum(it => it.GoodsNumAction) + ?? 0; + boardData.FinishProductPackageOutTotal = Context + .Queryable() + .Where(predicate2) + .Count(); return boardData; } @@ -602,15 +793,25 @@ namespace ZR.Service.mes.qc /// 获取产线,抛光,一次合格品质量报表看板数据 /// /// - public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData() + public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData( + QcProductAndPolishAndOneTimeFqcBoardQuery query + ) { QcProductAndPolishAndOneTimeFqcBoardDto result = new(); - result = GetProductTotal(result); - result = GetPolishTotal(result); - result = GetOneTimeTotal(result); - result = GetFinishProductTotal(result); - result.SandingTotal = result.ProductSandingTotal + result.PolishSandingTotal + result.AfterPolishSandingTotal + result.GP12SandingTotal; - result.DiscardTotal = result.ProductDiscardTotal + result.PolishDiscardTotal + result.AfterPolishDiscardTotal + result.GP12DiscardTotal; + result = GetProductTotal(result, query); + result = GetPolishTotal(result, query); + result = GetOneTimeTotal(result, query); + result = GetFinishProductTotal(result, query); + result.SandingTotal = + result.ProductSandingTotal + + result.PolishSandingTotal + + result.AfterPolishSandingTotal + + result.GP12SandingTotal; + result.DiscardTotal = + result.ProductDiscardTotal + + result.PolishDiscardTotal + + result.AfterPolishDiscardTotal + + result.GP12DiscardTotal; result.UpdatedTime = DateTime.Now.ToLocalTime(); return result; } diff --git a/ZR.Service/mes/qc/IService/ICommonFQCService.cs b/ZR.Service/mes/qc/IService/ICommonFQCService.cs index 916a5d75..4a0b5444 100644 --- a/ZR.Service/mes/qc/IService/ICommonFQCService.cs +++ b/ZR.Service/mes/qc/IService/ICommonFQCService.cs @@ -44,7 +44,7 @@ namespace ZR.Service.mes.qc.IService /// 获取产线,抛光,一次合格品质量报表看板数据 /// /// - public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData(); + public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData(QcProductAndPolishAndOneTimeFqcBoardQuery query); } }