Files
qhmes/yy-admin-master/YY.Admin.Core/Util/CargoTareWeightCalculator.cs

50 lines
1.5 KiB
C#
Raw Normal View History

using YY.Admin.Core.Entity;
namespace YY.Admin.Core.Util;
/// <summary>
/// 「货物皮重」桌面端本地累计计算器。
/// 与后端 IMesXslRawMaterialEntryService.sumCargoTareByBillNos 保持同一口径:
/// 同一榜单BillNo下所有原料入场记录的 PalletTareTotal托盘及皮重合计累加。
/// </summary>
public static class CargoTareWeightCalculator
{
/// <summary>按 BillNo 分组累计「货物皮重」。</summary>
public static Dictionary<string, double> SumByBillNos(
IEnumerable<MesXslRawMaterialEntry> entries,
IEnumerable<string?> billNos)
{
var keys = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
foreach (var b in billNos)
{
if (!string.IsNullOrWhiteSpace(b)) keys.Add(b!);
}
var result = new Dictionary<string, double>(StringComparer.OrdinalIgnoreCase);
if (keys.Count == 0)
{
return result;
}
foreach (var e in entries)
{
if (string.IsNullOrWhiteSpace(e.BillNo) || !keys.Contains(e.BillNo!))
{
continue;
}
if (e.PalletTareTotal is not { } tare || tare == 0d)
{
continue;
}
if (result.TryGetValue(e.BillNo!, out var acc))
{
result[e.BillNo!] = acc + tare;
}
else
{
result[e.BillNo!] = tare;
}
}
return result;
}
}