using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace YunDa.SOMS.Application.DataMonitoring.SecondaryCircuitInspection.Services { /// /// 表达式计算服务接口 /// public interface IExpressionEvaluationService { /// /// 计算表达式结果 /// /// 表达式字符串,格式如: {16385_0}==1&&{752}>1000 /// 时间窗口(秒) /// 取消令牌 /// 表达式计算结果 Task EvaluateExpressionAsync( string expression, int timeWindowSeconds = 60, CancellationToken cancellationToken = default); /// /// 验证表达式语法 /// /// 表达式字符串 /// 验证结果 ExpressionValidationResult ValidateExpression(string expression); /// /// 提取表达式中的变量代码 /// /// 表达式字符串 /// 变量代码列表 List ExtractVariableCodes(string expression); } /// /// 表达式计算结果 /// public class ExpressionEvaluationResult { /// /// 计算是否成功 /// public bool IsSuccess { get; set; } /// /// 表达式结果 /// public bool Result { get; set; } /// /// 错误信息 /// public string ErrorMessage { get; set; } /// /// 计算耗时(毫秒) /// public long ExecutionTimeMs { get; set; } /// /// 变量值快照 /// public Dictionary VariableValues { get; set; } /// /// 详细计算过程 /// public List EvaluationDetails { get; set; } /// /// 计算时间 /// public DateTime EvaluationTime { get; set; } public ExpressionEvaluationResult() { VariableValues = new Dictionary(); EvaluationDetails = new List(); EvaluationTime = DateTime.Now; } } /// /// 表达式验证结果 /// public class ExpressionValidationResult { /// /// 验证是否通过 /// public bool IsValid { get; set; } /// /// 错误信息列表 /// public List Errors { get; set; } /// /// 警告信息列表 /// public List Warnings { get; set; } /// /// 提取的变量代码 /// public List VariableCodes { get; set; } public ExpressionValidationResult() { Errors = new List(); Warnings = new List(); VariableCodes = new List(); } } }