diff --git a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs index eb70d819..f9841f52 100644 --- a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs +++ b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs @@ -219,6 +219,11 @@ /// public int ProductQualifiedTotal { get; set; } = 0; + /// + /// 产线一次合格总数(不包含门把手) + /// + public int ProductQualifiedNotDoorknobTotal { get; set; } = 0; + /// /// 产线抛光总数 /// @@ -269,6 +274,11 @@ /// public int AfterPolishQualifiedTotal { get; set; } = 0; + /// + /// 后道检验一次合格总数 (不包含门把手) + /// + public int AfterPolishQualifiedNotDoorknobTotal { get; set; } = 0; + /// /// 后道检验抛光总数 /// diff --git a/ZR.Service/mes/qc/CommonFQCService.cs b/ZR.Service/mes/qc/CommonFQCService.cs index e900f2ea..e0ca00db 100644 --- a/ZR.Service/mes/qc/CommonFQCService.cs +++ b/ZR.Service/mes/qc/CommonFQCService.cs @@ -550,6 +550,38 @@ 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) + .And(it => it.Description.Contains("门把手")); + List DoorknobPartNumberList = Context + .Queryable() + .Where(DoorknobPartNumberCheck.ToExpression()) + .Select(it => it.Partnumber) + .ToList(); + var predicate3 = Expressionable + .Create() + .And(it => DoorknobPartNumberList.Contains(it.FinishedPartNumber)) + .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() @@ -560,6 +592,13 @@ 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.ProductPolishTotal = Context .Queryable() @@ -621,6 +660,38 @@ 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) + .And(it => it.Description.Contains("门把手")); + 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.PolishWarehouseTotal = Context .Queryable() @@ -658,6 +729,13 @@ 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.AfterPolishPolishTotal = Context .Queryable() diff --git a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs index 0107aa42..524d460c 100644 --- a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs +++ b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs @@ -33,11 +33,19 @@ namespace ZR.Service.mes.wms location = "LS"; } string[] packageArray = wmgoods.packagelist; + if (packageArray == null || packageArray.Length <= 0) { Context.Ado.RollbackTran(); throw new Exception("无入库箱,请检查传入数据!"); } + // 入库去重检查 + string[] newPacakgeArray = packageArray.Distinct().ToArray(); + if (packageArray.Length != newPacakgeArray.Length) + { + Context.Ado.RollbackTran(); + throw new Exception("入库箱有重复,实际箱数:" + newPacakgeArray.Length); + } // 统计记录 List partnumbers = new(); int totalPackage = 0; diff --git a/ZR.Service/mes/wms/WmOutOrderService.cs b/ZR.Service/mes/wms/WmOutOrderService.cs index 11c969ec..6556e376 100644 --- a/ZR.Service/mes/wms/WmOutOrderService.cs +++ b/ZR.Service/mes/wms/WmOutOrderService.cs @@ -556,12 +556,17 @@ namespace ZR.Service.mes.wms + shipnumber + "\n零件号:" + string.Join(',', partnumbers) + + "\n数据库变动:插入成功" + + sum_insert + + "删除成功" + + sum_delete + "\n总箱数:" + totalPackage + "\n总零件数:" + totalPartnumber + "\n涉及批次号:\n" + string.Join(',', packageCodeRemark), + CreatedBy = Createby, CreatedTime = DateTime.Now, };