You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
4.7 KiB
135 lines
4.7 KiB
using AutoMapper;
|
|
using Kean.Domain.Stock.Commands;
|
|
using Kean.Domain.Stock.Enums;
|
|
using Kean.Domain.Stock.Models;
|
|
using Kean.Domain.Stock.Repositories;
|
|
using Kean.Domain.Stock.SharedServices.Proxies;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Kean.Domain.Stock.CommandHandlers
|
|
{
|
|
/// <summary>
|
|
/// 命令处理程序
|
|
/// </summary>
|
|
public sealed class SetRollResultCommandHandler : CommandHandler<SetRollResultCommand>
|
|
{
|
|
private readonly ICommandBus _commandBus; // 命令总线
|
|
private readonly INotification _notifications; // 总线通知
|
|
private readonly IMapper _mapper; // 模型映射
|
|
private readonly IStockRepository _stockRepository; // 存储仓库
|
|
private readonly TaskProxy _taskProxy; // 任务服务
|
|
|
|
/// <summary>
|
|
/// 依赖注入
|
|
/// </summary>
|
|
public SetRollResultCommandHandler(
|
|
ICommandBus commandBus,
|
|
INotification notifications,
|
|
IMapper mapper,
|
|
TaskProxy taskProxy,
|
|
IStockRepository stockRepository)
|
|
{
|
|
_commandBus = commandBus;
|
|
_notifications = notifications;
|
|
_mapper = mapper;
|
|
_taskProxy = taskProxy;
|
|
_stockRepository = stockRepository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 处理程序
|
|
/// </summary>
|
|
public override async Task Handle(SetRollResultCommand command, CancellationToken cancellationToken)
|
|
{
|
|
if (command.ValidationResult.IsValid)
|
|
{
|
|
Models.Stock stock = null;
|
|
if (!string.IsNullOrEmpty(command.Barcode))
|
|
{
|
|
stock = await this._stockRepository.GetStock(command.Barcode);
|
|
}
|
|
if (!string.IsNullOrEmpty(command.BatchNo))
|
|
{
|
|
stock = await this._stockRepository.GetStorageBill(command.BatchNo);
|
|
}
|
|
|
|
if (stock == null)
|
|
{
|
|
await _commandBus.Notify(nameof(command.BatchNo), $"膜卷码({command.BatchNo})未找到库存", command.BatchNo,
|
|
cancellationToken: cancellationToken);
|
|
return;
|
|
}
|
|
|
|
List<StockLine> updateLines = new List<StockLine>();
|
|
foreach (var r in stock.Lines)
|
|
{
|
|
//if (r.Supplier == "ok")
|
|
//{
|
|
//}
|
|
//else
|
|
//{
|
|
// if (command.Code=="0")
|
|
// {
|
|
// //r.QualityState = "ok";
|
|
|
|
// r.Supplier = "ok";
|
|
// JObject jo = new JObject();
|
|
// jo.Add("property", "Supplier");
|
|
// jo.Add("message", command.Message);
|
|
|
|
// r.Remark = jo;
|
|
|
|
// updateLines.Add(r);
|
|
// }
|
|
//}
|
|
}
|
|
|
|
if (command.Code=="0")
|
|
{
|
|
if (updateLines.Count > 0)
|
|
{
|
|
var updateCommand = _mapper.Map<UpdateCommand>(stock);
|
|
updateCommand.Transaction = nameof(StockType.Update);
|
|
updateCommand.Lines = updateLines;
|
|
updateCommand.Operator = command.Operator;
|
|
updateCommand.Tag = JsonConvert.SerializeObject(new
|
|
{
|
|
Transaction = "SetRollResult"
|
|
});
|
|
await _commandBus.Execute(updateCommand, cancellationToken);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
await _taskProxy.SetTaskState(0, stock.Barcode, "WmsResultFail", $"{command.Message}", "Task");
|
|
}
|
|
|
|
//判断是否托盘上所有膜卷号已经过账
|
|
var stockUnload = await this._stockRepository.GetStorageUnupload(stock.Barcode);
|
|
if (stockUnload.Lines.Count() > 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
//全部上传完,删除任务
|
|
await _taskProxy.DeleteTask(stock.Barcode);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
await _commandBus.Notify(command.ValidationResult,
|
|
cancellationToken: cancellationToken);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|