parent
0c558ac336
commit
1c2b644a40
|
@ -0,0 +1,33 @@
|
|||
// /************************************************************************
|
||||
// * @file ExchangeDataBase.cs
|
||||
// * @author Su Liang
|
||||
// * @date 2023/02/26
|
||||
// *
|
||||
// * @copyright © Sicentury Inc.
|
||||
// *
|
||||
// * @brief
|
||||
// *
|
||||
// * @details
|
||||
// *
|
||||
// *
|
||||
// * *****************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace Aitex.Core.Common.DeviceData.IoDevice.Base
|
||||
{
|
||||
[Serializable]
|
||||
[DataContract]
|
||||
public class DeviceDataBase : XDataBase
|
||||
{
|
||||
[DataMember]
|
||||
public string Status { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsBusy { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsAlarm { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,58 +1,35 @@
|
|||
// /************************************************************************
|
||||
// * @file ExchangeDataBase.cs
|
||||
// * @author Su Liang
|
||||
// * @date 2023/02/26
|
||||
// *
|
||||
// * @copyright © Sicentury Inc.
|
||||
// *
|
||||
// * @brief
|
||||
// *
|
||||
// * @details
|
||||
// *
|
||||
// *
|
||||
// * *****************************************************************************/
|
||||
|
||||
using MECF.Framework.Common.CommonData;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
using MECF.Framework.Common.CommonData;
|
||||
|
||||
namespace Aitex.Core.Common.DeviceData.IoDevice
|
||||
namespace Aitex.Core.Common.DeviceData.IoDevice.Base
|
||||
{
|
||||
[Serializable]
|
||||
[DataContract]
|
||||
public class DeviceDataBase : NotifiableItem, IDeviceData
|
||||
public class XDataBase : NotifiableItem, IDeviceData
|
||||
{
|
||||
[DataMember]
|
||||
public string Status { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsBusy { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsAlarm { get; set; }
|
||||
|
||||
public void Update(IDeviceData data)
|
||||
{
|
||||
if (data == null)
|
||||
return;
|
||||
|
||||
|
||||
var targetProps = GetType().GetProperties()
|
||||
.Where(prop => Attribute.IsDefined((MemberInfo)prop, typeof(DataMemberAttribute)));
|
||||
|
||||
|
||||
var sourceProps = data.GetType().GetProperties()
|
||||
.Where(prop => Attribute.IsDefined((MemberInfo)prop, typeof(DataMemberAttribute)));
|
||||
|
||||
|
||||
Parallel.ForEach(targetProps, pi =>
|
||||
{
|
||||
var srcPi = sourceProps.FirstOrDefault(x => x.Name == pi.Name);
|
||||
if(srcPi == null)
|
||||
if (srcPi == null)
|
||||
return;
|
||||
|
||||
|
||||
pi.SetValue(this, srcPi.GetValue(data));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Aitex.Core.Common.DeviceData.IoDevice.Base;
|
||||
|
||||
namespace Aitex.Core.Common.DeviceData.IoDevice
|
||||
{
|
||||
public class AITProcessRunData : XDataBase
|
||||
{
|
||||
[DataMember]
|
||||
public Guid Uid { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Index { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Module { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string WaferId { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string RecipeName { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? ProcessBegin { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? ProcessEnd { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double H2 { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double Ar { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double PN2 { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double HCL { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double SiH4 { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double C2H4 { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double TCS { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double TMA { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double HeaterPowerConsumption { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Aitex.Core.Common.DeviceData.IoDevice.Base;
|
||||
|
||||
namespace Aitex.Core.Common.DeviceData.IoDevice
|
||||
{
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace MECF.Framework.Common.Aitex.Core.Common.DeviceData.IoDevice
|
||||
{
|
||||
|
|
|
@ -240,9 +240,11 @@
|
|||
<Compile Include="Aitex\Core\Common\DeviceData\FlowMeterAlarmItem.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\GasFlowSum.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\IDeviceData.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\ExchangeDataBase.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\AITProcessRunData.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\Base\DeviceDataBase.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\IoPsuData.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\IoDevice\MfcTestData.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\Base\XDataBase.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\LidState.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\MfcCtrlMode.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\MfcRorData.cs" />
|
||||
|
|
|
@ -133,6 +133,7 @@ namespace MECF.Framework.Common.DataCenter
|
|||
[ServiceKnownType(typeof(ManualTransferTask))]
|
||||
[ServiceKnownType(typeof(ManualTransferTask[]))]
|
||||
[ServiceKnownType(typeof(IoPsuData))]
|
||||
[ServiceKnownType(typeof(List<AITProcessRunData>))]
|
||||
[ServiceKnownType(typeof(STBlinkPattern))]
|
||||
[ServiceKnownType(typeof(MfcRorData))]
|
||||
[ServiceKnownType(typeof(List<MfcRorData>))]
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
#define _FAKE_DATA
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Windows.Data;
|
||||
using Aitex.Core.Common.DeviceData.IoDevice;
|
||||
using Aitex.Core.RT.DataCenter;
|
||||
using Aitex.Core.RT.Log;
|
||||
using MECF.Framework.Common.DataCenter;
|
||||
using Sicentury.Core.Collections;
|
||||
|
@ -50,6 +53,8 @@ namespace MECF.Framework.RT.Core.Managers.PDS
|
|||
// 加载历史记录。
|
||||
ReadLastFlowCounts();
|
||||
|
||||
DATA.Subscribe($"{Module}.ProcessDataStat.RealtimeList", ()=> ProcessRunDataList);
|
||||
|
||||
#if FAKE_DATA
|
||||
|
||||
_randomFlow = new Random();
|
||||
|
@ -116,6 +121,40 @@ namespace MECF.Framework.RT.Core.Managers.PDS
|
|||
}
|
||||
}
|
||||
|
||||
public List<AITProcessRunData> ProcessRunDataList
|
||||
{
|
||||
get
|
||||
{
|
||||
var list = new List<AITProcessRunData>();
|
||||
lock (_syncObject)
|
||||
{
|
||||
foreach (var item in GasFlowCountCollection)
|
||||
{
|
||||
list.Add(new AITProcessRunData
|
||||
{
|
||||
Uid = item.StatisticsUid,
|
||||
Module = item.Module,
|
||||
RecipeName = item.RecipeName,
|
||||
WaferId = item.WaferId,
|
||||
ProcessBegin = item.StatisticsStart,
|
||||
ProcessEnd = item.StatisticsEnd,
|
||||
H2 = item.H2.Total,
|
||||
Ar = item.Ar.Total,
|
||||
PN2 = item.PN2.Total,
|
||||
HCL = item.HCL.Total,
|
||||
SiH4 = item.SiH4.Total,
|
||||
C2H4 = item.C2H4.Total,
|
||||
TCS = item.TCS.Total,
|
||||
TMA = item.TMA.Total,
|
||||
HeaterPowerConsumption = item.HeaterPowerConsumption.Total
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
|
Loading…
Reference in New Issue