添加了后台的数据处理服务。并判断如果值发生了变化则更新数据库
This commit is contained in:
33
Services/Processors/CheckValueChangedProcessor.cs
Normal file
33
Services/Processors/CheckValueChangedProcessor.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using PMSWPF.Helper;
|
||||
using PMSWPF.Models;
|
||||
|
||||
namespace PMSWPF.Services.Processors;
|
||||
|
||||
public class CheckValueChangedProcessor : IVariableDataProcessor
|
||||
{
|
||||
private readonly DataServices _dataServices;
|
||||
|
||||
public CheckValueChangedProcessor(DataServices dataServices)
|
||||
{
|
||||
_dataServices = dataServices;
|
||||
}
|
||||
public Task ProcessAsync(VariableDataContext context)
|
||||
{
|
||||
VariableData newVariable = context.Data;
|
||||
if (!_dataServices.AllVariables.TryGetValue(newVariable.Id, out VariableData oldVariable))
|
||||
{
|
||||
NlogHelper.Warn($"检查变量值是否改变时在_dataServices.AllVariables中找不到Id:{newVariable.Id},Name:{newVariable.Name}的变量。");
|
||||
context.IsHandled = true;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
if (newVariable.DataValue == oldVariable.DataValue)
|
||||
{
|
||||
// 值没有变化,直接完成
|
||||
context.IsHandled = true;
|
||||
}
|
||||
|
||||
// 在这里处理 context.Data
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -11,25 +11,13 @@ namespace PMSWPF.Services.Processors;
|
||||
/// </summary>
|
||||
public class LoggingDataProcessor : IVariableDataProcessor
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 构造函数,注入日志记录器。
|
||||
/// </summary>
|
||||
/// <param name="logger">日志记录器实例。</param>
|
||||
public LoggingDataProcessor()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实现处理逻辑,此处为记录日志。
|
||||
/// </summary>
|
||||
/// <param name="data">要处理的变量数据。</param>
|
||||
/// <returns>一个表示完成的异步任务。</returns>
|
||||
public Task ProcessAsync(VariableData data)
|
||||
public Task ProcessAsync(VariableDataContext context)
|
||||
{
|
||||
// 使用日志记录器输出变量的名称和值
|
||||
NlogHelper.Info($"处理数据: {data.Name}, 值: {data.DataValue}");
|
||||
// 由于此操作是同步的,直接返回一个已完成的任务。
|
||||
NlogHelper.Info($"处理数据: {context.Data.Name}, 值: {context.Data.DataValue}");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
37
Services/Processors/UpdateDbVariableProcessor.cs
Normal file
37
Services/Processors/UpdateDbVariableProcessor.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using System.Threading.Tasks;
|
||||
using PMSWPF.Models;
|
||||
using PMSWPF.Helper;
|
||||
|
||||
namespace PMSWPF.Services.Processors
|
||||
{
|
||||
public class UpdateDbVariableProcessor : IVariableDataProcessor
|
||||
{
|
||||
private readonly DataServices _dataServices;
|
||||
|
||||
public UpdateDbVariableProcessor(DataServices dataServices)
|
||||
{
|
||||
_dataServices = dataServices;
|
||||
}
|
||||
|
||||
public async Task ProcessAsync(VariableDataContext context)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 假设 DataServices 有一个方法来更新 VariableData
|
||||
await _dataServices.UpdateVariableDataAsync(context.Data);
|
||||
NlogHelper.Info($"数据库变量 {context.Data.Name} 更新成功,值为: {context.Data.DataValue}");
|
||||
|
||||
if (!_dataServices.AllVariables.TryGetValue(context.Data.Id, out VariableData oldVariable))
|
||||
{
|
||||
NlogHelper.Warn($"数据库更新完成修改变量值是否改变时在_dataServices.AllVariables中找不到Id:{context.Data.Id},Name:{context.Data.Name}的变量。");
|
||||
context.IsHandled = true;
|
||||
}
|
||||
oldVariable.DataValue = context.Data.DataValue;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
NlogHelper.Error($"更新数据库变量 {context.Data.Name} 失败: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user