| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using Microsoft.Extensions.Options;
- namespace Admin.NET.Plugin.AiDOP.WorkOrder;
- /// <summary>
- /// WP9 · 按 <see cref="AidopPickBillOptions.Mode"/> 选择 Local / Mes 建单实现。
- /// 注入点应使用本类型(或 <see cref="IPickBillCreator"/>),勿直接多实现竞注。
- /// </summary>
- 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<AidopPickBillOptions> opt,
- WorkOrderPickBillService local,
- MesPickBillCreator mes,
- WorkOrderKittingCheckService kittingCheckService)
- {
- _opt = opt.Value;
- _local = local;
- _mes = mes;
- _kittingCheckService = kittingCheckService;
- }
- public async Task<PickBillResult> 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;
- }
- }
|