涂装抛光流程变更

This commit is contained in:
2024-10-18 20:08:12 +08:00
parent 43ec43ba43
commit 9b86e6b9d8
16 changed files with 541 additions and 94 deletions

View File

@@ -514,28 +514,19 @@ namespace ZR.Service.mes.qc
}
}
// 获取产线相关数据
/// <summary>
/// 获取产线相关数据
/// </summary>
/// <param name="boardData"></param>
/// <param name="query"></param>
/// <returns></returns>
public QcProductAndPolishAndOneTimeFqcBoardDto GetProductTotal(
QcProductAndPolishAndOneTimeFqcBoardDto boardData,
QcProductAndPolishAndOneTimeFqcBoardQuery query
)
{
// 投入数
var predicate1 = Expressionable
.Create<QcQualityStatisticsTotal>()
.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<QcQualityStatisticsFirst>()
.AndIF(
!string.IsNullOrEmpty(query.Partnumber),
@@ -550,23 +541,34 @@ 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)
{
DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
DoorknobPartNumberCheck
.And(it => it.Type == 1)
.And(it => it.Status == 1);
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<QcQualityStatisticsTotal>()
var predicate2 = Expressionable
.Create<QcQualityStatisticsFirst>()
.And(it => DoorknobPartNumberList.Contains(it.FinishedPartNumber))
.AndIF(
!string.IsNullOrEmpty(query.Partnumber),
@@ -581,34 +583,71 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime()
)
.ToExpression();
// 倒车雷达提取
string[] checkStrArray2 = { "倒车雷达" };
var ParkingSensorPartNumberCheck = Expressionable.Create<WmMaterial>();
foreach (string checkStr in checkStrArray2)
{
ParkingSensorPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
ParkingSensorPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
List<string> ParkingSensorPartNumberList = Context
.Queryable<WmMaterial>()
.Where(ParkingSensorPartNumberCheck.ToExpression())
.Select(it => it.Partnumber)
.ToList();
var predicateParkingSensor = Expressionable
.Create<QcQualityStatisticsFirst>()
.And(it => ParkingSensorPartNumberList.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<QcQualityStatisticsTotal>()
.Queryable<QcQualityStatisticsFirst>()
.Where(predicate1)
.Sum(it => it.RequireNumber) ?? 0;
boardData.ProductQualifiedTotal =
Context
.Queryable<QcQualityStatisticsTotal>()
.Queryable<QcQualityStatisticsFirst>()
.Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0;
// 门把手合格
boardData.ProductDoorknobQualifiedTotal =
Context
.Queryable<QcQualityStatisticsTotal>()
.Where(predicate3)
.Queryable<QcQualityStatisticsFirst>()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0;
// 倒车雷达合格
boardData.ProductParkingSensorbQualifiedTotal =
Context
.Queryable<QcQualityStatisticsFirst>()
.Where(predicateParkingSensor)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.ProductPolishTotal =
Context
.Queryable<QcQualityStatisticsFirst>()
.Where(predicate2)
.Where(predicate1)
.Sum(it => it.PaoguangTotal) ?? 0;
boardData.ProductSandingTotal =
Context
.Queryable<QcQualityStatisticsTotal>()
.Queryable<QcQualityStatisticsFirst>()
.Where(predicate1)
.Sum(it => it.DamoTotal) ?? 0;
boardData.ProductDiscardTotal =
Context
.Queryable<QcQualityStatisticsTotal>()
.Queryable<QcQualityStatisticsFirst>()
.Where(predicate1)
.Sum(it => it.BaofeiTotal) ?? 0;
@@ -616,9 +655,20 @@ namespace ZR.Service.mes.qc
boardData.ProductRequireTotal = boardData.ProductRequireTotal / 3;
boardData.ProductQualifiedTotal = boardData.ProductQualifiedTotal / 3;
boardData.ProductDoorknobQualifiedTotal = boardData.ProductDoorknobQualifiedTotal / 3;
boardData.ProductParkingSensorbQualifiedTotal =
boardData.ProductParkingSensorbQualifiedTotal / 3;
boardData.ProductPolishTotal = boardData.ProductPolishTotal / 3;
boardData.ProductSandingTotal = boardData.ProductSandingTotal / 3;
boardData.ProductDiscardTotal = boardData.ProductDiscardTotal / 3;
// 合格数补正(合格数 = 总合格数 - 门把手 - 倒车雷达)
/*boardData.ProductQualifiedTotal = boardData.ProductQualifiedTotal - (boardData.ProductDoorknobQualifiedTotal + boardData.ProductParkingSensorbQualifiedTotal);*/
if (boardData.ProductRequireTotal > 0)
{
double passRate =
((double)boardData.ProductQualifiedTotal / boardData.ProductRequireTotal) * 100;
boardData.ProductQualifiePassRate = passRate.ToString("0") + "%";
}
return boardData;
}
@@ -665,21 +715,77 @@ 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)
{
DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
DoorknobPartNumberCheck
.And(it => it.Type == 1)
.And(it => it.Status == 1);
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();
// 倒车雷达提取
string[] checkStrArray2 = { "倒车雷达" };
var ParkingSensorPartNumberCheck = Expressionable.Create<WmMaterial>();
foreach (string checkStr in checkStrArray2)
{
ParkingSensorPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
ParkingSensorPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
List<string> ParkingSensorPartNumberList = Context
.Queryable<WmMaterial>()
.Where(ParkingSensorPartNumberCheck.ToExpression())
.Select(it => it.Partnumber)
.ToList();
var predicateParkingSensor1 = Expressionable
.Create<WmPolishWorkQualityStatistics>()
.And(it => ParkingSensorPartNumberList.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();
var predicateParkingSensor2 = Expressionable
.Create<WmPolishQualityStatistics>()
.And(it => ParkingSensorPartNumberList.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();
var predicate3 = Expressionable
.Create<WmPolishQualityStatistics>()
.And(it => DoorknobPartNumberList.Contains(it.Partnumber))
@@ -697,21 +803,21 @@ namespace ZR.Service.mes.qc
)
.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();
.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>()
@@ -723,16 +829,24 @@ namespace ZR.Service.mes.qc
.Queryable<WmPolishWorkQualityStatistics>()
.Where(predicate1)
.Sum(it => it.RequireNumber) ?? 0;
// 抛光合格
boardData.PolishQualifiedTotal =
Context
.Queryable<WmPolishWorkQualityStatistics>()
.Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0;
// 抛光门把手
boardData.PolishDoorknobQualifiedTotal =
Context
.Queryable<WmPolishWorkQualityStatistics>()
.Where(predicate4)
.Sum(it => it.QualifiedNumber) ?? 0;
// 抛光倒车雷达
boardData.PolishParkingSensorbQualifiedTotal =
Context
.Queryable<WmPolishWorkQualityStatistics>()
.Where(predicateParkingSensor1)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.PolishSandingTotal =
Context
.Queryable<WmPolishWorkQualityStatistics>()
@@ -749,16 +863,24 @@ namespace ZR.Service.mes.qc
.Queryable<WmPolishQualityStatistics>()
.Where(predicate2)
.Sum(it => it.RequireNumber) ?? 0;
// 后道合格
boardData.AfterPolishQualifiedTotal =
Context
.Queryable<WmPolishQualityStatistics>()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0;
// 后道门把手合格数
boardData.AfterPolishDoorknobQualifiedTotal =
Context
.Queryable<WmPolishQualityStatistics>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
// 后道倒车雷达合格数
boardData.AfterPolishParkingSensorbQualifiedTotal =
Context
.Queryable<WmPolishQualityStatistics>()
.Where(predicateParkingSensor2)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.AfterPolishPolishTotal =
Context
.Queryable<WmPolishQualityStatistics>()
@@ -774,6 +896,12 @@ namespace ZR.Service.mes.qc
.Queryable<WmPolishQualityStatistics>()
.Where(predicate2)
.Sum(it => it.BaofeiTotal) ?? 0;
// 合格数修正
boardData.PolishQualifiedTotal =
boardData.PolishQualifiedTotal - boardData.PolishParkingSensorbQualifiedTotal;
boardData.AfterPolishQualifiedTotal =
boardData.AfterPolishQualifiedTotal
- boardData.AfterPolishParkingSensorbQualifiedTotal;
return boardData;
}
@@ -805,37 +933,79 @@ 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)
{
DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
DoorknobPartNumberCheck
.And(it => it.Type == 1)
.And(it => it.Status == 1);
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();
.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();
// 倒车雷达提取
string[] checkStrArray2 = { "倒车雷达" };
var ParkingSensorPartNumberCheck = Expressionable.Create<WmMaterial>();
foreach (string checkStr in checkStrArray2)
{
ParkingSensorPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
ParkingSensorPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
List<string> ParkingSensorPartNumberList = Context
.Queryable<WmMaterial>()
.Where(ParkingSensorPartNumberCheck.ToExpression())
.Select(it => it.Partnumber)
.ToList();
var predicateParkingSensor = Expressionable
.Create<WmGp12QualityStatistics>()
.And(it => ParkingSensorPartNumberList.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;
@@ -845,16 +1015,24 @@ namespace ZR.Service.mes.qc
.Queryable<WmGp12QualityStatistics>()
.Where(predicate2)
.Sum(it => it.RequireNumber) ?? 0;
// GP12合格数
boardData.GP12QualifiedTotal =
Context
.Queryable<WmGp12QualityStatistics>()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0;
// GP12门把手
boardData.GP12DoorknobQualifiedTotal =
Context
.Queryable<WmGp12QualityStatistics>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
// GP12倒车雷达
boardData.GP12ParkingSensorQualifiedTotal =
Context
.Queryable<WmGp12QualityStatistics>()
.Where(predicateParkingSensor)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.GP12PolishTotal =
Context
.Queryable<WmGp12QualityStatistics>()
@@ -870,6 +1048,16 @@ namespace ZR.Service.mes.qc
.Queryable<WmGp12QualityStatistics>()
.Where(predicate2)
.Sum(it => it.BaofeiTotal) ?? 0;
boardData.GP12QualifiedTotal =
boardData.GP12QualifiedTotal - boardData.GP12ParkingSensorQualifiedTotal;
if (boardData.GP12RequireTotal > 0)
{
double passRate =
((double)boardData.GP12QualifiedTotal / boardData.GP12RequireTotal) * 100;
boardData.GP12QualifiePassRate = passRate.ToString("0") + "%";
}
return boardData;
}
@@ -926,6 +1114,66 @@ namespace ZR.Service.mes.qc
return boardData;
}
/// <summary>
/// 获取二次统计数据
/// </summary>
/// <param name="boardData"></param>
/// <param name="query"></param>
/// <returns></returns>
public QcProductAndPolishAndOneTimeFqcBoardDto GetStatisticsTotal(
QcProductAndPolishAndOneTimeFqcBoardDto boardData,
QcProductAndPolishAndOneTimeFqcBoardQuery query
)
{
var predicate1 = Expressionable
.Create<WmPolishQualityStatistics>()
.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()
)
.And(it => it.Type == 1)
.ToExpression();
var predicate2 = Expressionable
.Create<WmGp12QualityStatistics>()
.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()
)
.And(it=>it.Type == 1)
.ToExpression();
boardData.StatisticsPolishQualifiedTotal =
(
Context
.Queryable<WmPolishQualityStatistics>()
.Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0
)
+ (
Context
.Queryable<WmGp12QualityStatistics>()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0
);
boardData.StatisticsProductAndPolishQualifiedTotal = boardData.StatisticsPolishQualifiedTotal + boardData.ProductQualifiedTotal;
return boardData;
}
/// <summary>
/// 获取产线,抛光,一次合格品质量报表看板数据
/// </summary>
@@ -939,6 +1187,7 @@ namespace ZR.Service.mes.qc
result = GetPolishTotal(result, query);
result = GetOneTimeTotal(result, query);
result = GetFinishProductTotal(result, query);
result = GetStatisticsTotal(result, query);
result.SandingTotal =
result.ProductSandingTotal
+ result.PolishSandingTotal
@@ -959,7 +1208,20 @@ namespace ZR.Service.mes.qc
/// <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)
{