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