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