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 { /// /// PLC名称 /// public string PlcName { get; set; } = string.Empty; /// /// 命令地址 /// public string CmdAddress { get; set; } = string.Empty; /// /// 反馈命令地址 /// 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 _logger; public RgvFinished6180Action(IDeviceMonitor deviceMonitor, IServiceScopeFactory scopeFactory, ILogger logger) { _deviceMonitor = deviceMonitor; _scopeFactory = scopeFactory; _logger = logger; } public async Task 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(); return await taskService.ExecuteAsync(variableAction.Param, RgvUpdateSourceEnum.PLC); } }