using Kean.Domain.Stock.Commands; using Kean.Domain.Stock.Repositories; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace Kean.Domain.Stock.CommandHandlers { /// /// 命令处理程序 /// public sealed class PreSetQcStatusCommandHandler : CommandHandler { private readonly ICommandBus _commandBus; // 命令总线 private readonly IStockRepository _stockRepository; // 存储仓库 /// /// 依赖注入 /// public PreSetQcStatusCommandHandler( ICommandBus commandBus, IStockRepository stockRepository) { _commandBus = commandBus; _stockRepository = stockRepository; } /// /// 处理程序 /// public override async Task Handle(PreSetQcStatusCommand command, CancellationToken cancellationToken) { if (command.ValidationResult.IsValid) { if (command.BarcodeList != null) { foreach (var r in command.BarcodeList) { SetQcStatusCommand setQcStatuscommand = new SetQcStatusCommand(); setQcStatuscommand.Barcode = r; setQcStatuscommand.Enable = command.Enable; setQcStatuscommand.Message = command.Supplier; setQcStatuscommand.Operator = command.Operator; await _commandBus.Execute(setQcStatuscommand, cancellationToken); } Output(nameof(command.BarcodeCount), command.BarcodeList.Count()); } else { var barcodes = await this._stockRepository.GetQcBarcode(command.GoodsCode, command.Batch, command.ManufacturingDateFrom, command.ManufacturingDateTo, command.InboundTimeFrom, command.InboundTimeTo, command.Barcode, command.Supplier, command.Enable); foreach (var r in barcodes) { SetQcStatusCommand setQcStatuscommand = new SetQcStatusCommand(); setQcStatuscommand.Barcode = r.Barcode; setQcStatuscommand.Enable = command.Enable; setQcStatuscommand.Message = command.Supplier; setQcStatuscommand.Operator = command.Operator; await _commandBus.Execute(setQcStatuscommand, cancellationToken); } Output(nameof(command.BarcodeCount), barcodes.Count()); } } else { await _commandBus.Notify(command.ValidationResult, cancellationToken: cancellationToken); } } } }