Sic.Framework/MECF.Framework.UI.Client/TrayThickness/TrayCoatingThickness.cs

125 lines
3.3 KiB
C#
Raw Normal View History

2023-05-22 18:32:18 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
namespace MECF.Framework.UI.Client.TrayThickness
{
public class TrayCoatingThickness : ICloneable
{
private readonly List<CoatingData> _dataList;
2023-05-22 18:32:18 +08:00
#region Constructors
public TrayCoatingThickness()
{
Tray = new CoatingData();
TrayInner = new CoatingData();
RingInner = new CoatingData();
RingOuter = new CoatingData();
_dataList = new List<CoatingData>(
new []
{
Tray, TrayInner, RingInner, RingOuter
});
2023-05-22 18:32:18 +08:00
}
public TrayCoatingThickness(string trayGuId)
{
TrayGuid = trayGuId; //Tary的默认数据库ID为自身编号1~8
2023-05-22 18:32:18 +08:00
Tray = new CoatingData($"石墨托盘", trayGuId);
TrayInner = new CoatingData($"内部托架", trayGuId);
RingInner = new CoatingData($"中间托架", trayGuId);
RingOuter = new CoatingData($"外部托架", trayGuId);
_dataList = new List<CoatingData>(
new[]
{
Tray, TrayInner, RingInner, RingOuter
});
2023-05-22 18:32:18 +08:00
}
//public TrayCoatingThickness(int slot) : this(slot.ToString())
//{
//}
#endregion
#region Properties
public string TrayGuid { get; set; }
/// <summary>
/// Tray厚度对象
/// </summary>
public CoatingData Tray { get; set; }
/// <summary>
/// Tray内环厚度对象
/// </summary>
public CoatingData TrayInner { get; set; }
/// <summary>
/// Ring内环厚度对象
/// </summary>
public CoatingData RingInner { get; set; }
/// <summary>
/// Ring外环厚度对象
/// </summary>
public CoatingData RingOuter { get; set; }
#endregion
#region Methods
public bool Validate(out string reason)
{
if (!Tray.Validate(out reason))
return false;
if(!TrayInner.Validate(out reason))
return false;
if(!RingInner.Validate(out reason))
return false;
if (!RingOuter.Validate(out reason))
return false;
//每个环Number数据是否存在相同Linq语句检查
if (_dataList.GroupBy(i => i.SerialNumber).Any(g => g.Count() > 1))
{
reason = $"some of components have same SN, please check.";
return false;
}
return true;
}
2023-05-22 18:32:18 +08:00
public void Update(TrayCoatingThickness newData)
{
Tray.Update(newData.Tray);
TrayInner.Update(newData.TrayInner);
RingInner.Update(newData.RingInner);
RingOuter.Update(newData.RingOuter);
}
public object Clone()
{
var newObj = new TrayCoatingThickness(TrayGuid);
newObj.Tray = (CoatingData)Tray.Clone();
newObj.TrayInner = (CoatingData)TrayInner.Clone();
newObj.RingInner = (CoatingData)RingInner.Clone();
newObj.RingOuter = (CoatingData)RingOuter.Clone();
return newObj;
}
#endregion
}
}