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();
}
}
}