diff --git a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs index 05c8552a..a84b1bb7 100644 --- a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs @@ -147,5 +147,24 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC return ToResponse(new ApiResult(500, ex.Message, ex.Message)); } } + + /// + /// 零件号是否是门把手测试 + /// + /// 零件号 + /// true false + [HttpGet("checkIsDoorknob")] + public IActionResult CheckIsDoorknob(string partnumber) + { + try + { + var result = _commonFQCService.CheckIsDoorknob(partnumber); + return ToResponse(new ApiResult(200, "ok", result)); + } + catch (Exception ex) + { + return ToResponse(new ApiResult(500, ex.Message, ex.Message)); + } + } } } diff --git a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs index f9841f52..9126ae4c 100644 --- a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs +++ b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs @@ -220,9 +220,9 @@ public int ProductQualifiedTotal { get; set; } = 0; /// - /// 产线一次合格总数(不包含门把手) + /// 产线门把手合格数 /// - public int ProductQualifiedNotDoorknobTotal { get; set; } = 0; + public int ProductDoorknobQualifiedTotal { get; set; } = 0; /// /// 产线抛光总数 @@ -254,6 +254,11 @@ /// public int PolishQualifiedTotal { get; set; } = 0; + /// + /// 抛光门把手合格总数 + /// + public int PolishDoorknobQualifiedTotal { get; set; } = 0; + /// /// 抛光打磨总数 /// @@ -275,9 +280,9 @@ public int AfterPolishQualifiedTotal { get; set; } = 0; /// - /// 后道检验一次合格总数 (不包含门把手) + /// 后道检验门把手合格数 /// - public int AfterPolishQualifiedNotDoorknobTotal { get; set; } = 0; + public int AfterPolishDoorknobQualifiedTotal { get; set; } = 0; /// /// 后道检验抛光总数 @@ -309,6 +314,11 @@ /// public int GP12QualifiedTotal { get; set; } = 0; + /// + /// 一次合格品GP12门把手数(需要清理) + /// + public int GP12DoorknobQualifiedTotal { get; set; } = 0; + /// /// 一次合格品GP12检验抛光总数 /// diff --git a/ZR.Service/mes/qc/CommonFQCService.cs b/ZR.Service/mes/qc/CommonFQCService.cs index 203155c2..c5ddb282 100644 --- a/ZR.Service/mes/qc/CommonFQCService.cs +++ b/ZR.Service/mes/qc/CommonFQCService.cs @@ -550,7 +550,7 @@ namespace ZR.Service.mes.qc it => it.StartTime <= query.EndTime.Value.ToLocalTime() ) .ToExpression(); - string[] checkStrArray = { "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; + string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; var DoorknobPartNumberCheck = Expressionable.Create(); foreach (string checkStr in checkStrArray) { @@ -559,8 +559,7 @@ namespace ZR.Service.mes.qc ; DoorknobPartNumberCheck .And(it => it.Type == 1) - .And(it => it.Status == 1) - .And(it => it.Description.Contains("门把手")); + .And(it => it.Status == 1); List DoorknobPartNumberList = Context .Queryable() .Where(DoorknobPartNumberCheck.ToExpression()) @@ -592,13 +591,11 @@ namespace ZR.Service.mes.qc .Queryable() .Where(predicate1) .Sum(it => it.QualifiedNumber) ?? 0; - boardData.ProductQualifiedNotDoorknobTotal = - boardData.ProductQualifiedTotal - - Context - .Queryable() - .Where(predicate3) - .Sum(it => it.QualifiedNumber) - ?? 0; + boardData.ProductDoorknobQualifiedTotal = + Context + .Queryable() + .Where(predicate3) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.ProductPolishTotal = Context .Queryable() @@ -618,7 +615,7 @@ namespace ZR.Service.mes.qc // 除三优化 boardData.ProductRequireTotal = boardData.ProductRequireTotal / 3; boardData.ProductQualifiedTotal = boardData.ProductQualifiedTotal / 3; - boardData.ProductQualifiedNotDoorknobTotal = boardData.ProductQualifiedNotDoorknobTotal / 3; + boardData.ProductDoorknobQualifiedTotal = boardData.ProductDoorknobQualifiedTotal / 3; boardData.ProductPolishTotal = boardData.ProductPolishTotal / 3; boardData.ProductSandingTotal = boardData.ProductSandingTotal / 3; boardData.ProductDiscardTotal = boardData.ProductDiscardTotal / 3; @@ -668,7 +665,7 @@ namespace ZR.Service.mes.qc it => it.StartTime <= query.EndTime.Value.ToLocalTime() ) .ToExpression(); - string[] checkStrArray = { "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; + string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; var DoorknobPartNumberCheck = Expressionable.Create(); foreach (string checkStr in checkStrArray) { @@ -677,8 +674,7 @@ namespace ZR.Service.mes.qc ; DoorknobPartNumberCheck .And(it => it.Type == 1) - .And(it => it.Status == 1) - .And(it => it.Description.Contains("门把手")); + .And(it => it.Status == 1); List DoorknobPartNumberList = Context .Queryable() .Where(DoorknobPartNumberCheck.ToExpression()) @@ -700,6 +696,22 @@ namespace ZR.Service.mes.qc it => it.StartTime <= query.EndTime.Value.ToLocalTime() ) .ToExpression(); + var predicate4 = Expressionable + .Create() + .And(it => DoorknobPartNumberList.Contains(it.Partnumber)) + .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() @@ -716,6 +728,11 @@ namespace ZR.Service.mes.qc .Queryable() .Where(predicate1) .Sum(it => it.QualifiedNumber) ?? 0; + boardData.PolishDoorknobQualifiedTotal = + Context + .Queryable() + .Where(predicate4) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.PolishSandingTotal = Context .Queryable() @@ -737,13 +754,11 @@ namespace ZR.Service.mes.qc .Queryable() .Where(predicate2) .Sum(it => it.QualifiedNumber) ?? 0; - boardData.AfterPolishQualifiedNotDoorknobTotal = - boardData.AfterPolishQualifiedTotal - - Context - .Queryable() - .Where(predicate3) - .Sum(it => it.QualifiedNumber) - ?? 0; + boardData.AfterPolishDoorknobQualifiedTotal = + Context + .Queryable() + .Where(predicate3) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.AfterPolishPolishTotal = Context .Queryable() @@ -790,6 +805,37 @@ namespace ZR.Service.mes.qc it => it.StartTime <= query.EndTime.Value.ToLocalTime() ) .ToExpression(); + string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; + var DoorknobPartNumberCheck = Expressionable.Create(); + foreach (string checkStr in checkStrArray) + { + DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr)); + } + ; + DoorknobPartNumberCheck + .And(it => it.Type == 1) + .And(it => it.Status == 1); + List DoorknobPartNumberList = Context + .Queryable() + .Where(DoorknobPartNumberCheck.ToExpression()) + .Select(it => it.Partnumber) + .ToList(); + var predicate3 = Expressionable + .Create() + .And(it => DoorknobPartNumberList.Contains(it.Partnumber)) + .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().Where(predicate1).Sum(it => it.Quantity) ?? 0; @@ -804,6 +850,11 @@ namespace ZR.Service.mes.qc .Queryable() .Where(predicate2) .Sum(it => it.QualifiedNumber) ?? 0; + boardData.GP12DoorknobQualifiedTotal = + Context + .Queryable() + .Where(predicate3) + .Sum(it => it.QualifiedNumber) ?? 0; boardData.GP12PolishTotal = Context .Queryable() @@ -901,5 +952,25 @@ namespace ZR.Service.mes.qc result.UpdatedTime = DateTime.Now.ToLocalTime(); return result; } + + /// + /// 检查零件号是否是门把手 + /// + /// + public bool CheckIsDoorknob(string partnumber) + { + string[] checkStrArray = { "门把手","面盖","T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; + var isDoorknobCheck = Expressionable.Create(); + foreach (string checkStr in checkStrArray) + { + isDoorknobCheck.Or(it => it.Description.Contains(checkStr)); + } + ; + isDoorknobCheck + .And(it => it.Partnumber == partnumber) + .And(it => it.Type == 1) + .And(it => it.Status == 1); + return Context.Queryable().Where(isDoorknobCheck.ToExpression()).Any(); + } } } diff --git a/ZR.Service/mes/qc/FirstFQCService.cs b/ZR.Service/mes/qc/FirstFQCService.cs index 095783d5..21104e22 100644 --- a/ZR.Service/mes/qc/FirstFQCService.cs +++ b/ZR.Service/mes/qc/FirstFQCService.cs @@ -3568,6 +3568,7 @@ namespace ZR.Service.mes.qc // 合格品检查是否是门把手,是进入成品库(仅出库),不是进入一次合格品库 string[] checkStrArray = { + "门把手","面盖", "T22", "T26", "A58", @@ -3586,8 +3587,7 @@ namespace ZR.Service.mes.qc isDoorknobCheck .And(it => it.Partnumber == workorder_item.FinishedPartNumber) .And(it => it.Type == 1) - .And(it => it.Status == 1) - .And(it => it.Description.Contains("门把手")); + .And(it => it.Status == 1); bool isDoorknob = Context .Queryable() .Where(isDoorknobCheck.ToExpression()) diff --git a/ZR.Service/mes/qc/IService/ICommonFQCService.cs b/ZR.Service/mes/qc/IService/ICommonFQCService.cs index 4a0b5444..98c5b1a4 100644 --- a/ZR.Service/mes/qc/IService/ICommonFQCService.cs +++ b/ZR.Service/mes/qc/IService/ICommonFQCService.cs @@ -46,5 +46,12 @@ namespace ZR.Service.mes.qc.IService /// public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData(QcProductAndPolishAndOneTimeFqcBoardQuery query); + /// + /// 检查零件号是否是门把手 + /// + /// + /// + public bool CheckIsDoorknob(string partnumber); + } } diff --git a/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs b/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs index 01587dfe..af1b68ae 100644 --- a/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs +++ b/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs @@ -276,7 +276,7 @@ namespace ZR.Service.mes.wms /// public bool CheckIsDoorknob(string partnumber) { - string[] checkStrArray = { "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; + string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" }; var isDoorknobCheck = Expressionable.Create(); foreach (string checkStr in checkStrArray) { @@ -286,8 +286,7 @@ namespace ZR.Service.mes.wms isDoorknobCheck .And(it => it.Partnumber == partnumber) .And(it => it.Type == 1) - .And(it => it.Status == 1) - .And(it => it.Description.Contains("门把手")); + .And(it => it.Status == 1); return Context.Queryable().Where(isDoorknobCheck.ToExpression()).Any(); } }