using Aitex.Core.RT.DBCore; using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; using DocumentFormat.OpenXml.Drawing.Charts; using DocumentFormat.OpenXml.Math; using DocumentFormat.OpenXml.Office.Word; using DocumentFormat.OpenXml.Wordprocessing; using MECF.Framework.Common.DataCenter; using System; using System.Collections.Generic; using System.Data; using System.Linq; namespace MECF.Framework.UI.Client.TrayThickness.HistoryData { public class HistoryCoatingSqlHelp { private List TrayTabList = new List() { "tray_number", "tray_inner_number", "ring_inner_number", "ring_outer_number" }; public List QueryUpdateAll_Tray() { string cmd = $"select * from tray_thickness_main order by create_time desc "; return QueryTrayBase(cmd); } public List QueryUpdateTime_Tray(string starTime, string endTime) { string cmd = $"select * from tray_thickness_main where create_time between '{starTime}' and '{endTime}' order by create_time desc"; return QueryTrayBase(cmd); } public List QueryUnitName_Tray(string name, string starTime="", string endTime="") { string time = $"and create_time between '{starTime}' and '{endTime}'"; string cmd = $"select * from tray_thickness_main where tray_number = '{name}' {time} order by create_time desc"; return QueryTrayBase(cmd, true); } public List QueryEntiretyTray(string name, string starTime = "", string endTime = "") { //根据TrayID获取对应内外编号 List listCoatingData = new List(); List rowName = new List(); string cmdAllName = "select * from tray_thickness_data where " + $"tray_number='{name}' " + $"or tray_inner_number = '{name}' " + $"or ring_inner_number = '{name}' " + $"or ring_outer_number = '{name}'"; var dtAll = QueryDataClient.Instance.Service.QueryData(cmdAllName); if (dtAll.Rows.Count != 0) { for (int i = 0; i < dtAll.Rows.Count; i++) { for (int j = 0; j < TrayTabList.Count; j++) { string value = dtAll.Rows[i][TrayTabList[j]].ToString(); if (!rowName.Contains(value)) rowName.Add(value); } } } string cmdName1 = ""; for (int i = 0; i < rowName.Count; i++) { if (i == rowName.Count - 1) cmdName1 += $"tray_number = '{rowName[i]}' "; else cmdName1 += $"tray_number = '{rowName[i]}' or "; } string time = $"and create_time between '{starTime}' and '{endTime}'"; string cmdName = $"select * from tray_thickness_main where {cmdName1} {time} order by create_time desc"; listCoatingData = QueryTrayBase(cmdName,true); return listCoatingData; } public List QueryUpdateAll_PM() { string cmd = $"select * from pm_thickness_main order by create_time desc "; return QueryPMBase(cmd); } public List QueryUpdateTime_PM(string starTime, string endTime) { string cmd = $"select * from pm_thickness_main where create_time between '{starTime}' and '{endTime}' order by create_time desc"; return QueryPMBase(cmd); } public List QueryUnitName_PM(string name, string starTime = "", string endTime = "") { string time = $"and create_time between '{starTime}' and '{endTime}'"; string cmd = $"select * from pm_thickness_main where pm_cycle = '{name}' {time} order by create_time desc"; return QueryPMBase(cmd); } private List QueryTrayBase(string cmd, bool isNum = false) { List coatingDataList = new List(); try { var dt = QueryDataClient.Instance.Service.QueryData(cmd);//只能界面用 for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i].ItemArray.Length != 0) { CoatingData coatingData = new CoatingData() { SerialNumber = dt.Rows[i]["tray_number"].ToString(), MAX = dt.Rows[i]["tray_max_thickness"].ToString(), PmOwned = dt.Rows[i]["pm_number"].ToString(), Current = dt.Rows[i]["tray_coating_thickness"].ToString(), CreatTime = dt.Rows[i]["create_time"].ToString(), Caption = dt.Rows[i]["tray_label"].ToString(), Index = $"Tray {i / 4 + 1}" }; if (isNum) { coatingData.Index = (i + 1).ToString(); } coatingDataList.Add(coatingData); } else coatingDataList.Add(new CoatingData()); } } catch (Exception) { return null; } return coatingDataList; } private List QueryPMBase(string cmd, bool isNum = false) { List coatingDataList = new List(); try { var dt = QueryDataClient.Instance.Service.QueryData(cmd);//只能界面用 for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i].ItemArray.Length != 0) { CoatingData coatingData = new CoatingData() { SerialNumber = dt.Rows[i]["pm_cycle"].ToString(), MAX = dt.Rows[i]["pm_max_thickness"].ToString(), PmOwned = dt.Rows[i]["pm_number"].ToString(), Current = dt.Rows[i]["pm_coating_thickness"].ToString(), CreatTime = dt.Rows[i]["create_time"].ToString(), Caption = dt.Rows[i]["pm_label"].ToString(), Index = $"{i + 1}" }; coatingDataList.Add(coatingData); } else coatingDataList.Add(new CoatingData()); } } catch (Exception) { return null; } return coatingDataList; } public bool GrowTray(string tray_guid, double GrowthRate, double Seconds)//Tray更新增长厚度 { // try { string tray_numbers = ""; string sSql = $"select * from tray_thickness_data where tray_guid like '{tray_guid}'"; DataSet ds = DB.ExecuteDataset(sSql); if (ds == null) { return false; } if (ds.Tables[0].Rows.Count == 0) { return false; } tray_numbers = "'" + ds.Tables[0].Rows[0]["tray_number"].ToString() + "','" + ds.Tables[0].Rows[0]["tray_inner_number"].ToString() + "','" + ds.Tables[0].Rows[0]["ring_inner_number"].ToString() + "','" + ds.Tables[0].Rows[0]["ring_outer_number"].ToString() + "'"; string growthValue = (GrowthRate * Seconds / 3600).ToString("0.00"); //μm string[] gCmd = { $"update tray_thickness_main set tray_coating_thickness = tray_coating_thickness + {growthValue} " + $"where create_time = (select create_time FROM tray_thickness_main where tray_number in ({tray_numbers}) " + $"ORDER BY create_time DESC LIMIT 1 ) " }; return DB.ExcuteTransAction(gCmd.ToList()); } catch (Exception ex) { LOG.Write($"GrowTray { ex}"); return false; } } public bool GrowPM(string pmName, double GrowthRate, double Seconds)//PM更新增长厚度 { try { string pm_Cmd = ""; string sSql = $"select * from pm_thickness_data where pm_guid like '{pmName}' "; DataSet ds = DB.ExecuteDataset(sSql); if (ds == null || ds.Tables[0].Rows.Count==0) { return false; } pm_Cmd = $"'{ds.Tables[0].Rows[0]["pm_minor_cycle"].ToString()}','{ds.Tables[0].Rows[0]["pm_major_cycle"].ToString()}'"; // string growthValue = (GrowthRate * Seconds / 3600).ToString("0.00"); //μm string[] gCmd = { $"update pm_thickness_main set pm_coating_thickness = pm_coating_thickness + {growthValue} " + $"where create_time = (select create_time FROM pm_thickness_main where pm_cycle in ({pm_Cmd}) " + $"ORDER BY create_time DESC LIMIT 1 ) " }; return DB.ExcuteTransAction(gCmd.ToList()); } catch (Exception ex) { LOG.Write($"GrowPM {ex}"); return false; } } public bool CheckExceedTray(string tray_guid,string pmName, out string infor) { infor = ""; try { string sSql = $"select * from tray_thickness_data where tray_guid like '{tray_guid}'"; DataSet ds = DB.ExecuteDataset(sSql); string cmd = "select tray_coating_thickness , tray_max_thickness,tray_label from tray_thickness_main where "; cmd += $"tray_number='{ds.Tables[0].Rows[0]["tray_number"].ToString()}' " + $"or tray_number = '{ds.Tables[0].Rows[0]["tray_inner_number"].ToString()}' " + $"OR tray_number = '{ds.Tables[0].Rows[0]["ring_inner_number"].ToString()}' " + $"or tray_number = '{ds.Tables[0].Rows[0]["ring_outer_number"].ToString()}'"; string timeCmd = $" ORDER BY create_time DESC LIMIT 4"; ds = DB.ExecuteDataset(cmd+ timeCmd); if (ds == null || ds.Tables[0].Rows.Count == 0) { return false; } for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { double coating = double.Parse( ds.Tables[0].Rows[i]["tray_coating_thickness"].ToString()); double max =double.Parse(ds.Tables[0].Rows[i]["tray_max_thickness"].ToString()); if (coating>max) { string lab = ds.Tables[0].Rows[i]["tray_label"].ToString(); infor = $"{pmName}腔体 Tray {lab} MAX={max} Coating={coating}"; return true; } } } catch (Exception ex) { LOG.Write($"HistoryCoatingSqlHelp.CheckExceedTray error {ex}"); return false; } return false; } public bool CheckExceedPM(string pmId, out string infor) { infor = ""; try { string sSql = $"select * from pm_thickness_data where pm_guid like '{pmId}'"; DataSet ds = DB.ExecuteDataset(sSql); string cmd = "select pm_coating_thickness , pm_max_thickness,pm_label from pm_thickness_main where "; cmd += $"pm_cycle='{ds.Tables[0].Rows[0]["pm_minor_cycle"].ToString()}' " + $"or pm_cycle = '{ds.Tables[0].Rows[0]["pm_major_cycle"].ToString()}'"; string timeCmd = $" ORDER BY create_time DESC LIMIT 2"; ds = DB.ExecuteDataset(cmd + timeCmd); if (ds == null || ds.Tables[0].Rows.Count == 0) { return false; } for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { double coating = double.Parse(ds.Tables[0].Rows[i]["pm_coating_thickness"].ToString()); double max = double.Parse(ds.Tables[0].Rows[i]["pm_max_thickness"].ToString()); if (coating > max) { string lab = ds.Tables[0].Rows[i]["pm_label"].ToString(); infor = $"{lab} MAX={max} Coating={coating}"; return true; } } } catch (Exception ex) { LOG.Write($"HistoryCoatingSqlHelp.CheckExceedPM error {ex}"); return false; } return false; } } }