using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.Model.Monitor
|
{
|
/// <summary>
|
/// 系数转换
|
/// </summary>
|
public class RatioConvert : JsonModel<RatioConvert>, IRatioConvert
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public RatioConvert() { }
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="convertType"></param>
|
/// <param name="convertParas"></param>
|
public RatioConvert(eRatioConvertType convertType, IRatioConvert convertParas)
|
{
|
this.ConvertType = convertType;
|
this.ConvertParas = convertParas;
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="rhs"></param>
|
public RatioConvert(RatioConvert rhs)
|
{
|
this.ConvertType = rhs.ConvertType;
|
this.ConvertParas = rhs.ConvertParas;
|
}
|
|
/// <summary>
|
/// 转换类型
|
/// </summary>
|
public eRatioConvertType ConvertType { get; set; }
|
|
/// <summary>
|
/// 转换参数
|
/// </summary>
|
public IRatioConvert ConvertParas { get; set; }
|
|
/// <summary>
|
/// 转换
|
/// </summary>
|
public double Convert(double value, out bool succeed)
|
{
|
return ConvertParas.Convert(value, out succeed);
|
}
|
|
/// <summary>
|
/// 转换
|
/// </summary>
|
public double Convert(double value)
|
{
|
return ConvertParas.Convert(value);
|
}
|
|
/// <summary>
|
/// 获取表达式
|
/// </summary>
|
public string GetExpression()
|
{
|
return ConvertParas.GetExpression();
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="json"></param>
|
/// <returns></returns>
|
public new static RatioConvert ToModel(string json)
|
{
|
if (string.IsNullOrEmpty(json))
|
return default;
|
try
|
{
|
var dict = JsonHelper.Json2Object<Dictionary<string, object>>(json);
|
return ToModel(dict);
|
}
|
catch
|
{
|
return default;
|
}
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="dict"></param>
|
/// <returns></returns>
|
public static RatioConvert ToModel(Dictionary<string, object> dict)
|
{
|
if (dict == null || dict.Count < 1)
|
return default;
|
try
|
{
|
var convertType = (eRatioConvertType)System.Convert.ToInt32(dict["ConvertType"]);
|
IRatioConvert convertParas = null;
|
switch (convertType)
|
{
|
case eRatioConvertType.Unit:
|
convertParas = JsonHelper.Json2Object<UnitRatioConvert>(JsonHelper.Object2Json(dict["ConvertParas"]));
|
break;
|
case eRatioConvertType.Once:
|
convertParas = JsonHelper.Json2Object<OnceRatioConvert>(JsonHelper.Object2Json(dict["ConvertParas"]));
|
break;
|
case eRatioConvertType.Twice:
|
convertParas = JsonHelper.Json2Object<TwiceRatioConvert>(JsonHelper.Object2Json(dict["ConvertParas"]));
|
break;
|
default: break;
|
}
|
return new RatioConvert(convertType, convertParas);
|
}
|
catch
|
{
|
return default;
|
}
|
}
|
|
|
}
|
}
|