Пример #1
0
    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();
        }
    }
Пример #2
0
    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"));
    }