using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.Model.Monitor
|
{
|
/// <summary>
|
/// 枚举累积计算公式参数
|
/// </summary>
|
public class EnumAccumulateCalculationFormulaParas : JsonModel<EnumAccumulateCalculationFormulaParas>
|
{
|
/// <summary>
|
/// 累积类型
|
/// </summary>
|
public enum eAccumulateType
|
{
|
/// <summary>
|
/// 秒
|
/// </summary>
|
Second = 0,
|
|
/// <summary>
|
/// 分
|
/// </summary>
|
Minute = 1,
|
|
/// <summary>
|
/// 时
|
/// </summary>
|
Hour = 2,
|
|
/// <summary>
|
/// 日
|
/// </summary>
|
Day = 3
|
}
|
|
/// <summary>
|
/// 测点标识
|
/// </summary>
|
public long ObjectID { get; set; }
|
|
/// <summary>
|
/// 枚举值列表
|
/// </summary>
|
public List<double> EnumValues { get; set; }
|
|
/// <summary>
|
/// 累积类型
|
/// </summary>
|
public eAccumulateType AccumulateType { get; set; }
|
|
|
/// <summary>
|
/// 计算
|
/// </summary>
|
public double Calculate(double instantValue, double second)
|
{
|
if (this.EnumValues == null || this.EnumValues.Count < 1)
|
return default;
|
if (!this.EnumValues.Contains(instantValue))
|
return default;
|
double result = second;
|
switch (this.AccumulateType)
|
{
|
case eAccumulateType.Second: result = second; break;
|
case eAccumulateType.Minute: result = second / 60; break;
|
case eAccumulateType.Hour: result = second / 3600; break;
|
case eAccumulateType.Day: result = second / 3600 / 24; break;
|
default: break;
|
}
|
return result;
|
}
|
}
|
}
|