using CMS.Plugin.FlowManagement.Abstractions;
|
using CMS.Plugin.FlowManagement.Abstractions.Models;
|
using CMS.Plugin.MesSuite.Abstractions.Models;
|
using CMS.Plugin.HIAWms.Domain.WmsContainers;
|
using CMS.Plugin.OrderManagement.Abstractions.Models;
|
using CMS.Plugin.ProcessManagement.Abstractions.Models;
|
using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
|
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.Logging;
|
using SYC.Flow.Kernel;
|
using Volo.Abp.DependencyInjection;
|
using Volo.Abp.Uow;
|
|
namespace CMS.Plugin.HIAWms.FlowProcessors
|
{
|
/// <summary>
|
/// 流程处理器
|
/// </summary>
|
public class HIAWmsFlowProcessor : IFlowProcessor, ISingletonDependency
|
{
|
private readonly ILogger<HIAWmsFlowProcessor> _logger;
|
private readonly IServiceProvider _serviceProvider;
|
|
/// <summary>
|
/// Initializes a new instance of the <see cref="FlowProcessor"/> class.
|
/// </summary>
|
public HIAWmsFlowProcessor(ILogger<HIAWmsFlowProcessor> logger, IServiceProvider serviceProvider)
|
{
|
_logger = logger;
|
_serviceProvider = serviceProvider;
|
}
|
|
/// <inheritdoc />
|
public Task OnEnterAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
|
{
|
return Task.CompletedTask;
|
}
|
|
/// <inheritdoc />
|
public async Task OnExecuteAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
|
{
|
if (sender is Activity activity)
|
{
|
var eventArgs = args as ProcessflowEventArgs;
|
var procID = eventArgs.DataItems["Instance_ProcID"];
|
if (activity?.Name == "第三方系统合格判断")
|
{
|
// 工艺模型
|
var processModel = eventArgs.DataItems.ApplicationData as ProcessModel;
|
|
// 工单模型
|
var orderModel = eventArgs.DataItems[FlowItemCollection.OrderModel] as OrderModel;
|
|
// 产品模型
|
var productModel = eventArgs.DataItems[FlowItemCollection.ProductModel] as AssociationProductModel;
|
|
// 追溯模型
|
var traceModel = eventArgs.DataItems[FlowItemCollection.TraceModel] as TraceModel;
|
|
// 业务处理
|
await ProcessAsync();
|
|
_logger.LogInformation($"执行流程:实例={procID} -> {flowProcessor.ProcName} -> {activity.Name} ProductionFlowProcessor");
|
}
|
}
|
}
|
|
/// <summary>
|
/// Processes the asynchronous.
|
/// </summary>
|
private async Task ProcessAsync()
|
{
|
using var scope = _serviceProvider.CreateScope();
|
var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
|
using var uow = unitOfWorkManager.Begin(requiresNew: true);
|
var wmscontainerRepository = scope.ServiceProvider.GetRequiredService<IWmsContainerRepository>();
|
var count = await wmscontainerRepository.GetCountAsync();
|
|
// 如果有更新数据库操作,需提交保存
|
// await uow.SaveChangesAsync();
|
|
_logger.LogInformation($"ProcessAsync,Count={count}");
|
}
|
|
/// <inheritdoc />
|
public Task OnExitAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
|
{
|
return Task.CompletedTask;
|
}
|
}
|
}
|