using Microsoft.Extensions.Options;
namespace Admin.NET.Plugin.AiDOP.WorkOrder;
///
/// WP9 · 按 选择 Local / Mes 建单实现。
/// 注入点应使用本类型(或 ),勿直接多实现竞注。
///
public sealed class PickBillCreatorFacade : IPickBillCreator, ITransient
{
private readonly AidopPickBillOptions _opt;
private readonly WorkOrderPickBillService _local;
private readonly MesPickBillCreator _mes;
private readonly WorkOrderKittingCheckService _kittingCheckService;
public PickBillCreatorFacade(
IOptions opt,
WorkOrderPickBillService local,
MesPickBillCreator mes,
WorkOrderKittingCheckService kittingCheckService)
{
_opt = opt.Value;
_local = local;
_mes = mes;
_kittingCheckService = kittingCheckService;
}
public async Task CreateAsync(
long tenantId,
string domain,
string workOrd,
string account,
CancellationToken ct = default)
{
var result = _opt.IsMes
? await _mes.CreateAsync(tenantId, domain, workOrd, account, ct)
: await _local.CreateAsync(tenantId, domain, workOrd, account, ct);
// 领料单新建成功后,将已有的齐套率结果回写到 NbrMaster.MFRate / NbrDetail.SatisfyQty
if (result.Created)
{
await _kittingCheckService.WriteBackMFRateAsync(tenantId, workOrd);
}
return result;
}
}