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,
};