Sic.Framework-Nanjing-Baishi/MECF.Framework.UI.Core/TrayCoating/CoatingSqlHelp.cs

384 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Aitex.Core.RT.DBCore;
using Aitex.Core.RT.Log;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.DBCore;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.UI.Core.TrayCoating
{
/// <summary>
/// CoatingSqlHelp,提供下列功能
///
/// tray_thickness_data表存放Tray名称和设置的每个环名称
/// tray_thickness_main表存放每个环实际的生产数据
/// 1查询整个Tray对象数据操作两个数据库表
/// 2界面点击单个SET时插入或者更新数据库操作两个数据库表
/// 3界面点击Clear时修改数据库操作一个数据库表
/// 4工艺完成后更新数据库Tray和pm生长厚度操作一个数据库表
/// 5数据库查询Tray对象返回当前厚度和最大厚度的集合操作一个数据库表
/// </summary>
public class CoatingSqlHelp : WaferDataRecorder
{
private static readonly object Lock_TrayCoatingThickness = new object();
private string tray_number, tray_inner_number, ring_inner_number, ring_outer_number;
public TrayCoatingThickness GetCoatingData(string _trayID)//获取所有对象数据
{
TrayCoatingThickness trayCoatingThickness = new TrayCoatingThickness();
lock (Lock_TrayCoatingThickness)
{
try
{
//根据TrayID获取对应内外编号
string cmdID = $"select * from tray_thickness_data where wafer_guid = '{_trayID}'";
DataSet dataSet = DB.ExecuteDataset(cmdID);
if (dataSet.Tables.Count != 0 && dataSet.Tables[0].Rows.Count != 0)
{
tray_number = dataSet.Tables[0].Rows[0]["tray_number"].ToString();
tray_inner_number = dataSet.Tables[0].Rows[0]["tray_inner_number"].ToString();
ring_inner_number = dataSet.Tables[0].Rows[0]["ring_inner_number"].ToString();
ring_outer_number = dataSet.Tables[0].Rows[0]["ring_outer_number"].ToString();
//整体一个对象所有数据,但是未命名的查询不到,不适用此处
//List<CoatingData> listCoatingData = new List<CoatingData>();
//string cmd = "select * from tray_thickness_main where " +
// $"tray_number='{tray_number}' " +
// $"or tray_number = '{tray_inner_number}' " +
// $"OR tray_number = '{ring_inner_number}' " +
// $"or tray_number = '{ring_outer_number}'";
//DataSet ds = DB.ExecuteDataset(cmd);
//for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
//{
// if (ds.Tables[0].Rows[i].ItemArray.Length != 0)
// {
// string str = ds.Tables[0].Rows[i]["tray_number"].ToString();
// CoatingData coatingData = new CoatingData()
// {
// Number = ds.Tables[0].Rows[i]["tray_number"].ToString(),
// MAX = ds.Tables[0].Rows[i]["tray_max_thickness"].ToString(),
// PM_Model = ds.Tables[0].Rows[i]["pm_number"].ToString(),
// Current = ds.Tables[0].Rows[i]["tray_coating_thickness"].ToString()
// };
// listCoatingData.Add(coatingData);
// }
// else
// listCoatingData.Add(new CoatingData());
//}
trayCoatingThickness.Tray.Update(GetData(tray_number));
trayCoatingThickness.TrayInner.Update(GetData(tray_inner_number));
trayCoatingThickness.RingInner.Update(GetData(ring_inner_number));
trayCoatingThickness.RingOuter.Update(GetData(ring_outer_number));
}
return trayCoatingThickness;
}
catch (Exception ex)
{
return trayCoatingThickness;
}
}
}
private CoatingData GetData(string _coatingName)//获取单个对象数据
{
string cmd = $"select * from tray_thickness_main where tray_number = '{_coatingName}'";
DataSet dataSet = DB.ExecuteDataset(cmd);
try
{
if (dataSet.Tables.Count != 0 && dataSet.Tables[0].Rows.Count != 0)
{
CoatingData coatingData = new CoatingData()
{
Number = dataSet.Tables[0].Rows[0]["tray_number"].ToString(),
MAX = dataSet.Tables[0].Rows[0]["tray_max_thickness"].ToString(),
PM_Model = dataSet.Tables[0].Rows[0]["pm_number"].ToString(),
Current = dataSet.Tables[0].Rows[0]["tray_coating_thickness"].ToString()
};
return coatingData;
}
}
catch (Exception)
{
}
return new CoatingData();
}
public void Cmd_Clear_Coating(string number, out string result)//清除当前生长数据
{
try
{
string cmd_update =
$"update tray_thickness_main set " +
$"tray_coating_thickness = '0' " +
$"where tray_number = '{number}'";
DB.ExcuteTransAction(new List<string> { cmd_update });
result = "OK";
}
catch (Exception ex)
{
result = ex.ToString();
}
}
/// <summary>
/// 更新一行数据
/// </summary>
/// <param name="coatingData">要更新的数据对象</param>
/// <param name="propertyName">环的名称</param>
/// <param name="result">数据库执行结果</param>
public void Cmd_Set_update(CoatingData coatingData, string propertyName, out string result)
{
try
{
List<string> cmdList = new List<string>();
string cmdID = $"select * from tray_thickness_data where wafer_guid = '{coatingData.ID}'";
DataSet dataSet = DB.ExecuteDataset(cmdID);
if (dataSet.Tables.Count != 0 && dataSet.Tables[0].Rows.Count != 0)
cmdList.Add(Cmd_update(coatingData.ID, coatingData.Number, propertyName));
else
cmdList.Add(Cmd_data_insert(coatingData.ID, coatingData.Number, propertyName));
cmdID = $"select * from tray_thickness_main where tray_number = '{coatingData.Number}'";
dataSet = DB.ExecuteDataset(cmdID);
if (dataSet.Tables.Count != 0 && dataSet.Tables[0].Rows.Count != 0)
cmdList.Add(Cmd_main_update(coatingData));
else
cmdList.Add(Cmd_main_insert(coatingData));
DB.ExcuteTransAction(cmdList);
result = "OK";
}
catch (Exception ex)
{
result = ex.ToString();
}
}
/// <summary>
/// Set时Tray中对象编号插入
/// </summary>
/// <param name="trayCoatingThickness"></param>
/// <param name="trayID"></param>
/// <returns></returns>
private string Cmd_data_insert(string trayID, string value, string propertyName)
{
string cmd_data_insert =
"insert into tray_thickness_data" +
$"(wafer_guid,{propertyName})" +
$"values ('{trayID}'," +
$"'{value}')";
return cmd_data_insert;
}
/// <summary>
/// Set时Tray中对象编号更新
/// </summary>
/// <param name="trayCoatingThickness"></param>
/// <param name="trayID"></param>
/// <returns></returns>
private string Cmd_update(string trayID, string value, string propertyName)
{
string cmd_update =
$"update tray_thickness_data set " +
$"{propertyName}= '{value}' " +
$"where wafer_guid = '{trayID}'";
return cmd_update;
}
/// <summary>
/// Set时插入一行数据
/// </summary>
/// <param name="coatingData"></param>
/// <returns></returns>
private string Cmd_main_insert(CoatingData coatingData)
{
string cmd_main_insert = "insert into tray_thickness_main" +
"(tray_number,pm_number, tray_coating_thickness, tray_max_thickness,last_date,last_time)" +
$"values ('{coatingData.Number}'," +
$"'{coatingData.PM_Model}'," +
$"'{coatingData.Current}'," +
$"'{coatingData.MAX}'," +
$"'{DateTime.Now.ToString("yyyy-MM-dd")}'," +
$"'{DateTime.Now.ToString("HH:mm:ss")}')";
return cmd_main_insert;
}
/// <summary>
/// Set时更新一行数据
/// </summary>
/// <param name="coatingData"></param>
/// <returns></returns>
private string Cmd_main_update(CoatingData coatingData)
{
string cmd_main_update =
$"update tray_thickness_main set " +
$"pm_number= '{coatingData.PM_Model}'," +
$"tray_coating_thickness= '{coatingData.Current}'," +
$"tray_max_thickness= '{coatingData.MAX}'," +
$"last_date= '{DateTime.Now.ToString("yyyy-MM-dd")}'," +
$"last_time= '{DateTime.Now.ToString("HH:mm:ss")}' " +
$"where tray_number = '{coatingData.Number}'";
return cmd_main_update;
}
public bool GrowTray(string wafer_guid, double GrowthRate, double Seconds)//Tray更新增长厚度
{
if (GrowthRate <= 0.0 || Seconds <= 0)
{
return false;
}
//
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<string>());
}
catch (Exception ex)
{
LOG.Write(ex, 2, "WaferDataRecorderEx.cs", "UpdatePMInfoByPMNumberTrans");
return false;
}
}
public bool GrowPM(string pmName, double GrowthRate, double Seconds)//PM更新增长厚度
{
if (GrowthRate <= 0.0 || Seconds <= 0)
{
return false;
}
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<string>());
}
catch (Exception ex)
{
LOG.Write(ex, 2, "WaferDataRecorderEx.cs", "UpdatePMInfoByPMNumberTrans");
return false;
}
}
public List<string> Get_Coating_MAX(string wafer_guid)
{
List<string> inforList = new List<string>();//返回查询到的数据集合
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;
}
}
}