150 lines
4.2 KiB
C#
150 lines
4.2 KiB
C#
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
|
||
|
||
|
||
}
|
||
}
|