看板数据优化

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

@@ -147,5 +147,24 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC
return ToResponse(new ApiResult(500, ex.Message, ex.Message)); return ToResponse(new ApiResult(500, ex.Message, ex.Message));
} }
} }
/// <summary>
/// 零件号是否是门把手测试
/// </summary>
/// <param name="partnumber">零件号</param>
/// <returns>true false</returns>
[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));
}
}
} }
} }

View File

@@ -220,9 +220,9 @@
public int ProductQualifiedTotal { get; set; } = 0; public int ProductQualifiedTotal { get; set; } = 0;
/// <summary> /// <summary>
/// 产线一次合格总数(不包含门把手) /// 产线门把手合格数
///</summary> ///</summary>
public int ProductQualifiedNotDoorknobTotal { get; set; } = 0; public int ProductDoorknobQualifiedTotal { get; set; } = 0;
/// <summary> /// <summary>
/// 产线抛光总数 /// 产线抛光总数
@@ -254,6 +254,11 @@
///</summary> ///</summary>
public int PolishQualifiedTotal { get; set; } = 0; public int PolishQualifiedTotal { get; set; } = 0;
/// <summary>
/// 抛光门把手合格总数
///</summary>
public int PolishDoorknobQualifiedTotal { get; set; } = 0;
/// <summary> /// <summary>
/// 抛光打磨总数 /// 抛光打磨总数
///</summary> ///</summary>
@@ -275,9 +280,9 @@
public int AfterPolishQualifiedTotal { get; set; } = 0; public int AfterPolishQualifiedTotal { get; set; } = 0;
/// <summary> /// <summary>
/// 后道检验一次合格总数 (不包含门把手) /// 后道检验门把手合格数
///</summary> ///</summary>
public int AfterPolishQualifiedNotDoorknobTotal { get; set; } = 0; public int AfterPolishDoorknobQualifiedTotal { get; set; } = 0;
/// <summary> /// <summary>
/// 后道检验抛光总数 /// 后道检验抛光总数
@@ -309,6 +314,11 @@
///</summary> ///</summary>
public int GP12QualifiedTotal { get; set; } = 0; public int GP12QualifiedTotal { get; set; } = 0;
/// <summary>
/// 一次合格品GP12门把手数需要清理
///</summary>
public int GP12DoorknobQualifiedTotal { get; set; } = 0;
/// <summary> /// <summary>
/// 一次合格品GP12检验抛光总数 /// 一次合格品GP12检验抛光总数
///</summary> ///</summary>

View File

@@ -550,7 +550,7 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime() it => it.StartTime <= query.EndTime.Value.ToLocalTime()
) )
.ToExpression(); .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>(); var DoorknobPartNumberCheck = Expressionable.Create<WmMaterial>();
foreach (string checkStr in checkStrArray) foreach (string checkStr in checkStrArray)
{ {
@@ -559,8 +559,7 @@ namespace ZR.Service.mes.qc
; ;
DoorknobPartNumberCheck DoorknobPartNumberCheck
.And(it => it.Type == 1) .And(it => it.Type == 1)
.And(it => it.Status == 1) .And(it => it.Status == 1);
.And(it => it.Description.Contains("门把手"));
List<string> DoorknobPartNumberList = Context List<string> DoorknobPartNumberList = Context
.Queryable<WmMaterial>() .Queryable<WmMaterial>()
.Where(DoorknobPartNumberCheck.ToExpression()) .Where(DoorknobPartNumberCheck.ToExpression())
@@ -592,13 +591,11 @@ namespace ZR.Service.mes.qc
.Queryable<QcQualityStatisticsTotal>() .Queryable<QcQualityStatisticsTotal>()
.Where(predicate1) .Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0; .Sum(it => it.QualifiedNumber) ?? 0;
boardData.ProductQualifiedNotDoorknobTotal = boardData.ProductDoorknobQualifiedTotal =
boardData.ProductQualifiedTotal Context
- Context .Queryable<QcQualityStatisticsTotal>()
.Queryable<QcQualityStatisticsTotal>() .Where(predicate3)
.Where(predicate3) .Sum(it => it.QualifiedNumber) ?? 0;
.Sum(it => it.QualifiedNumber)
?? 0;
boardData.ProductPolishTotal = boardData.ProductPolishTotal =
Context Context
.Queryable<QcQualityStatisticsFirst>() .Queryable<QcQualityStatisticsFirst>()
@@ -618,7 +615,7 @@ namespace ZR.Service.mes.qc
// 除三优化 // 除三优化
boardData.ProductRequireTotal = boardData.ProductRequireTotal / 3; boardData.ProductRequireTotal = boardData.ProductRequireTotal / 3;
boardData.ProductQualifiedTotal = boardData.ProductQualifiedTotal / 3; boardData.ProductQualifiedTotal = boardData.ProductQualifiedTotal / 3;
boardData.ProductQualifiedNotDoorknobTotal = boardData.ProductQualifiedNotDoorknobTotal / 3; boardData.ProductDoorknobQualifiedTotal = boardData.ProductDoorknobQualifiedTotal / 3;
boardData.ProductPolishTotal = boardData.ProductPolishTotal / 3; boardData.ProductPolishTotal = boardData.ProductPolishTotal / 3;
boardData.ProductSandingTotal = boardData.ProductSandingTotal / 3; boardData.ProductSandingTotal = boardData.ProductSandingTotal / 3;
boardData.ProductDiscardTotal = boardData.ProductDiscardTotal / 3; boardData.ProductDiscardTotal = boardData.ProductDiscardTotal / 3;
@@ -668,7 +665,7 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime() it => it.StartTime <= query.EndTime.Value.ToLocalTime()
) )
.ToExpression(); .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>(); var DoorknobPartNumberCheck = Expressionable.Create<WmMaterial>();
foreach (string checkStr in checkStrArray) foreach (string checkStr in checkStrArray)
{ {
@@ -677,8 +674,7 @@ namespace ZR.Service.mes.qc
; ;
DoorknobPartNumberCheck DoorknobPartNumberCheck
.And(it => it.Type == 1) .And(it => it.Type == 1)
.And(it => it.Status == 1) .And(it => it.Status == 1);
.And(it => it.Description.Contains("门把手"));
List<string> DoorknobPartNumberList = Context List<string> DoorknobPartNumberList = Context
.Queryable<WmMaterial>() .Queryable<WmMaterial>()
.Where(DoorknobPartNumberCheck.ToExpression()) .Where(DoorknobPartNumberCheck.ToExpression())
@@ -700,6 +696,22 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime() it => it.StartTime <= query.EndTime.Value.ToLocalTime()
) )
.ToExpression(); .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 = boardData.PolishWarehouseTotal =
Context Context
.Queryable<WmPolishInventory>() .Queryable<WmPolishInventory>()
@@ -716,6 +728,11 @@ namespace ZR.Service.mes.qc
.Queryable<WmPolishWorkQualityStatistics>() .Queryable<WmPolishWorkQualityStatistics>()
.Where(predicate1) .Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0; .Sum(it => it.QualifiedNumber) ?? 0;
boardData.PolishDoorknobQualifiedTotal =
Context
.Queryable<WmPolishWorkQualityStatistics>()
.Where(predicate4)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.PolishSandingTotal = boardData.PolishSandingTotal =
Context Context
.Queryable<WmPolishWorkQualityStatistics>() .Queryable<WmPolishWorkQualityStatistics>()
@@ -737,13 +754,11 @@ namespace ZR.Service.mes.qc
.Queryable<WmPolishQualityStatistics>() .Queryable<WmPolishQualityStatistics>()
.Where(predicate2) .Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0; .Sum(it => it.QualifiedNumber) ?? 0;
boardData.AfterPolishQualifiedNotDoorknobTotal = boardData.AfterPolishDoorknobQualifiedTotal =
boardData.AfterPolishQualifiedTotal Context
- Context .Queryable<WmPolishQualityStatistics>()
.Queryable<WmPolishQualityStatistics>() .Where(predicate3)
.Where(predicate3) .Sum(it => it.QualifiedNumber) ?? 0;
.Sum(it => it.QualifiedNumber)
?? 0;
boardData.AfterPolishPolishTotal = boardData.AfterPolishPolishTotal =
Context Context
.Queryable<WmPolishQualityStatistics>() .Queryable<WmPolishQualityStatistics>()
@@ -790,6 +805,37 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime() it => it.StartTime <= query.EndTime.Value.ToLocalTime()
) )
.ToExpression(); .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 = boardData.OneTimeWarehouseTotal =
Context.Queryable<WmOneTimeInventory>().Where(predicate1).Sum(it => it.Quantity) Context.Queryable<WmOneTimeInventory>().Where(predicate1).Sum(it => it.Quantity)
?? 0; ?? 0;
@@ -804,6 +850,11 @@ namespace ZR.Service.mes.qc
.Queryable<WmGp12QualityStatistics>() .Queryable<WmGp12QualityStatistics>()
.Where(predicate2) .Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0; .Sum(it => it.QualifiedNumber) ?? 0;
boardData.GP12DoorknobQualifiedTotal =
Context
.Queryable<WmGp12QualityStatistics>()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.GP12PolishTotal = boardData.GP12PolishTotal =
Context Context
.Queryable<WmGp12QualityStatistics>() .Queryable<WmGp12QualityStatistics>()
@@ -901,5 +952,25 @@ namespace ZR.Service.mes.qc
result.UpdatedTime = DateTime.Now.ToLocalTime(); result.UpdatedTime = DateTime.Now.ToLocalTime();
return result; 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 = string[] checkStrArray =
{ {
"门把手","面盖",
"T22", "T22",
"T26", "T26",
"A58", "A58",
@@ -3586,8 +3587,7 @@ namespace ZR.Service.mes.qc
isDoorknobCheck isDoorknobCheck
.And(it => it.Partnumber == workorder_item.FinishedPartNumber) .And(it => it.Partnumber == workorder_item.FinishedPartNumber)
.And(it => it.Type == 1) .And(it => it.Type == 1)
.And(it => it.Status == 1) .And(it => it.Status == 1);
.And(it => it.Description.Contains("门把手"));
bool isDoorknob = Context bool isDoorknob = Context
.Queryable<WmMaterial>() .Queryable<WmMaterial>()
.Where(isDoorknobCheck.ToExpression()) .Where(isDoorknobCheck.ToExpression())

View File

@@ -46,5 +46,12 @@ namespace ZR.Service.mes.qc.IService
/// <returns></returns> /// <returns></returns>
public QcProductAndPolishAndOneTimeFqcBoardDto GetProductAndPolishAndOneTimeFqcBoardData(QcProductAndPolishAndOneTimeFqcBoardQuery query); 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> /// <returns></returns>
public bool CheckIsDoorknob(string partnumber) 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>(); var isDoorknobCheck = Expressionable.Create<WmMaterial>();
foreach (string checkStr in checkStrArray) foreach (string checkStr in checkStrArray)
{ {
@@ -286,8 +286,7 @@ namespace ZR.Service.mes.wms
isDoorknobCheck isDoorknobCheck
.And(it => it.Partnumber == partnumber) .And(it => it.Partnumber == partnumber)
.And(it => it.Type == 1) .And(it => it.Type == 1)
.And(it => it.Status == 1) .And(it => it.Status == 1);
.And(it => it.Description.Contains("门把手"));
return Context.Queryable<WmMaterial>().Where(isDoorknobCheck.ToExpression()).Any(); return Context.Queryable<WmMaterial>().Where(isDoorknobCheck.ToExpression()).Any();
} }
} }