|
@@ -7,6 +7,7 @@ using System.Windows;
|
|
|
using System.Windows.Threading;
|
|
|
using Aitex.Core.RT.Log;
|
|
|
using Aitex.Core.Util;
|
|
|
+using Aitex.Core.WCF;
|
|
|
using DocumentFormat.OpenXml.Drawing.Charts;
|
|
|
using MECF.Framework.Common.DataCenter;
|
|
|
using MECF.Framework.Common.OperationCenter;
|
|
@@ -28,98 +29,106 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(moduleInfo.Value.WaferDataName))
|
|
|
{
|
|
|
- _lstWaferDataName.Add(moduleInfo.Value.WaferDataName);
|
|
|
+ _lstWaferDataName.Add(moduleInfo.Key);
|
|
|
_mapWaferDataModule[moduleInfo.Value.WaferDataName] = moduleInfo.Value;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- _monitorThread = new PeriodicJob(500, OnTimer, "Monitor Module Data Thread", true);
|
|
|
+ EventClient.Instance.OnUpdateWaferEvent += OnTimer;
|
|
|
+ OnTimer(_lstWaferDataName);//刚开始全部获取一遍
|
|
|
+ //_monitorThread = new PeriodicJob(500, OnTimer, "Monitor Module Data Thread", true);
|
|
|
}
|
|
|
|
|
|
- private bool OnTimer()
|
|
|
+ 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)
|
|
|
+ //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 changeModule = QueryDataClient.Instance.Service.GetData("System.ChangeWafers");
|
|
|
- if (changeModule is Dictionary<string, bool> module && module?.Count > 0)
|
|
|
+ var changedModule = modules.Where(r => _mapWaferDataModule.ContainsKey(r + ".ModuleWaferList"));
|
|
|
+ if (!changedModule.Any()) return null;
|
|
|
+ Dictionary<string, object> data = QueryDataClient.Instance.Service.PollData(changedModule.Select(r => $"{r}.ModuleWaferList"));
|
|
|
+ if (data != null && Application.Current != null)
|
|
|
{
|
|
|
- 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 (data != null && Application.Current != null)
|
|
|
- {
|
|
|
- Application.Current.Dispatcher.Invoke(new Action(() =>
|
|
|
- {
|
|
|
- foreach (var waferData in data)
|
|
|
+ Application.Current.Dispatcher.Invoke(new Action(() =>
|
|
|
{
|
|
|
- if (!_mapWaferDataModule.ContainsKey(waferData.Key))
|
|
|
- continue;
|
|
|
+ foreach (var waferData in data)
|
|
|
+ {
|
|
|
+ if (!_mapWaferDataModule.ContainsKey(waferData.Key))
|
|
|
+ continue;
|
|
|
|
|
|
- RTDefine.WaferInfo[] wafers = waferData.Value as RTDefine.WaferInfo[];
|
|
|
- if (wafers == null)
|
|
|
- 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++)
|
|
|
+ ModuleInfo info = _mapWaferDataModule[waferData.Key];
|
|
|
+ if (info.WaferManager.Wafers.Count == 0)
|
|
|
{
|
|
|
- info.WaferManager.Wafers.Add(WaferInfoConverter(wafers[i], info.WaferModuleID, i));
|
|
|
- }
|
|
|
+ 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());
|
|
|
+ if (info.IsWaferReverseDisplay)
|
|
|
+ {
|
|
|
+ info.WaferManager.Wafers = new ObservableCollection<WaferInfo>(info.WaferManager.Wafers.Reverse());
|
|
|
+ }
|
|
|
+ continue;
|
|
|
}
|
|
|
- continue;
|
|
|
- }
|
|
|
|
|
|
- if (wafers.Length == info.WaferManager.Wafers.Count)
|
|
|
- {
|
|
|
- int index;
|
|
|
- for (int i = 0; i < wafers.Length; i++)
|
|
|
+ if (wafers.Length == info.WaferManager.Wafers.Count)
|
|
|
{
|
|
|
- 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;
|
|
|
+ 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;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- }));
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ return true;
|
|
|
}
|
|
|
+ return null;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
LOG.Error(ex.Message);
|
|
|
+ return false;
|
|
|
}
|
|
|
-
|
|
|
- return true;
|
|
|
}
|
|
|
|
|
|
|