98 lines
2.5 KiB
C#
98 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(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
|
||
|
||
}
|
||
}
|