2023-05-22 18:32:18 +08:00
using Aitex.Core.RT.DBCore ;
using Aitex.Core.RT.Log ;
2023-05-25 13:31:57 +08:00
using Aitex.Core.RT.Routine ;
2023-05-23 11:55:02 +08:00
using DocumentFormat.OpenXml.Office.Word ;
2023-05-25 13:31:57 +08:00
using DocumentFormat.OpenXml.Wordprocessing ;
2023-05-22 18:32:18 +08:00
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
{
2023-05-25 13:31:57 +08:00
private List < string > TrayTabList = new List < string > ( )
{
"tray_number" ,
"tray_inner_number" ,
"ring_inner_number" ,
"ring_outer_number"
} ;
public List < CoatingData > QueryUpdateAll ( )
{
string cmd = $"select * from tray_thickness_main order by creat_time desc " ;
return NewMethod1 ( cmd ) ;
}
public List < CoatingData > 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 NewMethod1 ( cmd ) ;
}
2023-05-26 08:56:19 +08:00
public List < CoatingData > QueryUnitName ( string name , string starTime = "" , string endTime = "" , bool querTime = false )
2023-05-25 13:31:57 +08:00
{
2023-05-26 08:56:19 +08:00
string time = "" ;
if ( querTime )
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" ;
2023-05-25 13:31:57 +08:00
return NewMethod1 ( cmd , true ) ;
}
2023-05-26 08:56:19 +08:00
public List < CoatingData > QueryEntirety ( string name , string starTime = "" , string endTime = "" , bool querTime = false )
2023-05-25 13:31:57 +08:00
{
//根据TrayID获取对应内外编号
List < CoatingData > listCoatingData = new List < CoatingData > ( ) ;
List < string > rowName = new List < string > ( ) ;
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 " ;
}
2023-05-26 08:56:19 +08:00
string time = "" ;
if ( querTime )
time = $"and creat_time between '{starTime}' and '{endTime}'" ;
string cmdName = $"select * from tray_thickness_main where {cmdName1} {time} order by creat_time desc" ;
2023-05-25 13:31:57 +08:00
listCoatingData = NewMethod1 ( cmdName , true ) ;
return listCoatingData ;
}
private List < CoatingData > NewMethod1 ( string cmd , bool isNum = false )
2023-05-22 18:32:18 +08:00
{
List < CoatingData > coatingDataList = new List < CoatingData > ( ) ;
try
{
2023-05-23 11:55:02 +08:00
var dt = QueryDataClient . Instance . Service . QueryData ( cmd ) ; //只能界面用
2023-05-22 18:32:18 +08:00
for ( int i = 0 ; i < dt . Rows . Count ; i + + )
{
if ( dt . Rows [ i ] . ItemArray . Length ! = 0 )
{
CoatingData coatingData = new CoatingData ( )
{
Number = dt . Rows [ i ] [ "tray_number" ] . ToString ( ) ,
MAX = dt . Rows [ i ] [ "tray_max_thickness" ] . ToString ( ) ,
PM_Model = dt . Rows [ i ] [ "pm_number" ] . ToString ( ) ,
Current = dt . Rows [ i ] [ "tray_coating_thickness" ] . ToString ( ) ,
CreatTime = dt . Rows [ i ] [ "creat_time" ] . ToString ( ) ,
Label = dt . Rows [ i ] [ "tray_label" ] . ToString ( ) ,
2023-05-25 13:31:57 +08:00
Index = $"Tray {i / 4 + 1}"
2023-05-22 18:32:18 +08:00
} ;
2023-05-25 13:31:57 +08:00
if ( isNum )
{
coatingData . Index = ( i + 1 ) . ToString ( ) ;
}
2023-05-22 18:32:18 +08:00
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 ( ) + "'" ;
2023-05-23 11:55:02 +08:00
DataSet ds = DB . ExecuteDataset ( sSql ) ;
if ( ds = = null )
2023-05-22 18:32:18 +08:00
{
return false ;
}
2023-05-23 11:55:02 +08:00
if ( ds . Tables [ 0 ] . Rows . Count = = 0 )
2023-05-22 18:32:18 +08:00
{
return false ;
}
2023-05-23 11:55:02 +08:00
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 ( ) + "'" ;
2023-05-22 18:32:18 +08:00
/ /
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更新增长厚度
{
try
{
string tray_numbers = "" ;
string sSql = "select * from tray_thickness_data where wafer_guid like 'PM' " ;
2023-05-23 11:55:02 +08:00
DataSet ds = DB . ExecuteDataset ( sSql ) ;
if ( ds = = null )
2023-05-22 18:32:18 +08:00
{
return false ;
}
2023-05-23 11:55:02 +08:00
if ( ds . Tables [ 0 ] . Rows . Count = = 0 )
2023-05-22 18:32:18 +08:00
{
return false ;
}
if ( pmName = = "PM1" )
{
2023-05-23 11:55:02 +08:00
tray_numbers = $"'{ds.Tables[0].Rows[0][" tray_number "].ToString()}','{ds.Tables[0].Rows[0][" tray_inner_number "].ToString()}'" ;
2023-05-22 18:32:18 +08:00
}
else
{
2023-05-23 11:55:02 +08:00
tray_numbers = $"'{ds.Tables[0].Rows[0][" ring_inner_number "].ToString()}','{ds.Tables[0].Rows[0][" ring_outer_number "].ToString()}'" ;
2023-05-22 18:32:18 +08:00
}
/ /
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 )
{
2023-05-23 11:55:02 +08:00
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 )
2023-05-22 18:32:18 +08:00
{
2023-05-23 11:55:02 +08:00
return null ;
2023-05-22 18:32:18 +08:00
}
2023-05-23 11:55:02 +08:00
if ( ds . Tables [ 0 ] . Rows . Count = = 0 )
2023-05-22 18:32:18 +08:00
{
return null ;
}
2023-05-23 11:55:02 +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()}' " +
$"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 ;
2023-05-22 18:32:18 +08:00
}
}
}