60 lines
1.8 KiB
C#
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);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|