using Aitex.Core.Util; using DocumentFormat.OpenXml.Bibliography; using DocumentFormat.OpenXml.Drawing.Diagrams; using DocumentFormat.OpenXml.Wordprocessing; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices.ComTypes; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.Threading.Tasks; namespace MECF.Framework.Common.Aitex.Core.RT.EMS { /// /// 维护项相关信息 /// [Serializable] [DataContract] public class MaintainanceItem:ICloneable { #region Constructors /// /// 此构造函数无法添加子项,Add函数不可用 /// public MaintainanceItem() { } /// /// 此构造函数用于构造有子项的维护项 /// /// /// /// /// /// /// public MaintainanceItem(string mname,int id,int index,string description,string defaultrecord,bool enable,DateTime latest,List subitems,string filepath = "") { Name = mname; Id = id; Index = index; Description = description; DefaultRecord = defaultrecord; _maintaineddate = latest; _subitems = subitems; Enable = enable; FilePath = filepath; } #endregion #region Properties DateTime _maintaineddate; bool _ismaintained = false; [DataMember] List _subitems = null; [DataMember] public string Name { get; set; } [DataMember] public int Id { get; set; } [DataMember] public int Index { get; set; } [DataMember] public string Description { get; set; } [DataMember] public string DefaultRecord { get; set; } [DataMember] public string FilePath { get; set; } [DataMember] public bool Enable { get; set; } [Subscription("IsMaintained")] public bool IsMaintained => _ismaintained; [Subscription("MaintainedDate")] public DateTime MaintainedDate => _maintaineddate; #endregion #region Methods public List GetAllMaintainanceItems() { return _subitems == null ? new List() : _subitems; } /// /// 更新项目及子项目的维护时间 /// public bool Maintained(DateTime date,bool isMaintainSubItem = true) { if (Enable) { _maintaineddate = date; if (_subitems!=null&&isMaintainSubItem) { _subitems.ForEach(i => { if (i.Enable) { _maintaineddate = date; } }); } return true; } return false; } public bool CheckMaintained(DateTime start) { _ismaintained = _maintaineddate.CompareTo(start) > 0;//晚于起始时间即为已保养 return IsMaintained; } public object Clone() { if (_subitems == null) { return new MaintainanceItem(Name, Id, Index, Description,DefaultRecord ,Enable, MaintainedDate, null, FilePath); } var clonelist = new List(); foreach (var item in GetAllMaintainanceItems()) { clonelist.Add((MaintainanceItem)item.Clone()); } return new MaintainanceItem(Name, Id, Index, Description, DefaultRecord, Enable, MaintainedDate, clonelist, FilePath); } public void Add(MaintainanceItem item) { _subitems?.Add(item); } #endregion } }