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

158 lines
4.3 KiB
C#

using DocumentFormat.OpenXml.Office2013.PowerPoint;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Wordprocessing;
using SciChart.Core.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.Common.Aitex.Core.RT.EMS
{
/// <summary>
/// 帮助Maintainer管理 维护项
/// </summary>
[DataContract]
public class MaintainerItemCollection
{
#region Variables
[DataMember]
Dictionary<string, List<MaintainerItem>> _itemsdic = new();
int _unmaintaincount = 0;
public int Count
{
get
{
int count = 0;
foreach (var item in _itemsdic.Values)
{
count += item.Count;
}
return count;
}
}
public int UnMaintainCount => _unmaintaincount;
#endregion
#region Functions
public void CheckAllItemMaintained(DateTime date)
{
int count = 0;
foreach (var item in _itemsdic.Values)
{
foreach (var i in item)
{
if (!i.CheckMaintained(date) && i.Enable)
{
count++;
}
}
}
_unmaintaincount = count;
}
public bool SetMaintain(string parentname, string name, int itemid, DateTime date)
{
if (_itemsdic.ContainsKey(parentname))
{
int index = _itemsdic[parentname].FindIndex(i => i.Name == name && i.Id == itemid);
if (index == -1)
{
return false;
}
return _itemsdic[parentname][index].Maintained(date);
}
else
{
return false;
}
}
public bool SetMaintainerItemEnable(string parentname, string name, int itemid, bool enable)
{
if (_itemsdic.ContainsKey(parentname))
{
int index = _itemsdic[parentname].FindIndex(i => i.Name == name && i.Id == itemid);
if (index == -1)
{
return false;
}
_itemsdic[parentname][index].Enable = enable;
return true;
}
else
{
return false;
}
}
public void AddMaintainerItem(string parentname, MaintainerItem item)
{
if (_itemsdic.ContainsKey(parentname))
{
_itemsdic[parentname].Add(item);
//顺序不用添加
}
else
{
_itemsdic.Add(parentname, new List<MaintainerItem>() { item });
}
}
public void RemoveMaintainerItem(string parentname, string itemname,int id)
{
if (_itemsdic.ContainsKey(parentname))
{
var item = _itemsdic[parentname].Find(i=>i.Name == itemname && i.Id == id);
if (item != null)
{
_itemsdic[parentname].RemoveIfContains(item);
if (_itemsdic[parentname].Count == 0)
{
_itemsdic.Remove(parentname);
}
}
}
}
public void AddMaintainerItemList(string parentname, List<MaintainerItem> items)
{
if (_itemsdic.ContainsKey(parentname))
{
//判断重复性
items.ForEach(i =>
{
int index = _itemsdic[parentname].FindIndex(j => j.Name == i.Name && j.Id == i.Id);
if (index == -1)
{
_itemsdic[parentname].Add(i);
}
});
}
else
{
_itemsdic.Add(parentname, items);
}
}
public Dictionary<string, List<MaintainerItem>> GetAllItemsDic()
{
return _itemsdic;
}
#endregion
}
}