Add machine ID on Deal param

This commit is contained in:
luosheng
2023-02-22 11:40:19 +08:00
parent 2f20c028cd
commit 5095205f19
2 changed files with 27 additions and 11 deletions

View File

@@ -422,20 +422,34 @@ namespace Modbus.Net
_parentJobKey = parentJobKey;
}
/// <summary>
/// 处理写返回
/// </summary>
/// <param name="queryId">任务ID每个触发器唯一</param>
/// <param name="onSuccess">成功回调方法</param>
/// <param name="onFailure">失败回调方法</param>
/// <param name="onSuccess">成功回调方法参数为设备ID</param>
/// <param name="onFailure">失败回调方法参数为设备ID</param>
/// <returns></returns>
/// <exception cref="NullReferenceException"></exception>
public async Task<MachineSetJobScheduler> Deal(string queryId = null, Func<Task> onSuccess = null, Func<Task> onFailure = null)
public async Task<MachineSetJobScheduler> Deal(string queryId = null, Func<string, Task> onSuccess = null, Func<string, Task> onFailure = null)
{
return await Deal<string>(queryId, onSuccess, onFailure);
}
/// <summary>
/// 处理写返回
/// </summary>
/// <param name="queryId">任务ID每个触发器唯一</param>
/// <param name="onSuccess">成功回调方法参数为设备ID</param>
/// <param name="onFailure">失败回调方法参数为设备ID</param>
/// <returns></returns>
/// <exception cref="NullReferenceException"></exception>
public async Task<MachineSetJobScheduler> Deal<TMachineKey>(string queryId = null, Func<string, Task> onSuccess = null, Func<string, Task> onFailure = null) where TMachineKey : IEquatable<TMachineKey>
{
if (queryId == null) return new MachineSetJobScheduler(_scheduler, _trigger, _parentJobKey);
JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group." + _trigger.Key.Name);
IJobDetail job = JobBuilder.Create<MachineDealDataJob>()
IJobDetail job = JobBuilder.Create<MachineDealDataJob<TMachineKey>>()
.WithIdentity(jobKey)
.StoreDurably(true)
.Build();
@@ -530,25 +544,27 @@ namespace Modbus.Net
/// <summary>
/// 处理写返回任务
/// </summary>
public class MachineDealDataJob : IJob
public class MachineDealDataJob<TMachineKey> : IJob where TMachineKey: IEquatable<TMachineKey>
{
/// <inheritdoc />
public async Task Execute(IJobExecutionContext context)
{
object machine;
object success;
object onSuccess;
object onFailure;
context.JobDetail.JobDataMap.TryGetValue("Machine", out machine);
context.JobDetail.JobDataMap.TryGetValue("Success", out success);
context.JobDetail.JobDataMap.TryGetValue("OnSuccess", out onSuccess);
context.JobDetail.JobDataMap.TryGetValue("OnFailure", out onFailure);
bool? successValue = (bool?)success;
if (successValue == true && onSuccess != null)
{
await ((Func<Task>)onSuccess)();
await ((Func<string, Task>)onSuccess)(((IMachineProperty<TMachineKey>)machine).GetMachineIdString());
}
if (successValue == false && onFailure != null)
{
await ((Func<Task>)onFailure)();
await ((Func<string, Task>)onFailure)(((IMachineProperty<TMachineKey>)machine).GetMachineIdString());
}
context.JobDetail.JobDataMap.Remove("Success");

View File

@@ -40,15 +40,15 @@ namespace MachineJob.Service
await MachineJobSchedulerCreator.CancelJob("Trigger1");
}
public Task OnSuccess()
public Task OnSuccess(string machineId)
{
Console.WriteLine("дÈÎÎñ³É¹¦");
Console.WriteLine("Machine {0} set success", machineId);
return Task.CompletedTask;
}
public Task OnFailure()
public Task OnFailure(string machineId)
{
Console.WriteLine("дÈÎÎñʧ°Ü");
Console.WriteLine("Machine {0} set failure", machineId);
return Task.CompletedTask;
}