1
This commit is contained in:
@@ -1229,6 +1229,166 @@ namespace ZR.Service.mes.qc
|
||||
return result;
|
||||
}
|
||||
|
||||
// 获取抛光报表变动后 每个零件 的实际库存 startTime 必填
|
||||
public Dictionary<string, int> GetBatchPolishPartRealStock(
|
||||
List<string> partNumbers,
|
||||
DateTime startTime
|
||||
)
|
||||
{
|
||||
var result = new Dictionary<string, int>();
|
||||
try
|
||||
{
|
||||
foreach (var partNumber in partNumbers)
|
||||
{
|
||||
int polishWarehouseTotal =
|
||||
Context
|
||||
.Queryable<WmPolishInventory>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Sum(it => it.Quantity) ?? 0;
|
||||
|
||||
int productPolishTotal =
|
||||
Context
|
||||
.Queryable<QcQualityStatisticsFirst>()
|
||||
.Where(it => it.FinishedPartNumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Sum(it => it.PaoguangTotal) ?? 0;
|
||||
|
||||
int afterPolishPolishTotal =
|
||||
Context
|
||||
.Queryable<WmPolishQualityStatistics>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Sum(it => it.PaoguangTotal) ?? 0;
|
||||
|
||||
int gP12PolishTotal =
|
||||
Context
|
||||
.Queryable<WmGp12QualityStatistics>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Sum(it => it.PaoguangTotal) ?? 0;
|
||||
|
||||
int polishRequireTotal =
|
||||
Context
|
||||
.Queryable<WmPolishWorkQualityStatistics>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Sum(it => it.RequireNumber) ?? 0;
|
||||
|
||||
int realStock =
|
||||
polishWarehouseTotal
|
||||
+ productPolishTotal
|
||||
+ afterPolishPolishTotal
|
||||
+ gP12PolishTotal
|
||||
- polishRequireTotal;
|
||||
|
||||
result.Add(partNumber, realStock);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 此处应记录日志而不是直接抛出异常或返回0,否则调用者无法区别正常0库存与错误
|
||||
Console.WriteLine($"An error occurred: {ex.Message}");
|
||||
throw; // 重新抛出异常以告知调用者
|
||||
}
|
||||
}
|
||||
|
||||
// 获取GP12报表变动后 一次合格品 每个零件 的实际库存 startTime 必填
|
||||
public Dictionary<string, int> GetBatchOneTimePartRealStock(
|
||||
List<string> partNumbers,
|
||||
DateTime startTime
|
||||
)
|
||||
{
|
||||
var result = new Dictionary<string, int>();
|
||||
try
|
||||
{
|
||||
foreach (var partNumber in partNumbers)
|
||||
{
|
||||
// 基本值
|
||||
int oneTimeWarehouseTotal =
|
||||
Context
|
||||
.Queryable<WmOneTimeInventory>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Sum(it => it.Quantity) ?? 0;
|
||||
|
||||
// 产线倒车雷达
|
||||
// 倒车雷达提取
|
||||
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))
|
||||
.And(it => it.FinishedPartNumber == partNumber)
|
||||
.And(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.ToExpression();
|
||||
// 倒车雷达
|
||||
int productParkingSensorbQualifiedTotal =
|
||||
Context
|
||||
.Queryable<QcQualityStatisticsFirst>()
|
||||
.Where(predicateParkingSensor)
|
||||
.Sum(it => it.QualifiedNumber) ?? 0;
|
||||
// 产线合格 - 倒车雷达
|
||||
int productQualifiedTotal =
|
||||
Context
|
||||
.Queryable<QcQualityStatisticsFirst>()
|
||||
.Where(it => it.FinishedPartNumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Sum(it => it.QualifiedNumber) ?? 0 - productParkingSensorbQualifiedTotal;
|
||||
// 抛光合格
|
||||
int polishQualifiedTotal =
|
||||
Context
|
||||
.Queryable<WmPolishWorkQualityStatistics>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Sum(it => it.QualifiedNumber) ?? 0;
|
||||
// gp12投入
|
||||
int gP12RequireTotal =
|
||||
Context
|
||||
.Queryable<WmGp12QualityStatistics>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Sum(it => it.RequireNumber) ?? 0;
|
||||
// 后道直接出库
|
||||
int afterPolishOutTotal =
|
||||
Context
|
||||
.Queryable<WmPolishQualityStatistics>()
|
||||
.Where(it => it.Partnumber == partNumber)
|
||||
.Where(it => it.StartTime >= startTime.ToLocalTime())
|
||||
.Where(it => it.Type == 1)
|
||||
.Sum(it => it.RequireNumber) ?? 0;
|
||||
|
||||
int realStock =
|
||||
oneTimeWarehouseTotal
|
||||
+ productQualifiedTotal
|
||||
+ polishQualifiedTotal
|
||||
- gP12RequireTotal
|
||||
- afterPolishOutTotal;
|
||||
|
||||
result.Add(partNumber, realStock);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 此处应记录日志而不是直接抛出异常或返回0,否则调用者无法区别正常0库存与错误
|
||||
Console.WriteLine($"An error occurred: {ex.Message}");
|
||||
throw; // 重新抛出异常以告知调用者
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查零件号是否是门把手
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user