169 lines
6.9 KiB
C#
169 lines
6.9 KiB
C#
using Aitex.Core.RT.DataCenter;
|
||
using Aitex.Core.RT.OperationCenter;
|
||
using Aitex.Core.RT.SCCore;
|
||
using Aitex.Core.Util;
|
||
using Newtonsoft.Json;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Dynamic;
|
||
using System.Windows.Threading;
|
||
using static System.Net.Mime.MediaTypeNames;
|
||
|
||
namespace MECF.Framework.UI.Core.TrayCoating
|
||
{
|
||
public class CoatingManager : Singleton<CoatingManager>
|
||
{
|
||
|
||
private static int MAX_TRAY_COUNT = 8;
|
||
|
||
public CoatingManager()
|
||
{
|
||
MAX_TRAY_COUNT = SC.GetValue<int>($"TM.TrayNum");
|
||
ThicknessCollection = new List<TrayCoatingThickness>();
|
||
pm_TrayCoatingThickness = new TrayCoatingThickness(true);
|
||
for (int i = 0; i < MAX_TRAY_COUNT; i++)
|
||
{
|
||
ThicknessCollection.Add(new TrayCoatingThickness((i + 1).ToString()));
|
||
}
|
||
QueryUpdate();
|
||
|
||
}
|
||
static List<CoatingData> coatingData = new List<CoatingData>();
|
||
public static TrayCoatingThickness pm_TrayCoatingThickness { get; set; }
|
||
public static List<TrayCoatingThickness> ThicknessCollection { get; set; }
|
||
private static CoatingSqlHelp coatingSqlHelp = new CoatingSqlHelp();
|
||
public string ThicknessCollectionData { get; set; }
|
||
static Action action;
|
||
public void Initialize()
|
||
{
|
||
InitData();
|
||
}
|
||
|
||
private void InitData()
|
||
{
|
||
//action += ShowUI;
|
||
DATA.Subscribe("TrayCoatingData", () => GetCoatingDataJsonString());
|
||
OP.Subscribe("CoatingManager.QueryUpdate", (string cmd, object[] args) => QueryUpdate());
|
||
OP.Subscribe("CoatingManager.Clear", (string cmd, object[] args) => Clear(args));
|
||
OP.Subscribe("CoatingManager.Set", (string cmd, object[] args) => Set(args));
|
||
}
|
||
|
||
private static readonly object locker=new object();
|
||
//打包数据源,界面更新使用
|
||
private string GetCoatingDataJsonString()
|
||
{
|
||
lock(locker)
|
||
{
|
||
return JsonConvert.SerializeObject(coatingData);
|
||
}
|
||
|
||
}
|
||
public static bool QueryUpdate()//从数据库整体更新所有数据,在初始化和数据操作后更新
|
||
{
|
||
coatingData.Clear();
|
||
TrayCoatingThickness _trayCoatingThickness = coatingSqlHelp.GetCoatingData("PM");
|
||
CoatingDataUpData(pm_TrayCoatingThickness, _trayCoatingThickness);
|
||
for (int i = 0; i < MAX_TRAY_COUNT; i++)
|
||
{
|
||
TrayCoatingThickness trayCoatingThickness = coatingSqlHelp.GetCoatingData((i + 1).ToString());
|
||
CoatingDataUpData(ThicknessCollection[i], trayCoatingThickness);
|
||
}
|
||
return true;
|
||
}
|
||
private bool Clear(object[] args)//设置当前生长厚度为0,操作数据为一行
|
||
{
|
||
coatingSqlHelp.Cmd_Clear_Coating(args[0].ToString(),out _);
|
||
QueryUpdate();
|
||
return true;
|
||
}
|
||
private bool Set(object[] args)//设置一行数据
|
||
{
|
||
CoatingData coatingData = JsonConvert.DeserializeObject<CoatingData>(args[0].ToString());
|
||
coatingSqlHelp.Cmd_Set_update(coatingData, CmdFactor(coatingData), out _);
|
||
return true;
|
||
}
|
||
public static bool Grow(object[] args)//Process完成后更新生长厚度,操作对象Tray PM
|
||
{
|
||
coatingSqlHelp.GrowTray(args[0].ToString(),Convert.ToDouble(args[1]), Convert.ToDouble(args[2]));
|
||
coatingSqlHelp.GrowPM(args[3].ToString(), Convert.ToDouble(args[1]), Convert.ToDouble(args[2]));
|
||
QueryUpdate();
|
||
//InspectClean(args[0].ToString());
|
||
//InspectClean(args[3].ToString());
|
||
return true;
|
||
}
|
||
|
||
private static bool InspectClean(string id) //检查当前厚度是否大于设定厚度,操作对象Tray PM
|
||
{
|
||
if (id.Contains("PM"))
|
||
id = "PM";
|
||
List<string> growList = coatingSqlHelp.MustCleanTray(id);
|
||
for (int i = 0; i < growList.Count/2; i++)
|
||
{
|
||
if (Convert.ToDouble( growList[i*2]) >= Convert.ToDouble(growList[i*2+1]))//当前值大于设定值,传入参数最好加入提示
|
||
{
|
||
string str = "";
|
||
if (id=="PM")
|
||
str = "PM腔体";
|
||
else
|
||
str = $"Tray盘 {id}";
|
||
str += " --> Coating 当前值大于设定值";
|
||
Dispatcher.CurrentDispatcher.Invoke(action);
|
||
return true;
|
||
}
|
||
}
|
||
|
||
|
||
return true;
|
||
}
|
||
|
||
public void ShowUI()
|
||
{
|
||
//Dispatcher.Invoke(new Action(() =>
|
||
//{
|
||
// InspectCleanView inspectCleanView = new InspectCleanView();
|
||
// inspectCleanView.SetShow("123123");
|
||
// inspectCleanView.Show();
|
||
|
||
//}));
|
||
|
||
|
||
//InspectCleanView inspectCleanView = new InspectCleanView();
|
||
//inspectCleanView.SetShow("123123");
|
||
//inspectCleanView.Show();
|
||
//var wm = new WindowManager();
|
||
//var model = new InspectCleanViewModel();
|
||
//dynamic settings = new ExpandoObject();
|
||
//settings.WindowStartupLocation = WindowStartupLocation.CenterOwner;
|
||
//wm.ShowWindow(model, null, settings);
|
||
|
||
}
|
||
|
||
//Tray对象拆分成单个对象数据,方便UI层绑定使用
|
||
private static void CoatingDataUpData(TrayCoatingThickness trayCoatingThickness, TrayCoatingThickness trayCoatingThicknessFromSql)
|
||
{
|
||
trayCoatingThickness.Tray.Update(trayCoatingThicknessFromSql.Tray);
|
||
trayCoatingThickness.TrayInner.Update(trayCoatingThicknessFromSql.TrayInner);
|
||
trayCoatingThickness.RingInner.Update(trayCoatingThicknessFromSql.RingInner);
|
||
trayCoatingThickness.RingOuter.Update(trayCoatingThicknessFromSql.RingOuter);
|
||
|
||
coatingData.Add(trayCoatingThickness.Tray);
|
||
coatingData.Add(trayCoatingThickness.TrayInner);
|
||
coatingData.Add(trayCoatingThickness.RingInner);
|
||
coatingData.Add(trayCoatingThickness.RingOuter);
|
||
}
|
||
|
||
//传入用户设置的Label名称,返回数据库属性名称,
|
||
private string CmdFactor(CoatingData coatingData)
|
||
{
|
||
if (coatingData.Label.Contains("Tray Inner") || coatingData.Label.Contains("PM1 Major cycle"))
|
||
return "tray_inner_number";
|
||
else if (coatingData.Label.Contains("Ring Inner") || coatingData.Label.Contains("PM2 Minor Cycle"))
|
||
return "ring_inner_number";
|
||
else if (coatingData.Label.Contains("Ring Outer") || coatingData.Label.Contains("PM2 Major cycle"))
|
||
return "ring_outer_number";
|
||
else return "tray_number";
|
||
}
|
||
|
||
}
|
||
}
|