2022-12-13 09:35:10 +08:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using System.Data ;
using MECF.Framework.Common.DBCore ;
using Aitex.Core.RT.DBCore ;
using Aitex.Core.RT.Log ;
namespace MECF.Framework.RT.Core.DBProviderEx
{
public class tray_thickness_data
{
public string wafer_guid ;
public string tray_number ;
public double tray_coating ;
public double tray_max ;
public string tray_pm_number ;
public string tray_inner_number ;
public double tray_inner_coating ;
public double tray_inner_max ;
public string tray_inner_pm_number ;
public string ring_inner_number ;
public double ring_inner_coating ;
public double ring_inner_max ;
public string ring_inner_pm_number ;
public string ring_outer_number ;
public double ring_outer_coating ;
public double ring_outer_max ;
public string ring_outer_pm_number ;
/ /
public tray_thickness_data ( )
{ }
public tray_thickness_data ( string s )
{
this . StringTo ( s ) ;
}
public override string ToString ( )
{
string s = "" ;
s + = ( this . wafer_guid + "\t" ) ;
s + = ( this . tray_number + "\t" ) ;
s + = ( this . tray_coating . ToString ( ) + "\t" ) ;
s + = ( this . tray_max . ToString ( ) + "\t" ) ;
s + = ( this . tray_pm_number . ToString ( ) + "\t" ) ;
s + = ( this . tray_inner_number + "\t" ) ;
s + = ( this . tray_inner_coating . ToString ( ) + "\t" ) ;
s + = ( this . tray_inner_max . ToString ( ) + "\t" ) ;
s + = ( this . tray_inner_pm_number . ToString ( ) + "\t" ) ;
s + = ( this . ring_inner_number + "\t" ) ;
s + = ( this . ring_inner_coating . ToString ( ) + "\t" ) ;
s + = ( this . ring_inner_max . ToString ( ) + "\t" ) ;
s + = ( this . ring_inner_pm_number . ToString ( ) + "\t" ) ;
s + = ( this . ring_outer_number + "\t" ) ;
s + = ( this . ring_outer_coating . ToString ( ) + "\t" ) ;
s + = ( this . ring_outer_max . ToString ( ) + "\t" ) ;
s + = ( this . ring_outer_pm_number . ToString ( ) + "" ) ;
/ /
return s ;
}
public void StringTo ( string s )
{
string [ ] sTI = s . Split ( '\t' ) ;
this . wafer_guid = sTI [ 0 ] . ToString ( ) ;
this . tray_number = sTI [ 1 ] . ToString ( ) ;
this . tray_coating = Convert . ToDouble ( sTI [ 2 ] ) ;
this . tray_max = Convert . ToDouble ( sTI [ 3 ] ) ;
this . tray_pm_number = sTI [ 4 ] . ToString ( ) ;
this . tray_inner_number = sTI [ 5 ] . ToString ( ) ;
this . tray_inner_coating = Convert . ToDouble ( sTI [ 6 ] ) ;
this . tray_inner_max = Convert . ToDouble ( sTI [ 7 ] ) ;
this . tray_inner_pm_number = sTI [ 8 ] . ToString ( ) ;
this . ring_inner_number = sTI [ 9 ] . ToString ( ) ;
this . ring_inner_coating = Convert . ToDouble ( sTI [ 10 ] ) ;
this . ring_inner_max = Convert . ToDouble ( sTI [ 11 ] ) ;
this . ring_inner_pm_number = sTI [ 12 ] . ToString ( ) ;
this . ring_outer_number = sTI [ 13 ] . ToString ( ) ;
this . ring_outer_coating = Convert . ToDouble ( sTI [ 14 ] ) ;
this . ring_outer_max = Convert . ToDouble ( sTI [ 15 ] ) ;
this . ring_outer_pm_number = sTI [ 16 ] . ToString ( ) ;
}
}
public class tray_thickness_main
{
public string tray_number ;
public string pm_number ;
public double tray_coating_thickness ;
public double tray_max_thickness ;
public string last_time ;
/ /
public tray_thickness_main ( )
{ }
public tray_thickness_main ( string s )
{
this . StringTo ( s ) ;
}
public override string ToString ( )
{
string s = "" ;
s + = ( this . tray_number + "\t" ) ;
s + = ( this . pm_number + "\t" ) ;
s + = ( this . tray_coating_thickness . ToString ( ) + "\t" ) ;
s + = ( this . tray_max_thickness . ToString ( ) + "\t" ) ;
s + = ( this . last_time + "" ) ;
/ /
return s ;
}
public void StringTo ( string s )
{
string [ ] sTI = s . Split ( '\t' ) ;
this . tray_number = sTI [ 0 ] . ToString ( ) ;
this . pm_number = sTI [ 1 ] . ToString ( ) ;
this . tray_coating_thickness = Convert . ToDouble ( sTI [ 2 ] ) ;
this . tray_max_thickness = Convert . ToDouble ( sTI [ 3 ] ) ;
this . last_time = sTI [ 4 ] . ToString ( ) ;
}
}
public class pm_thickness_data
{
public string pm_number ;
public double coating1 , max1 , coating2 , max2 ;
/ /
public pm_thickness_data ( )
{ }
public pm_thickness_data ( string s )
{
this . StringTo ( s ) ;
}
public override string ToString ( )
{
string s = "" ;
s + = ( this . pm_number + "\t" ) ;
s + = ( this . coating1 . ToString ( ) + "\t" ) ;
s + = ( this . max1 . ToString ( ) + "\t" ) ;
s + = ( this . coating2 . ToString ( ) + "\t" ) ;
s + = ( this . max2 . ToString ( ) + "\t" ) ;
/ /
return s ;
}
public void StringTo ( string s )
{
string [ ] sTI = s . Split ( '\t' ) ;
this . pm_number = sTI [ 0 ] . ToString ( ) ;
this . coating1 = Convert . ToDouble ( sTI [ 1 ] ) ;
this . max1 = Convert . ToDouble ( sTI [ 2 ] ) ;
this . coating2 = Convert . ToDouble ( sTI [ 3 ] ) ;
this . max2 = Convert . ToDouble ( sTI [ 4 ] ) ;
}
}
public class WaferDataRecorderEx : WaferDataRecorder
{
public static string SF = "{0:F}" ;
public static tray_thickness_data GetTrayInfoByWaferguid ( string wafer_guid )
{
if ( wafer_guid . Trim ( ) . Length = = 0 )
{
return null ;
}
tray_thickness_data t = new tray_thickness_data ( ) ;
/ /
try
{
//string cmdText = $"SELECT * FROM \"tray_thickness_data\" where \"wafer_guid\" = '{wafer_guid}' ;";
string cmdText = "select A.wafer_guid, A.tray_number,A.tray_inner_number,A.ring_inner_number,A.ring_outer_number,B.tray_number as tray_number_b, B.pm_number, B.tray_coating_thickness,B.tray_max_thickness " +
2022-12-15 15:03:33 +08:00
" from tray_thickness_data as A " +
" inner join tray_thickness_main as B " +
" on A.tray_number = B.tray_number " +
" or A.tray_inner_number = B.tray_number " +
" or A.ring_inner_number = B.tray_number " +
" or A.ring_outer_number = B.tray_number " +
" where A.wafer_guid like '" + wafer_guid + "'" ;
2022-12-13 09:35:10 +08:00
DataSet dataSet = DB . ExecuteDataset ( cmdText ) ;
if ( dataSet = = null )
{
return null ;
}
if ( dataSet . Tables . Count = = 0 | | dataSet . Tables [ 0 ] . Rows . Count = = 0 )
{
return null ;
}
t . wafer_guid = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "wafer_guid" ] . ToString ( ) ;
t . tray_number = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "tray_number" ] . ToString ( ) ;
t . tray_inner_number = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "tray_inner_number" ] . ToString ( ) ;
t . ring_inner_number = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "ring_inner_number" ] . ToString ( ) ;
t . ring_outer_number = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "ring_outer_number" ] . ToString ( ) ;
for ( int i = 0 ; i < dataSet . Tables [ 0 ] . Rows . Count ; i + + )
{
string sTrayNumberB = dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_number_b" ] . ToString ( ) ;
if ( sTrayNumberB = = t . tray_number )
{
t . tray_coating = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_coating_thickness" ] ) ;
t . tray_max = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_max_thickness" ] ) ;
t . tray_pm_number = dataSet . Tables [ 0 ] . Rows [ i ] [ "pm_number" ] . ToString ( ) ;
}
else if ( sTrayNumberB = = t . tray_inner_number )
{
t . tray_inner_coating = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_coating_thickness" ] ) ;
t . tray_inner_max = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_max_thickness" ] ) ;
t . tray_inner_pm_number = dataSet . Tables [ 0 ] . Rows [ i ] [ "pm_number" ] . ToString ( ) ;
}
else if ( sTrayNumberB = = t . ring_inner_number )
{
t . ring_inner_coating = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_coating_thickness" ] ) ;
t . ring_inner_max = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_max_thickness" ] ) ;
t . ring_inner_pm_number = dataSet . Tables [ 0 ] . Rows [ i ] [ "pm_number" ] . ToString ( ) ;
}
else if ( sTrayNumberB = = t . ring_outer_number )
{
t . ring_outer_coating = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_coating_thickness" ] ) ;
t . ring_outer_max = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "tray_max_thickness" ] ) ;
t . ring_outer_pm_number = dataSet . Tables [ 0 ] . Rows [ i ] [ "pm_number" ] . ToString ( ) ;
}
else
{
/ /
}
}
}
catch ( Exception ex )
{
t = null ;
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "GetTrayInfoByWaferguid" ) ;
}
/ /
return t ;
}
public static tray_thickness_main GetTrayInfoByTrayNumber ( string sTrayNumber )
{
tray_thickness_main t = new tray_thickness_main ( ) ;
/ /
try
{
string cmdText = $"SELECT * FROM \" tray_thickness_main \ " where \"tray_number\" = '{sTrayNumber}' ;" ;
DataSet dataSet = DB . ExecuteDataset ( cmdText ) ;
if ( dataSet = = null )
{
return null ;
}
if ( dataSet . Tables . Count = = 0 | | dataSet . Tables [ 0 ] . Rows . Count = = 0 )
{
return null ;
}
t . tray_number = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "tray_number" ] . ToString ( ) ;
t . pm_number = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "pm_number" ] . ToString ( ) ;
t . tray_coating_thickness = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ 0 ] [ "tray_coating" ] ) ;
t . tray_max_thickness = Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ 0 ] [ "tray_max" ] ) ;
t . last_time = dataSet . Tables [ 0 ] . Rows [ 0 ] [ "last_time" ] . ToString ( ) ;
}
catch ( Exception ex )
{
t = null ;
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "GetTrayInfoByWaferguid" ) ;
}
/ /
return t ;
}
[Obsolete]
public static void UpdateTrayInfoByWaferguid ( tray_thickness_data t )
{
if ( t = = null )
{
return ;
}
/ /
try
{
string cmdText = string . Format ( "update tray_thickness_data set " +
"tray_number='{1}',tray_coating={2}, tray_max={3}," +
"tray_inner_number='{4}',tray_inner_coating={5}, tray_inner_max={6}," +
"ring_inner_number='{7}',ring_inner_coating={8}, ring_inner_max={9}," +
"ring_outer_number='{10}',ring_outer_coating={11}, ring_outer_max={12} " +
"where wafer_guid = '{0}' ;" ,
t . wafer_guid ,
t . tray_number ,
t . tray_coating ,
t . tray_max ,
t . tray_inner_number ,
t . tray_inner_coating ,
t . tray_inner_max ,
t . ring_inner_number ,
t . ring_inner_coating ,
t . ring_inner_max ,
t . ring_outer_number ,
t . ring_outer_coating ,
t . ring_outer_max
) ;
DB . Insert ( cmdText ) ;
}
catch ( Exception ex )
{
t = null ;
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "UpdateTrayInfoByWaferguid" ) ;
}
}
public static bool UpdateTrayInfoByTrayNumbersTrans ( tray_thickness_data t )
{
if ( t = = null )
{
return false ;
}
/ /
try
{
string sDateTime = DateTime . Now . ToString ( ) ;
string [ ] cmd = {
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1},last_time='{2}',pm_number='{3}' " +
" where tray_number='{4}',;" ,
t . tray_coating ,
t . tray_max ,
sDateTime ,
t . tray_pm_number ,
t . tray_number
) ,
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1},last_time='{2}',pm_number='{3}' " +
" where tray_number='{4}',;" ,
t . tray_inner_coating ,
t . tray_inner_max ,
sDateTime ,
t . tray_inner_pm_number ,
t . tray_inner_number
) ,
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1},last_time='{2}',pm_number='{3}' " +
" where tray_number='{4}',;" ,
t . ring_inner_coating ,
t . ring_inner_max ,
sDateTime ,
t . ring_inner_pm_number ,
t . ring_inner_number
) ,
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1},last_time='{2}',pm_number='{3}' " +
" where tray_number='{4}',;" ,
t . ring_outer_coating ,
t . ring_outer_max ,
sDateTime ,
t . ring_outer_pm_number ,
t . ring_outer_number
)
} ;
return DB . ExcuteTransAction ( cmd . ToList < string > ( ) ) ;
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "UpdateTrayInfoByWaferguid" ) ;
return false ;
}
}
public static bool UpdateTrayInfoByWaferguidTrans ( tray_thickness_data t )
{
if ( t = = null )
{
return false ;
}
/ /
try
{
string sDate = DateTime . Now . ToLongDateString ( ) ;
string sTime = DateTime . Now . ToLongTimeString ( ) ;
string [ ] cmd = {
string . Format ( "update tray_thickness_data set " +
"tray_number='{1}',tray_inner_number='{2}',ring_inner_number='{3}',ring_outer_number='{4}' where wafer_guid = '{0}' ;" ,
t . wafer_guid ,
t . tray_number ,
t . tray_inner_number ,
t . ring_inner_number ,
t . ring_outer_number
) ,
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1}, pm_number='{5}'," +
"last_date='{3}', last_time='{4}' where tray_number='{2}';" ,
t . tray_coating ,
t . tray_max ,
t . tray_number ,
sDate ,
sTime ,
t . tray_pm_number
) ,
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1}, pm_number='{5}'," +
"last_date='{3}', last_time='{4}' where tray_number='{2}';" ,
t . tray_inner_coating ,
t . tray_inner_max ,
t . tray_inner_number ,
sDate ,
sTime ,
t . tray_inner_pm_number
) ,
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1}, pm_number='{5}'," +
"last_date='{3}', last_time='{4}' where tray_number='{2}';" ,
t . ring_inner_coating ,
t . ring_inner_max ,
t . ring_inner_number ,
sDate ,
sTime ,
t . ring_inner_pm_number
) ,
string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={0}, tray_max_thickness={1}, pm_number='{5}'," +
"last_date='{3}', last_time='{4}' where tray_number='{2}';" ,
t . ring_outer_coating ,
t . ring_outer_max ,
t . ring_outer_number ,
sDate ,
sTime ,
t . ring_outer_pm_number
)
} ;
return DB . ExcuteTransAction ( cmd . ToList < string > ( ) ) ;
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "UpdateTrayInfoByWaferguid" ) ;
return false ;
}
}
[Obsolete]
public static void InsertTrayInfo ( tray_thickness_data t )
{
if ( t = = null )
{
return ;
}
/ /
try
{
string cmdText = string . Format ( "insert into tray_thickness_data (" +
"wafer_guid," +
"tray_number,tray_coating, tray_max," +
"tray_inner_number,tray_inner_coating, tray_inner_max," +
"ring_inner_number,ring_inner_coating, ring_inner_max," +
"ring_outer_number,ring_outer_coating, ring_outer_max)" +
"values('{0}','{1}',{2},{3},'{4}',{5},{6},'{7}',{8},{9},'{10}',{11},{12} );" ,
t . wafer_guid ,
t . tray_number ,
t . tray_coating ,
t . tray_max ,
t . tray_inner_number ,
t . tray_inner_coating ,
t . tray_inner_max ,
t . ring_inner_number ,
t . ring_inner_coating ,
t . ring_inner_max ,
t . ring_outer_number ,
t . ring_outer_coating ,
t . ring_outer_max
) ;
DB . Insert ( cmdText ) ;
}
catch ( Exception ex )
{
t = null ;
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "UpdateTrayInfoByWaferguid" ) ;
}
}
public static bool InsertTrayInfoTrans ( tray_thickness_data t )
{
if ( t = = null )
{
return false ;
}
/ /
try
{
string sDate = DateTime . Now . ToLongDateString ( ) ;
string sTime = DateTime . Now . ToLongTimeString ( ) ;
List < string > liCmd = new List < string > ( ) ;
//tray_thickness_data
string cmd = "" ;
cmd = string . Format ( "insert into tray_thickness_data (" +
"wafer_guid," +
"tray_number,tray_inner_number,ring_inner_number,ring_outer_number)" +
"values('{0}','{1}','{2}','{3}','{4}');" ,
t . wafer_guid ,
t . tray_number ,
t . tray_inner_number ,
t . ring_inner_number ,
t . ring_outer_number
) ;
liCmd . Add ( cmd ) ;
//tray_thickness_main
//tray
cmd = string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={1}, tray_max_thickness={2}, pm_number='{5}', " +
"last_date='{3}', last_time='{4}' where tray_number='{0}' " +
" and EXISTS(select * from tray_thickness_main where tray_number like '{0}') " ,
t . tray_number ,
t . tray_coating ,
t . tray_max ,
sDate ,
sTime ,
t . tray_pm_number
) ;
liCmd . Add ( cmd ) ;
cmd = string . Format ( "insert into tray_thickness_main(tray_number,tray_coating_thickness,tray_max_thickness,last_date,last_time,pm_number)" +
" select '{0}',{1},{2},'{3}','{4}', '{5}'" +
" from (select 1) tmp WHERE NOT EXISTS(select * from tray_thickness_main where tray_number like '{0}')" ,
t . tray_number ,
t . tray_coating ,
t . tray_max ,
sDate ,
sTime ,
t . tray_pm_number
) ;
liCmd . Add ( cmd ) ;
//tray_inner
cmd = string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={1}, tray_max_thickness={2},pm_number='{5}', " +
"last_date='{3}', last_time='{4}' where tray_number='{0}' " +
" and EXISTS(select * from tray_thickness_main where tray_number like '{0}') " ,
t . tray_inner_number ,
t . tray_inner_coating ,
t . tray_inner_max ,
sDate ,
sTime
, t . tray_inner_pm_number
) ;
liCmd . Add ( cmd ) ;
cmd = string . Format ( "insert into tray_thickness_main(tray_number,tray_coating_thickness,tray_max_thickness,last_date,last_time,pm_number)" +
" select '{0}',{1},{2},'{3}','{4}' ,'{5}'" +
" from (select 1) tmp WHERE NOT EXISTS(select * from tray_thickness_main where tray_number like '{0}')" ,
t . tray_inner_number ,
t . tray_inner_coating ,
t . tray_inner_max ,
sDate ,
sTime ,
t . tray_inner_pm_number
) ;
liCmd . Add ( cmd ) ;
//ring_inner
cmd = string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={1}, tray_max_thickness={2},pm_number='{5}', " +
"last_date='{3}', last_time='{4}' where tray_number='{0}' " +
" and EXISTS(select * from tray_thickness_main where tray_number like '{0}') " ,
t . ring_inner_number ,
t . ring_inner_coating ,
t . ring_inner_max ,
sDate ,
sTime ,
t . ring_inner_pm_number
) ;
liCmd . Add ( cmd ) ;
cmd = string . Format ( "insert into tray_thickness_main(tray_number,tray_coating_thickness,tray_max_thickness,last_date,last_time,pm_number)" +
" select '{0}',{1},{2},'{3}','{4}','{5}' " +
" from (select 1) tmp WHERE NOT EXISTS(select * from tray_thickness_main where tray_number like '{0}')" ,
t . ring_inner_number ,
t . ring_inner_coating ,
t . ring_inner_max ,
sDate ,
sTime ,
t . ring_inner_pm_number
) ;
liCmd . Add ( cmd ) ;
//ring_outer
cmd = string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={1}, tray_max_thickness={2},pm_number='{5}', " +
"last_date='{3}', last_time='{4}' where tray_number='{0}' " +
" and EXISTS(select * from tray_thickness_main where tray_number like '{0}') " ,
t . ring_outer_number ,
t . ring_outer_coating ,
t . ring_outer_max ,
sDate ,
sTime ,
t . ring_inner_pm_number
) ;
liCmd . Add ( cmd ) ;
cmd = string . Format ( "insert into tray_thickness_main(tray_number,tray_coating_thickness,tray_max_thickness,last_date,last_time,pm_number)" +
" select '{0}',{1},{2},'{3}','{4}' ,'{5}'" +
" from (select 1) tmp WHERE NOT EXISTS(select * from tray_thickness_main where tray_number like '{0}')" ,
t . ring_outer_number ,
t . ring_outer_coating ,
t . ring_outer_max ,
sDate ,
sTime ,
t . ring_outer_pm_number
) ;
liCmd . Add ( cmd ) ;
/ /
return DB . ExcuteTransAction ( liCmd ) ;
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "UpdateTrayInfoByWaferguid" ) ;
return false ;
}
}
public static void DeleteTrayInfoByWaferguid ( string wafer_guid )
{
if ( wafer_guid . Trim ( ) . Length = = 0 )
{
return ;
}
/ /
try
{
string cmdText = string . Format ( "delete from tray_thickness_data where wafer_guid like '{0}'" , wafer_guid ) ;
DB . Insert ( cmdText ) ;
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "DeleteTrayInfoByWaferguid" ) ;
}
}
public static void ClearTrayInfoByTrayNumber ( string sNumber , string sPM , string sCoating , string sMax )
{
if ( sNumber = = "" )
{
return ;
}
/ /
try
{
string sDate = DateTime . Now . ToLongDateString ( ) ;
string sTime = DateTime . Now . ToLongTimeString ( ) ;
string cmd = string . Format ( "update tray_thickness_main set " +
"tray_coating_thickness={1}, tray_max_thickness={2},pm_number='{5}', " +
"last_date='{3}', last_time='{4}' where tray_number='{0}' " ,
sNumber ,
sCoating ,
sMax ,
sDate ,
sTime ,
sPM
) ;
DB . Insert ( cmd ) ;
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "ClearTrayInfoByTrayNumber" ) ;
}
}
public static bool ChangeTrayGuidBind ( string OldGuid , string NewGuid )
{
if ( OldGuid . Trim ( ) = = "" | | NewGuid . Trim ( ) = = "" )
{
return false ;
}
/ /
try
{
string cmd = "" ;
cmd = string . Format ( "select * from tray_thickness_data where wafer_guid ='{0}'" , OldGuid ) ;
DataSet ds = DB . ExecuteDataset ( cmd ) ;
if ( ds ! = null & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
string old_tray_number = ds . Tables [ 0 ] . Rows [ 0 ] [ "tray_number" ] . ToString ( ) ;
string old_tray_inner_number = ds . Tables [ 0 ] . Rows [ 0 ] [ "tray_inner_number" ] . ToString ( ) ;
string old_ring_inner_number = ds . Tables [ 0 ] . Rows [ 0 ] [ "ring_inner_number" ] . ToString ( ) ;
string old_ring_outer_number = ds . Tables [ 0 ] . Rows [ 0 ] [ "ring_outer_number" ] . ToString ( ) ;
/ /
cmd = string . Format ( "insert into tray_thickness_data (wafer_guid,tray_number,tray_inner_number,ring_inner_number,ring_outer_number)" +
"values('{0}','{1}','{2}','{3}','{4}')" , NewGuid , old_tray_number , old_tray_inner_number , old_ring_inner_number , old_ring_outer_number ) ;
List < string > liCmd = new List < string > ( ) ;
liCmd . Add ( cmd ) ;
/ /
return DB . ExcuteTransAction ( liCmd ) ;
}
return false ;
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "UpdatePMInfoByPMNumberTrans" ) ;
return false ;
}
}
public static List < pm_thickness_data > GetPMInfoByPNNumbers ( List < string > sPMNumbers )
{
List < pm_thickness_data > liPMData = new List < pm_thickness_data > ( ) ;
/ /
try
{
string pns = "" ;
foreach ( string pn in sPMNumbers )
{
if ( pn . Trim ( ) . Length > 0 )
{
pns + = ( "'" + pn . Trim ( ) + "'," ) ;
}
}
if ( pns . Length > 0 )
{
pns = pns . Substring ( 0 , pns . Length - 1 ) ;
}
/ /
string cmdText = $"SELECT * FROM pm_thickness_data where pm_number in (" + pns + ") ;" ;
DataSet dataSet = DB . ExecuteDataset ( cmdText ) ;
if ( dataSet = = null )
{
return null ;
}
if ( dataSet . Tables . Count = = 0 | | dataSet . Tables [ 0 ] . Rows . Count = = 0 )
{
return null ;
}
for ( int i = 0 ; i < dataSet . Tables [ 0 ] . Rows . Count ; i + + )
{
pm_thickness_data p = new pm_thickness_data ( ) ;
p . pm_number = dataSet . Tables [ 0 ] . Rows [ i ] [ "pm_number" ] . ToString ( ) ;
p . coating1 = dataSet . Tables [ 0 ] . Rows [ i ] [ "coating1" ] is DBNull ? 0 : Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "coating1" ] ) ;
p . max1 = dataSet . Tables [ 0 ] . Rows [ i ] [ "max1" ] is DBNull ? 0 : Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "max1" ] ) ;
p . coating2 = dataSet . Tables [ 0 ] . Rows [ i ] [ "coating2" ] is DBNull ? 0 : Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "coating2" ] ) ;
p . max2 = dataSet . Tables [ 0 ] . Rows [ i ] [ "max2" ] is DBNull ? 0 : Convert . ToDouble ( dataSet . Tables [ 0 ] . Rows [ i ] [ "max2" ] ) ;
/ /
liPMData . Add ( p ) ;
}
}
catch ( Exception ex )
{
liPMData = null ;
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "GetPMInfoByPNNumbers" ) ;
}
/ /
return liPMData ;
}
public static void ClearPMInfoByPMNumber ( string sNumber , string daxiao , string sCoating , string sMax )
{
if ( sNumber = = "" )
{
return ;
}
/ /
try
{
string cmd = "" ;
if ( daxiao = = "xiao" )
{
cmd = string . Format ( "update pm_thickness_data set " +
"coating1={1}, max1={2}" +
" where pm_number='{0}' " ,
sNumber ,
sCoating ,
sMax ) ;
}
else if ( daxiao = = "da" )
{
cmd = string . Format ( "update pm_thickness_data set " +
"coating2={1}, max2={2}" +
" where pm_number='{0}' " ,
sNumber ,
sCoating ,
sMax ) ;
}
/ /
if ( cmd ! = "" )
{
DB . Insert ( cmd ) ;
}
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "ClearTrayInfoByTrayNumber" ) ;
}
}
public static bool UpdatePMInfoByPMNumberTrans ( string sPMNumber , string sCol , string sValue )
{
if ( sPMNumber . Trim ( ) = = "" )
{
return false ;
}
/ /
try
{
string sTime = DateTime . Now . ToLongTimeString ( ) ;
List < string > liCmd = new List < string > ( ) ;
string cmd = "" ;
cmd = string . Format ( "update pm_thickness_data set " + sCol + "={1}" + " where pm_number='{0}' " +
" and EXISTS(select * from pm_thickness_data where pm_number like '{0}') " ,
sPMNumber ,
Convert . ToDouble ( sValue )
) ;
liCmd . Add ( cmd ) ;
cmd = string . Format ( "insert into pm_thickness_data(pm_number," + sCol + ")" +
" select '{0}',{1}" +
" from (select 1) tmp WHERE NOT EXISTS(select * from pm_thickness_data where pm_number like '{0}') " ,
sPMNumber ,
Convert . ToDouble ( sValue )
) ;
liCmd . Add ( cmd ) ;
/ /
return DB . ExcuteTransAction ( liCmd ) ;
}
catch ( Exception ex )
{
LOG . Write ( ex , 2 , "WaferDataRecorderEx.cs" , "UpdatePMInfoByPMNumberTrans" ) ;
return false ;
}
}
/// <summary>
/// calculate the GrowthValue and record it
/// </summary>
/// <param name="GrowthRate">μm/hour</param>
/// <param name="Seconds">second</param>
/// <returns></returns>
public static bool Grow ( string wafer_guid , double GrowthRate , double Seconds )
{
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 pm_thickness_data set coating1 = coating1 + {0}, coating2=coating2+{0} where pm_number='PM1' " , sGrowthValue ) ,
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 ;
}
}
}
}