using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MECF.Framework.UI.Client.TrayThickness { public class PMCoatingThickness : ICloneable { private readonly List _dataList; #region Constructors public PMCoatingThickness() { MinorCycle = new CoatingData(); MajorCycle = new CoatingData(); _dataList = new List( new[] { MinorCycle, MajorCycle }); } public PMCoatingThickness(string pmGuId) { PMGuid = pmGuId;//PM的默认数据库ID为MP MinorCycle = new CoatingData($"{pmGuId}小周期", pmGuId); MajorCycle = new CoatingData($"{pmGuId}大周期", pmGuId); MinorCycle.PmOwned = pmGuId; MajorCycle.PmOwned = pmGuId; _dataList = new List( new[] { MinorCycle, MajorCycle }); } #endregion #region Properties public string PMGuid { get; set; } /// /// PM小周期厚度对象 /// public CoatingData MinorCycle { get; set; } /// /// PM大周期厚度对象 /// public CoatingData MajorCycle { get; set; } #endregion #region Methods public bool Validate(out string reason) { if (!MinorCycle.Validate(out reason)) return false; if (!MajorCycle.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(PMCoatingThickness newData) { MinorCycle.Update(newData.MinorCycle); MajorCycle.Update(newData.MajorCycle); } public object Clone() { var newObj = new PMCoatingThickness(PMGuid); newObj.MinorCycle = (CoatingData)MinorCycle.Clone(); newObj.MajorCycle = (CoatingData)MajorCycle.Clone(); return newObj; } #endregion } }