public void create_array_repair_test_file(DataTable dt, string file_type, EDA_FILE_LCM _EDA_FILE_LCM) { DataTable dt_chip = new DataTable(); DataView dv = new DataView(); dv = dt.DefaultView; dt_chip = dv.ToTable(true, "REPR_STARTTIME", "CHIP_ID"); DataTable dt_index_chip_id = new DataTable(); for (int i = 0; i <= dt_chip.Rows.Count - 1; i++) { //di = new DirectoryInfo(Server.MapPath(".") + "\\RUN_LOG\\" ); //DateTime.Now.ToString("yyyyMMdd") di = new DirectoryInfo(HttpContext.Current.Server.MapPath(".") + "//FILE//T1ARRAY//" + DateTime.Now.ToString("yyyyMMdd")); //DateTime.Now.ToString("yyyyMMdd") //fi = new FileInfo(Server.MapPath(".") + "\\RUN_LOG\\" + DateTime.Now.ToString("yyyyMMdd") + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".log"); fi = new FileInfo(HttpContext.Current.Server.MapPath(".") + "//FILE//T1ARRAY//" + DateTime.Now.ToString("yyyyMMdd") + "//" + dt_chip.Rows[i]["CHIP_ID"] + "." + file_type); if (!di.Exists) { di.Create(); //目錄不存在 產生目錄 } if (fi.Exists == true) { //檔案存在 寫檔案 //sw = File.AppendText(Server.MapPath(".") + "\\RUN_LOG\\" + DateTime.Now.ToString("yyyyMMdd") + ".log"); sw = File.AppendText(HttpContext.Current.Server.MapPath(".") + "//FILE//T1ARRAY//" + DateTime.Now.ToString("yyyyMMdd") + "//" + dt_chip.Rows[i]["CHIP_ID"] + "." + file_type); } else { sw = fi.CreateText(); //檔案不存在 產生檔案 } dv.RowFilter = "CHIP_ID='" + dt_chip.Rows[i]["CHIP_ID"].ToString() + "'"; dv.Sort = "REPR_STARTTIME"; dt_index_chip_id = dv.ToTable(); string aaa = ""; for (int j = 0; j <= dt_index_chip_id.Rows.Count - 1; j++) { #region initial data _EDA_FILE_LCM.T_FLAG = "T"; _EDA_FILE_LCM.G_FLAG = "G"; _EDA_FILE_LCM.CHIP_ID = dt_index_chip_id.Rows[j]["CHIP_ID"].ToString(); _EDA_FILE_LCM.G_2_FLAG = dt_index_chip_id.Rows[j]["G_2_FLAG"].ToString(); _EDA_FILE_LCM.SPEC_FLAG = dt_index_chip_id.Rows[j]["SPEC_FLAG"].ToString(); _EDA_FILE_LCM.PRODUCT_ID = dt_index_chip_id.Rows[j]["PRODUCT_ID"].ToString(); _EDA_FILE_LCM.TEST_EQUIP_ID = dt_index_chip_id.Rows[j]["TEST_EQUIP_ID"].ToString(); _EDA_FILE_LCM.TEST_STARTTIME = dt_index_chip_id.Rows[j]["TEST_STARTTIME"].ToString(); _EDA_FILE_LCM.TEST_ENDTIME = dt_index_chip_id.Rows[j]["TEST_ENDTIME"].ToString(); _EDA_FILE_LCM.REPR_EQUIP_ID = dt_index_chip_id.Rows[j]["REPR_EQUIP_ID"].ToString(); _EDA_FILE_LCM.OPERATOR_ID = dt_index_chip_id.Rows[j]["OPERATOR_ID"].ToString(); _EDA_FILE_LCM.REPR_STARTTIME = dt_index_chip_id.Rows[j]["REPR_STARTTIME"].ToString(); _EDA_FILE_LCM.REPR_ENDTIME = dt_index_chip_id.Rows[j]["REPR_ENDTIME"].ToString(); _EDA_FILE_LCM.LOT_TYPE = dt_index_chip_id.Rows[j]["LOT_TYPE"].ToString(); _EDA_FILE_LCM.SPEC1_FLAG = dt_index_chip_id.Rows[j]["SPEC1_FLAG"].ToString(); _EDA_FILE_LCM.GLASS_ID = dt_index_chip_id.Rows[j]["GLASS_ID"].ToString(); _EDA_FILE_LCM.SPEC2_FLAG = dt_index_chip_id.Rows[j]["SPEC2_FLAG"].ToString(); //aaa = Convert.ToString(j + 1); aaa = String.Format("{0:000}", j + 1); // 輸出 0001 _EDA_FILE_LCM.AP_COUNT = aaa; _EDA_FILE_LCM.S = dt_index_chip_id.Rows[j]["S"].ToString(); _EDA_FILE_LCM.G = dt_index_chip_id.Rows[j]["G"].ToString(); _EDA_FILE_LCM.RETYPE = dt_index_chip_id.Rows[j]["RETYPE"].ToString(); _EDA_FILE_LCM.REASON = dt_index_chip_id.Rows[j]["REASON"].ToString(); _EDA_FILE_LCM.RT = dt_index_chip_id.Rows[j]["RT"].ToString(); _EDA_FILE_LCM.SPEC3_FLAG = dt_index_chip_id.Rows[j]["SPEC3_FLAG"].ToString(); _EDA_FILE_LCM.SPEC4_FLAG = dt_index_chip_id.Rows[j]["SPEC4_FLAG"].ToString(); #endregion if (j == 0) { // First Row sw.WriteLine(_EDA_FILE_LCM.T_FLAG + " " + _EDA_FILE_LCM.G_FLAG + " " + _EDA_FILE_LCM.CHIP_ID + " " + _EDA_FILE_LCM.G_2_FLAG + " " + _EDA_FILE_LCM.SPEC_FLAG + " " + _EDA_FILE_LCM.PRODUCT_ID + " " + _EDA_FILE_LCM.TEST_EQUIP_ID + " " + _EDA_FILE_LCM.TEST_STARTTIME + " " + _EDA_FILE_LCM.TEST_ENDTIME + " " + _EDA_FILE_LCM.REPR_EQUIP_ID + " " + _EDA_FILE_LCM.OPERATOR_ID + " " + _EDA_FILE_LCM.REPR_STARTTIME + " " + _EDA_FILE_LCM.REPR_ENDTIME + " " + _EDA_FILE_LCM.LOT_TYPE + " " + _EDA_FILE_LCM.SPEC1_FLAG + " " + _EDA_FILE_LCM.GLASS_ID); // Second Row sw.WriteLine(_EDA_FILE_LCM.SPEC2_FLAG); } // Third Row 3~N sw.WriteLine(_EDA_FILE_LCM.AP_COUNT + " " + _EDA_FILE_LCM.S + " " + _EDA_FILE_LCM.G + " " + _EDA_FILE_LCM.RETYPE + " " + _EDA_FILE_LCM.REASON + " " + _EDA_FILE_LCM.RT + " " + _EDA_FILE_LCM.RETYPE + " " + _EDA_FILE_LCM.SPEC3_FLAG); // last Row Add Finished symbol '@' if (j == dt_index_chip_id.Rows.Count - 1) { sw.WriteLine(_EDA_FILE_LCM.SPEC4_FLAG); } } sw.Close(); } }
public void create_array_repair_test_file_ini() { string test_step = "'1920', 'S920', 'P920'"; string repair_step = "'1930', 'S930', 'P930'"; EDA_FILE_LCM _EDA_FILE_LCM = new EDA_FILE_LCM(); sql_temp1 = @" select 'T' as T_FLAG, 'G' as G_FLAG, RPAD(RTRIM('G'), 2, ' ') as G_2_FLAG, '****' as spec_flag, '*********** ********* ************** ************** ****** ********* ****** ************** **************' as spec1_flag, '>No Data Gate Code Repr Deft Ty RT T1 T2 R Analysis Mod ADC DefectPictureName Code Repr Deft Ty RT DefectPictureName ' as spec2_flag, '** * OTHERS * *********************** **** ************ ** ***********************' as spec3_flag, '@' as spec4_flag, ot3.step_id, 'Y'||SUBSTR(ot2.CHIP_ID,7,20) as CHIP_ID , ot3.GLASS_ID, RPAD(RTRIM(ot4.item3), 4, ' ') as lot_type, ot3.LOT_ID, RPAD(RTRIM(ot3.PRODUCT_ID), 8, ' ') as PRODUCT_ID, RPAD(RTRIM(ot3.EQUIP_ID), 9, ' ') as repr_EQUIP_ID, to_char(ot3.GLASS_START_TIME,'yyyyMMddHH24MISS') as REPR_STARTTIME, to_char(ot3.UPDATE_TIME,'yyyyMMddHH24MISS') as REPR_ENDTIME, RPAD(RTRIM(ot3.ITEM2), 8, ' ') as operator_id, case when RPAD(RTRIM(ot3.TEST_EQID), 9, ' ') is null then '*********' else RPAD(RTRIM(ot3.TEST_EQID), 9, ' ') end as TEST_EQUIP_ID, case when to_char(ot3.TEST_STARTTIME,'yyyyMMddHH24MISS') is null then '**************' else to_char(ot3.TEST_STARTTIME,'yyyyMMddHH24MISS') end as TEST_STARTTIME, case when to_char(ot3.TEST_ENDTIME,'yyyyMMddHH24MISS') is null then '**************' else to_char(ot3.TEST_ENDTIME,'yyyyMMddHH24MISS')end as TEST_ENDTIME, LPAD(LTRIM(s), 5, '0') as s, LPAD(LTRIM(g), 5, '0') as g, substr(ot2.Item2,2,10) as RETYPE, ot2.item4 as defect_judge, ot2.item5 as defect_result, case when substr(ot2.item51,0,12) is null then '************' else RPAD(RTRIM(substr(ot2.item51,0,12)), 12, ' ')end as reason, case when ot2.item4='AR' and ot2.item5='2DP' then 'D ' when ot2.item4='AR' and ot2.item5='DP' then 'N ' when ot2.item4='AR' and ot2.item5='NP' then 'G ' when ot2.item4='NR' and ot2.item5='NP' then 'G ' when ot2.item4='F' then 'B ' when ot2.item4='MD' then 'X ' when ot2.item4='CP' then 'L ' when ot2.item4='CR' then 'L ' when ot2.item4='NR' and ot2.item5='BP' then 'B ' when ot2.item4='NR' and ot2.item5='DP' then 'N ' else '**' end as RT from (select t.*, ot1.equip_id as test_eqid, ot1.glass_start_time as test_starttime, ot1.update_time as test_endtime from lcdsys.array_glass_t t, ( select t.* from lcdsys.array_glass_t t where t.step_id in ({0}) ) ot1 where t.step_id in ({1}) and t.glass_start_time >= to_date('{2}', 'yyyyMMddHH24') and t.glass_start_time < to_date('{3}', 'yyyyMMddHH24') and t.glass_id = ot1.glass_id(+) ) ot3, lcdsys.array_defect_t ot2, lcdsys.array_lot_hst_t ot4 where ot3.step_id = ot2.step_id and ot3.glass_start_time = ot2.glass_start_time and ot3.glass_id = ot2.glass_id and ot2.ITEM2 <> '-' and ot3.lot_id=ot4.lot_id and ot3.step_id=ot4.step_id "; // sql_temp1 = string.Format(sql_temp1, test_step, repair_step, yesturday_shiftday,today_shiftday); sql_temp1 = sql_temp1.Replace("{0}", test_step).Replace("{1}", repair_step).Replace("{2}", yesturday_shiftday).Replace("{3}", today_shiftday); //OracleCommand cmd = new OracleCommand(sql_temp1, orcn); //OracleDataAdapter da=new OracleDataAdapter(cmd); //DataSet ds=new DataSet(); //da.Fill(ds,"test"); create_array_repair_test_file(func.get_dataSet_access_oracle_client(sql_temp1, conn).Tables[0], "txt", _EDA_FILE_LCM); GridView1.DataSource = func.get_dataSet_access_oracle_client(sql_temp1, conn); GridView1.DataBind(); System.Diagnostics.Process.Start(Server.MapPath("winrar.exe"), " a -ep " + Server.MapPath(".") + "//FILE//T1ARRAY//" + DateTime.Now.ToString("yyyyMMdd") + ".rar" + " " + Server.MapPath(".") + "//FILE//T1ARRAY//" + DateTime.Now.ToString("yyyyMMdd")); }