This repository has been archived on 2024-01-02. You can view files and clone it, but cannot push or open issues or pull requests.
Sic06/FrameworkLocal/UICore/TrayCoating/CoatingSqlHelp.cs

384 lines
16 KiB
C#
Raw Normal View History

2023-04-18 16:04:18 +08:00
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)//获取所有对象数据
{
2023-05-04 17:05:12 +08:00
2023-04-18 16:04:18 +08:00
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();
2023-05-04 17:05:12 +08:00
//整体一个对象所有数据,但是未命名的查询不到,不适用此处
//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());
//}
2023-04-18 16:04:18 +08:00
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}'";
2023-05-04 17:05:12 +08:00
DB.ExcuteTransAction(new List<string> { cmd_update });
2023-04-18 16:04:18 +08:00
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
{
2023-05-04 17:05:12 +08:00
List<string> cmdList = new List<string>();
2023-04-18 16:04:18 +08:00
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)
2023-05-04 17:05:12 +08:00
cmdList.Add(Cmd_update(coatingData.ID, coatingData.Number, propertyName));
2023-04-18 16:04:18 +08:00
else
2023-05-04 17:05:12 +08:00
cmdList.Add(Cmd_data_insert(coatingData.ID, coatingData.Number, propertyName));
2023-04-18 16:04:18 +08:00
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)
2023-05-04 17:05:12 +08:00
cmdList.Add(Cmd_main_update(coatingData));
2023-04-18 16:04:18 +08:00
else
2023-05-04 17:05:12 +08:00
cmdList.Add(Cmd_main_insert(coatingData));
2023-04-18 16:04:18 +08:00
2023-05-04 17:05:12 +08:00
DB.ExcuteTransAction(cmdList);
2023-04-18 16:04:18 +08:00
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;
}
}
2023-05-04 17:05:12 +08:00
public List<string> Get_Coating_MAX(string wafer_guid)
2023-04-18 16:04:18 +08:00
{
List<string> inforList =new List<string>();//返回查询到的数据集合
2023-05-04 17:05:12 +08:00
string _id = wafer_guid.Contains("PM") ? "PM": wafer_guid;
string sSql = $"select * from tray_thickness_data where wafer_guid like '{_id}'";
2023-04-18 16:04:18 +08:00
DataSet ds = DB.ExecuteDataset(sSql);
if (ds == null)
{
return null;
}
if (ds.Tables[0].Rows.Count == 0)
{
return null;
2023-05-04 17:05:12 +08:00
}
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()}' " +
2023-04-18 16:04:18 +08:00
$"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()}'";
2023-05-04 17:05:12 +08:00
}
2023-04-18 16:04:18 +08:00
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;
}
2023-05-04 17:05:12 +08:00
2023-04-18 16:04:18 +08:00
}
}