|
@@ -33,34 +33,91 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|
|
_mapWaferDataModule[moduleInfo.Value.WaferDataName] = moduleInfo.Value;
|
|
|
}
|
|
|
}
|
|
|
- EventClient.Instance.OnUpdateWaferEvent += OnTimer;
|
|
|
- OnTimer(_lstWaferDataName);//刚开始全部获取一遍
|
|
|
- //_monitorThread = new PeriodicJob(500, OnTimer, "Monitor Module Data Thread", true);
|
|
|
+ var enableUpdateWafersNotify = (bool)QueryDataClient.Instance.Service.GetConfig("System.EnableUpdateWafersNotify");
|
|
|
+ if (enableUpdateWafersNotify)
|
|
|
+ {
|
|
|
+ EventClient.Instance.OnUpdateWaferEvent += OnTimer;
|
|
|
+ OnTimer(_lstWaferDataName);//刚开始全部获取一遍
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _monitorThread = new PeriodicJob(500, OnTimer, "Monitor Module Data Thread", true);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+ private bool OnTimer()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Dictionary<string, object> data = new Dictionary<string, object>();
|
|
|
+ data = QueryDataClient.Instance.Service.PollData(_lstWaferDataName);
|
|
|
+ if (data != null && Application.Current != null)
|
|
|
+ {
|
|
|
+ Application.Current.Dispatcher.Invoke(new Action(() =>
|
|
|
+ {
|
|
|
+ foreach (var waferData in data)
|
|
|
+ {
|
|
|
+ if (!_mapWaferDataModule.ContainsKey(waferData.Key))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ RTDefine.WaferInfo[] wafers = waferData.Value as RTDefine.WaferInfo[];
|
|
|
+ if (wafers == null)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ ModuleInfo info = _mapWaferDataModule[waferData.Key];
|
|
|
+ if (info.WaferManager.Wafers.Count == 0)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < wafers.Length; i++)
|
|
|
+ {
|
|
|
+ info.WaferManager.Wafers.Add(WaferInfoConverter(wafers[i], info.WaferModuleID, i));
|
|
|
+ }
|
|
|
|
|
|
+ if (info.IsWaferReverseDisplay)
|
|
|
+ {
|
|
|
+ info.WaferManager.Wafers = new ObservableCollection<WaferInfo>(info.WaferManager.Wafers.Reverse());
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (wafers.Length == info.WaferManager.Wafers.Count)
|
|
|
+ {
|
|
|
+ int index;
|
|
|
+ for (int i = 0; i < wafers.Length; i++)
|
|
|
+ {
|
|
|
+ if (info.IsWaferReverseDisplay)
|
|
|
+ index = wafers.Length - i - 1;
|
|
|
+ else
|
|
|
+ index = i;
|
|
|
+
|
|
|
+ var convertedWafer = WaferInfoConverter(wafers[index], info.WaferModuleID, index);
|
|
|
+ info.WaferManager.Wafers[i].WaferStatus = convertedWafer.WaferStatus;
|
|
|
+ info.WaferManager.Wafers[i].WaferID = convertedWafer.WaferID;
|
|
|
+ info.WaferManager.Wafers[i].SourceName = convertedWafer.SourceName;
|
|
|
+ info.WaferManager.Wafers[i].WaferType = convertedWafer.WaferType;
|
|
|
+ info.WaferManager.Wafers[i].UseCount = convertedWafer.UseCount;
|
|
|
+ info.WaferManager.Wafers[i].UseTime = convertedWafer.UseTime;
|
|
|
+ info.WaferManager.Wafers[i].UseThick = convertedWafer.UseThick;
|
|
|
+ info.WaferManager.Wafers[i].Thick = convertedWafer.Thick;
|
|
|
+ info.WaferManager.Wafers[i].LotId = convertedWafer.LotId;
|
|
|
+ info.WaferManager.Wafers[i].ProcessJobID = convertedWafer.ProcessJobID;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ LOG.Error(ex.Message);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
private bool? OnTimer(IEnumerable<string> modules)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- //Dictionary<string, object> data = new Dictionary<string, object>();
|
|
|
- //var enableUpdateWafersNotify = (bool)QueryDataClient.Instance.Service.GetConfig("System.EnableUpdateWafersNotify");
|
|
|
- //if (enableUpdateWafersNotify)
|
|
|
- //{
|
|
|
- // var changeModule = QueryDataClient.Instance.Service.GetData("System.ChangeWafers");
|
|
|
- // if (changeModule is Dictionary<string, bool> module && module?.Count > 0)
|
|
|
- // {
|
|
|
- // var changedModule = module.Where(r => r.Value);
|
|
|
- // if (!changedModule.Any()) return true;
|
|
|
- // InvokeClient.Instance.Service.DoOperation("System.UpdateWafersNotify", changeModule);
|
|
|
- // data = QueryDataClient.Instance.Service.PollData(changedModule.Select(r => $"{r.Key}.ModuleWaferList"));
|
|
|
-
|
|
|
- // }
|
|
|
-
|
|
|
- //}
|
|
|
- //else
|
|
|
- //{
|
|
|
- // data = QueryDataClient.Instance.Service.PollData(_lstWaferDataName);
|
|
|
- //}
|
|
|
if (modules?.Any() == true)
|
|
|
{
|
|
|
var changedModule = modules.Where(r => _mapWaferDataModule.ContainsKey(r + ".ModuleWaferList"));
|