Files
WCS/Plugins/Wcs/Plugin.Cowain.Wcs/Actions/RgvFinishedAction.cs
2026-03-02 10:56:30 +08:00

60 lines
1.8 KiB
C#

using Cowain.Base.Models;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Plugin.Cowain.Driver.Abstractions;
using Plugin.Cowain.Driver.Attributes;
using Plugin.Cowain.Driver.Models;
using Plugin.Cowain.Wcs.IServices;
using Plugin.Cowain.Wcs.Models.Enum;
namespace Plugin.Cowain.Wcs.Actions;
public class RgvFinishedParamData
{
/// <summary>
/// PLC名称
/// </summary>
public string PlcName { get; set; } = string.Empty;
/// <summary>
/// 命令地址
/// </summary>
public string CmdAddress { get; set; } = string.Empty;
/// <summary>
/// 反馈命令地址
/// </summary>
public string RetCmdAddress { get; set; } = string.Empty;
}
[Action("RgvFinished", "RGV动作完成时间")]
public class RgvFinishedAction : IVariableAction
{
private readonly IDeviceMonitor _deviceMonitor;
private IServiceScopeFactory _scopeFactory;
private readonly ILogger<RgvFinishedAction> _logger;
public RgvFinishedAction(IDeviceMonitor deviceMonitor, IServiceScopeFactory scopeFactory, ILogger<RgvFinishedAction> logger)
{
_deviceMonitor = deviceMonitor;
_scopeFactory = scopeFactory;
_logger = logger;
}
public async Task<ResultModel> ExecuteAsync(VariableAction variableAction, CancellationToken cancellationToken)
{
_logger.LogInformation($"执行调度完成事件:{variableAction.Variable.Name}-{variableAction.Variable.Address},参数:{variableAction.Param},旧值:{variableAction.Variable.OldValue},新值:{variableAction.Variable.Value}");
using var scope = _scopeFactory.CreateScope();
var taskService = scope.ServiceProvider.GetRequiredService<IRgvTaskService>();
return await taskService.ExecuteAsync(variableAction.Param, RgvUpdateSourceEnum.PLC);
}
}