using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Event; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Runtime.Serialization; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; namespace MECF.Framework.Common.Aitex.Core.RT.EMS { public class TimeMaintainer : Maintainer { #region Variables #endregion #region Properties #endregion #region Constructors public TimeMaintainer() { } public TimeMaintainer(MaintainerItemCollection item, string name, string module, int index, string description, bool enabled, DateTime startdate, double threshold, TimeUnit timedisplayunit) :base(item ,name, module, index, description, enabled, startdate, threshold, timedisplayunit) { _threshold = DateTimeHelper.Transform2Seconds(threshold,timedisplayunit); } public TimeMaintainer(MaintainerItemCollection item, MaintainerInfo info, DateTime startdate, double threshold) : base(item, info, startdate, threshold) { } #endregion #region Methods /// /// 计算剩余时间和超时时间,不同类算法不同,需要重载 /// public virtual void Monitor() { base.Monitor(); UpdateInfo(); } public override void UpdateInfo() { _info.Value = DateTimeHelper.SecondsTransform(_value, _info.TimeDisplayUnit); _info.Threshold = DateTimeHelper.SecondsTransform(_threshold, _info.TimeDisplayUnit); _info.ValueExceeded = DateTimeHelper.SecondsTransform(_valueExceeded, _info.TimeDisplayUnit); _info.ValueElapsed = DateTimeHelper.SecondsTransform(_valueElapsed, _info.TimeDisplayUnit); base.UpdateInfo(); } public virtual bool Reset() { UpdateInfo(); return base.Reset(); } /// /// 阈值设置 /// /// /// /// public override bool SetThreshold(double threshold, params object[] args) { if (!base.SetThreshold(threshold)) { return false; } if (args.Length != 1) { return false; } if (args[0] is TimeUnit t) { _threshold = DateTimeHelper.Transform2Seconds(threshold, t); _info.TimeDisplayUnit = t; return true; } return false; } /// /// 设置开始时间 /// /// /// public override bool SetStartDate(DateTime t) { if (!base.SetStartDate(t)) { return false; } _startDate = t; return true; } #endregion } }