Files
WCS/Plugins/Wcs/Plugin.Cowain.Wcs/Actions/6180/RgvFinished6180Action.cs
2026-03-02 09:13:29 +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 RgvFinished6180ParamData
{
/// <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("RgvFinished6180", "RGV动作完成6180")]
public class RgvFinished6180Action : IVariableAction
{
private readonly IDeviceMonitor _deviceMonitor;
private IServiceScopeFactory _scopeFactory;
private readonly ILogger<RgvFinished6180Action> _logger;
public RgvFinished6180Action(IDeviceMonitor deviceMonitor, IServiceScopeFactory scopeFactory, ILogger<RgvFinished6180Action> 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<IRgvTask6180Service>();
return await taskService.ExecuteAsync(variableAction.Param, RgvUpdateSourceEnum.PLC);
}
}