Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/Aitex/Core/RT/EMS/MaintainanceItem.cs

150 lines
4.2 KiB
C#
Raw Normal View History

2024-01-29 11:12:21 +08:00
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
{
/// <summary>
/// 维护项相关信息
/// </summary>
[Serializable]
[DataContract]
public class MaintainanceItem:ICloneable
{
#region Constructors
/// <summary>
/// 此构造函数无法添加子项Add函数不可用
/// </summary>
public MaintainanceItem()
{
}
/// <summary>
/// 此构造函数用于构造有子项的维护项
/// </summary>
/// <param name="mname"></param>
/// <param name="description"></param>
/// <param name="enable"></param>
/// <param name="latest"></param>
/// <param name="subitems"></param>
/// <param name="filepath"></param>
public MaintainanceItem(string mname,int id,int index,string description,string defaultrecord,bool enable,DateTime latest,List<MaintainanceItem> 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<MaintainanceItem> _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<MaintainanceItem> GetAllMaintainanceItems()
{
return _subitems == null ? new List<MaintainanceItem>() : _subitems;
}
/// <summary>
/// 更新项目及子项目的维护时间
/// </summary>
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<MaintainanceItem>();
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
}
}