看板数据优化

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

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();
}
}