using Aitex.Core.RT.DBCore; using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; 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() { string cmd = $"select * from tray_thickness_main order by creat_time desc "; return QueryBase(cmd); } public List QueryUpdateTime(string starTime, string endTime) { string cmd = $"select * from tray_thickness_main where creat_time between '{starTime}' and '{endTime}' order by creat_time desc"; return QueryBase(cmd); } public List QueryUnitName(string name, string starTime="", string endTime="") { string time = $"and creat_time between '{starTime}' and '{endTime}'"; string cmd = $"select * from tray_thickness_main where tray_number = '{name}' {time} order by creat_time desc"; return QueryBase(cmd, true); } public List QueryEntirety(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 creat_time between '{starTime}' and '{endTime}'"; string cmdName = $"select * from tray_thickness_main where {cmdName1} {time} order by creat_time desc"; listCoatingData = QueryBase(cmdName,true); return listCoatingData; } private List QueryBase(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]["creat_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; } public bool GrowTray(string wafer_guid, double GrowthRate, double Seconds)//Tray更新增长厚度 { // try { string tray_numbers = ""; string sSql = "select * from tray_thickness_data where wafer_guid like '" + wafer_guid.Trim() + "'"; 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() + "'"; // double GrowthValue = GrowthRate * Seconds / 3600; //μm string sGrowthValue = string.Format("{0:N2}", GrowthValue); string sDate = DateTime.Now.ToLongDateString(); string sTime = DateTime.Now.ToLongTimeString(); string[] gCmd = {string.Format("update tray_thickness_main set tray_coating_thickness = tray_coating_thickness + {0} where tray_number in ({1}) ",sGrowthValue,tray_numbers) }; return DB.ExcuteTransAction(gCmd.ToList()); } catch (Exception ex) { LOG.Write(ex, 2, "WaferDataRecorderEx.cs", "UpdatePMInfoByPMNumberTrans"); return false; } } public bool GrowPM(string pmName, double GrowthRate, double Seconds)//PM更新增长厚度 { try { string tray_numbers = ""; string sSql = "select * from tray_thickness_data where wafer_guid like 'PM' "; DataSet ds = DB.ExecuteDataset(sSql); if (ds == null) { return false; } if (ds.Tables[0].Rows.Count == 0) { return false; } if (pmName == "PM1") { tray_numbers = $"'{ds.Tables[0].Rows[0]["tray_number"].ToString()}','{ds.Tables[0].Rows[0]["tray_inner_number"].ToString()}'"; } else { tray_numbers = $"'{ds.Tables[0].Rows[0]["ring_inner_number"].ToString()}','{ds.Tables[0].Rows[0]["ring_outer_number"].ToString()}'"; } // double GrowthValue = GrowthRate * Seconds / 3600; //μm string sGrowthValue = string.Format("{0:N2}", GrowthValue); string sDate = DateTime.Now.ToLongDateString(); string sTime = DateTime.Now.ToLongTimeString(); string[] gCmd = { string.Format("update tray_thickness_main set tray_coating_thickness = tray_coating_thickness + {0} where tray_number in ({1}) ",sGrowthValue,tray_numbers) }; return DB.ExcuteTransAction(gCmd.ToList()); } catch (Exception ex) { LOG.Write(ex, 2, "WaferDataRecorderEx.cs", "UpdatePMInfoByPMNumberTrans"); return false; } } public List Get_Coating_MAX(string wafer_guid) { List inforList = new List();//返回查询到的数据集合 string _id = wafer_guid.Contains("PM") ? "PM" : wafer_guid; string sSql = $"select * from tray_thickness_data where wafer_guid like '{_id}'"; DataSet ds = DB.ExecuteDataset(sSql); if (ds == null) { return null; } if (ds.Tables[0].Rows.Count == 0) { return null; } string cmd = "select tray_coating_thickness , tray_max_thickness from tray_thickness_main where "; if (wafer_guid == "PM1") { cmd += $"tray_number='{ds.Tables[0].Rows[0]["tray_number"].ToString()}' " + $"or tray_number = '{ds.Tables[0].Rows[0]["tray_inner_number"].ToString()}'"; } else if (wafer_guid == "PM2") { cmd += $"tray_number = '{ds.Tables[0].Rows[0]["ring_inner_number"].ToString()}' " + $"or tray_number = '{ds.Tables[0].Rows[0]["ring_outer_number"].ToString()}'"; } else { 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()}'"; } ds = DB.ExecuteDataset(cmd); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string str = ds.Tables[0].Rows[i]["tray_coating_thickness"].ToString(); string tray_max_thickness = ds.Tables[0].Rows[i]["tray_max_thickness"].ToString(); inforList.Add(str); inforList.Add(tray_max_thickness); } return inforList; } } }