看板数据优化

This commit is contained in:
2024-08-23 16:59:36 +08:00
parent 0801e5e9ef
commit 808df215ac
6 changed files with 136 additions and 30 deletions

View File

@@ -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<WmMaterial>();
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<string> DoorknobPartNumberList = Context
.Queryable<WmMaterial>()
.Where(DoorknobPartNumberCheck.ToExpression())
@@ -592,13 +591,11 @@ namespace ZR.Service.mes.qc
.Queryable<QcQualityStatisticsTotal>()
.Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.ProductQualifiedNotDoorknobTotal =
boardData.ProductQualifiedTotal
- Context
.Queryable<QcQualityStatisticsTotal>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber)
?? 0;
boardData.ProductDoorknobQualifiedTotal =
Context
.Queryable<QcQualityStatisticsTotal>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.ProductPolishTotal =
Context
.Queryable<QcQualityStatisticsFirst>()
@@ -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<WmMaterial>();
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<string> DoorknobPartNumberList = Context
.Queryable<WmMaterial>()
.Where(DoorknobPartNumberCheck.ToExpression())
@@ -700,6 +696,22 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime()
)
.ToExpression();
var predicate4 = Expressionable
.Create<WmPolishWorkQualityStatistics>()
.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<WmPolishInventory>()
@@ -716,6 +728,11 @@ namespace ZR.Service.mes.qc
.Queryable<WmPolishWorkQualityStatistics>()
.Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.PolishDoorknobQualifiedTotal =
Context
.Queryable<WmPolishWorkQualityStatistics>()
.Where(predicate4)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.PolishSandingTotal =
Context
.Queryable<WmPolishWorkQualityStatistics>()
@@ -737,13 +754,11 @@ namespace ZR.Service.mes.qc
.Queryable<WmPolishQualityStatistics>()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.AfterPolishQualifiedNotDoorknobTotal =
boardData.AfterPolishQualifiedTotal
- Context
.Queryable<WmPolishQualityStatistics>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber)
?? 0;
boardData.AfterPolishDoorknobQualifiedTotal =
Context
.Queryable<WmPolishQualityStatistics>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.AfterPolishPolishTotal =
Context
.Queryable<WmPolishQualityStatistics>()
@@ -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<WmMaterial>();
foreach (string checkStr in checkStrArray)
{
DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
DoorknobPartNumberCheck
.And(it => it.Type == 1)
.And(it => it.Status == 1);
List<string> DoorknobPartNumberList = Context
.Queryable<WmMaterial>()
.Where(DoorknobPartNumberCheck.ToExpression())
.Select(it => it.Partnumber)
.ToList();
var predicate3 = Expressionable
.Create<WmGp12QualityStatistics>()
.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<WmOneTimeInventory>().Where(predicate1).Sum(it => it.Quantity)
?? 0;
@@ -804,6 +850,11 @@ namespace ZR.Service.mes.qc
.Queryable<WmGp12QualityStatistics>()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.GP12DoorknobQualifiedTotal =
Context
.Queryable<WmGp12QualityStatistics>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.GP12PolishTotal =
Context
.Queryable<WmGp12QualityStatistics>()
@@ -901,5 +952,25 @@ namespace ZR.Service.mes.qc
result.UpdatedTime = DateTime.Now.ToLocalTime();
return result;
}
/// <summary>
/// 检查零件号是否是门把手
/// </summary>
/// <returns></returns>
public bool CheckIsDoorknob(string partnumber)
{
string[] checkStrArray = { "门把手","面盖","T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" };
var isDoorknobCheck = Expressionable.Create<WmMaterial>();
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<WmMaterial>().Where(isDoorknobCheck.ToExpression()).Any();
}
}
}

View File

@@ -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<WmMaterial>()
.Where(isDoorknobCheck.ToExpression())

View File

@@ -46,5 +46,12 @@ namespace ZR.Service.mes.qc.IService
/// <returns></returns>
public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData(QcProductAndPolishAndOneTimeFqcBoardQuery query);
/// <summary>
/// 检查零件号是否是门把手
/// </summary>
/// <param name="partnumber"></param>
/// <returns></returns>
public bool CheckIsDoorknob(string partnumber);
}
}

View File

@@ -276,7 +276,7 @@ namespace ZR.Service.mes.wms
/// <returns></returns>
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<WmMaterial>();
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<WmMaterial>().Where(isDoorknobCheck.ToExpression()).Any();
}
}