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

150 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}