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

125 lines
3.3 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 System;
using System.Collections.Generic;
using System.Linq;
namespace MECF.Framework.UI.Client.TrayThickness
{
public class TrayCoatingThickness : ICloneable
{
private readonly List<CoatingData> _dataList;
#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
});
}
public TrayCoatingThickness(string trayGuId)
{
TrayGuid = trayGuId; //Tary的默认数据库ID为自身编号1~8
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
});
}
//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;
}
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
}
}