99 lines
2.5 KiB
C#
99 lines
2.5 KiB
C#
|
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<CoatingData> _dataList;
|
|||
|
|
|||
|
#region Constructors
|
|||
|
|
|||
|
public PMCoatingThickness()
|
|||
|
{
|
|||
|
MinorCycle = new CoatingData();
|
|||
|
MajorCycle = new CoatingData();
|
|||
|
_dataList = new List<CoatingData>(
|
|||
|
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<CoatingData>(
|
|||
|
new[]
|
|||
|
{
|
|||
|
MinorCycle, MajorCycle
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Properties
|
|||
|
|
|||
|
public string PMGuid { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// PM小周期厚度对象
|
|||
|
/// </summary>
|
|||
|
public CoatingData MinorCycle { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// PM大周期厚度对象
|
|||
|
/// </summary>
|
|||
|
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(TrayCoatingThickness newData)
|
|||
|
{
|
|||
|
MinorCycle.Update(newData.Tray);
|
|||
|
MajorCycle.Update(newData.TrayInner);
|
|||
|
}
|
|||
|
|
|||
|
public object Clone()
|
|||
|
{
|
|||
|
var newObj = new TrayCoatingThickness(PMGuid);
|
|||
|
newObj.Tray = (CoatingData)MinorCycle.Clone();
|
|||
|
newObj.TrayInner = (CoatingData)MajorCycle.Clone();
|
|||
|
return newObj;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
}
|