This commit is contained in:
2024-10-25 19:01:06 +08:00
parent 0f3232d32b
commit 58994f4d7a
14 changed files with 414 additions and 10 deletions

View File

@@ -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>