예제 #1
0
        private void OpRevCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            CaxLoading.RunDlg();
            OISTree.Nodes.Clear();
            comPEMain = session.QueryOver <Com_PEMain>()
                        .Where(x => x.partName == PartNoCombo.Text)
                        .Where(x => x.customerVer == CusRevCombo.Text)
                        .Where(x => x.opVer == OpRevCombo.Text)
                        .SingleOrDefault <Com_PEMain>();

            listComPartOperation = session.QueryOver <Com_PartOperation>().Where(x => x.comPEMain == comPEMain).List();

            foreach (Com_PartOperation i in listComPartOperation)
            {
                status = cGetOISData.InitializeOISTree(i, OISTree);
                if (!status)
                {
                    MessageBox.Show("製程資料取得失敗,請聯繫開發工程師");
                    CaxLoading.CloseDlg();
                    this.Close();
                    return;
                }
            }
            CaxLoading.CloseDlg();
        }
        public static bool SetOp1Data(Com_PEMain comPEMain, ComboBoxEx Op1Combobox)
        {
            try
            {
                //IList<Com_PartOperation> comPartOperation = session.QueryOver<Com_PartOperation>()
                //                                            .Where(x => x.comPEMain == comPEMain)
                //                                            .OrderBy(x => x.operation1).Asc
                //                                            .List<Com_PartOperation>();
                IList <Com_PartOperation> comPartOperation = new List <Com_PartOperation>();
                CaxSQL.GetListCom_PartOperation(comPEMain, out comPartOperation);


                Op1Combobox.DisplayMember = "operation1";
                Op1Combobox.ValueMember   = "partOperationSrNo";
                //Op1Combobox.DataSource = comPartOperation;
                foreach (Com_PartOperation i in comPartOperation)
                {
                    Op1Combobox.Items.Add(i);
                }
            }
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }
예제 #3
0
        private void InitialLabel(PartInfo sPartInfo, Dictionary <string, List <string> > DicToolNoControl)
        {
            try
            {
                //設定基礎資料資訊
                CusName.Text = sPartInfo.CusName;
                PartNo.Text  = sPartInfo.PartNo;
                CusRev.Text  = sPartInfo.CusRev;
                OpRev.Text   = sPartInfo.OpRev;
                OIS.Text     = sPartInfo.OpNum;
                ToolNoCombo.Items.AddRange(DicToolNoControl.Keys.ToArray());

                //由料號取得DB中PEMain的資訊
                comPEMain = session.QueryOver <Com_PEMain>()
                            .Where(x => x.partName == sPartInfo.PartNo)
                            .And(x => x.customerVer == sPartInfo.CusRev)
                            .And(x => x.opVer == sPartInfo.OpRev)
                            .SingleOrDefault <Com_PEMain>();

                //由PEMain與OIS取得DB中PartOperation的資訊
                comPartOperation = session.QueryOver <Com_PartOperation>()
                                   .Where(x => x.comPEMain == comPEMain)
                                   .And(x => x.operation1 == sPartInfo.OpNum)
                                   .SingleOrDefault <Com_PartOperation>();

                //由PartOperation取得DB中DraftingVer的資訊
                comMEMain = session.QueryOver <Com_MEMain>()
                            .Where(x => x.comPartOperation == comPartOperation)
                            .List <Com_MEMain>();

                //設定圖版
                foreach (Com_MEMain i in comMEMain)
                {
                    DraftingRev.Items.Add(i.draftingVer);
                }

                if (DraftingRev.Items.Count == 1)
                {
                    DraftingRev.Text = DraftingRev.Items[0].ToString();
                }

                //設定ToolPathPanel
                foreach (KeyValuePair <string, List <string> > kvp in DicToolNoControl)
                {
                    foreach (string i in kvp.Value)
                    {
                        GridRow row = new GridRow(kvp.Key, i);
                        panel.Rows.Add(row);
                    }
                }
            }
            catch (System.Exception ex)
            {
            }
        }
예제 #4
0
 public static bool GetCom_PartOperation(string op1, Com_PEMain comPEMain, out Com_PartOperation comPartOperation)
 {
     comPartOperation = new Com_PartOperation();
     try
     {
         comPartOperation = FixInsUploadDlg.session.QueryOver <Com_PartOperation>().Where(x => x.comPEMain.peSrNo == comPEMain.peSrNo).Where(x => x.operation1 == op1).SingleOrDefault <Com_PartOperation>();
         if (comPartOperation == null)
         {
             System.Windows.Forms.MessageBox.Show("資料庫無此製程序,無法上傳");
             return(false);
         }
     }
     catch (System.Exception ex)
     {
         return(false);
     }
     return(true);
 }
예제 #5
0
 public static bool GetCom_PEMain(string[] splitFullPath, out Com_PEMain comPEMain)
 {
     comPEMain = new Com_PEMain();
     try
     {
         comPEMain = FixInsUploadDlg.session.QueryOver <Com_PEMain>().Where(x => x.partName == splitFullPath[4]).Where(x => x.customerVer == splitFullPath[5]).Where(x => x.opVer == splitFullPath[6]).SingleOrDefault();
         if (comPEMain == null)
         {
             System.Windows.Forms.MessageBox.Show("資料庫無此料號,無法上傳");
             return(false);
         }
     }
     catch (System.Exception ex)
     {
         return(false);
     }
     return(true);
 }
예제 #6
0
 public static bool GetCom_PartOperation(PartInfo sPartInfo, Com_PEMain comPEMain, out Com_PartOperation comPartOperation)
 {
     comPartOperation = new Com_PartOperation();
     try
     {
         comPartOperation = session.QueryOver <Com_PartOperation>()
                            .Where(x => x.comPEMain.peSrNo == comPEMain.peSrNo)
                            .And(x => x.operation1 == sPartInfo.OpNum)
                            .SingleOrDefault <Com_PartOperation>();
         if (comPartOperation == null)
         {
             return(false);
         }
     }
     catch (System.Exception ex)
     {
         return(false);
     }
     return(true);
 }
예제 #7
0
 public static bool GetCom_PEMain(PartInfo sPartInfo, out Com_PEMain comPEMain)
 {
     comPEMain = new Com_PEMain();
     try
     {
         comPEMain = session.QueryOver <Com_PEMain>().Where(x => x.partName == sPartInfo.PartNo)
                     .Where(x => x.customerVer == sPartInfo.CusRev)
                     .Where(x => x.opVer == sPartInfo.OpRev)
                     .SingleOrDefault <Com_PEMain>();
         if (comPEMain == null)
         {
             return(false);
         }
     }
     catch (System.Exception ex)
     {
         return(false);
     }
     return(true);
 }
        public static bool GetControlPlanData(Com_PEMain comPEMain, out Dictionary <DB_CPKey, List <DB_CPValue> > DicCPData)
        {
            DicCPData = new Dictionary <DB_CPKey, List <DB_CPValue> >();
            try
            {
                bool IsCP = false;
                for (int i = 0; i < OutputForm.PEPanel.Rows.Count; i++)
                {
                    if (((bool)OutputForm.PEPanel.GetCell(i, 0).Value) == false || OutputForm.PEPanel.GetCell(i, 1).Value.ToString() != "Control Plan")
                    {
                        continue;
                    }

                    IsCP = true;
                }

                if (!IsCP)
                {
                    return(true);
                }

                IList <Com_PartOperation> listComPartOperation = session.QueryOver <Com_PartOperation>()
                                                                 .Where(x => x.comPEMain == comPEMain)
                                                                 .OrderBy(x => x.operation1).Asc
                                                                 .List <Com_PartOperation>();

                foreach (Com_PartOperation i in listComPartOperation)
                {
                    DB_CPKey sDB_CPKey = new DB_CPKey();
                    sDB_CPKey.PartNo   = comPEMain.partName;
                    sDB_CPKey.CusVer   = comPEMain.customerVer;
                    sDB_CPKey.OpVer    = comPEMain.opVer;
                    sDB_CPKey.PartDesc = comPEMain.partDes;
                    sDB_CPKey.excelTemplateFilePath = string.Format(@"{0}\{1}\{2}\{3}\{4}.xls"
                                                                    , OutputForm.EnvVariables.env
                                                                    , "PE_Config"
                                                                    , "Config"
                                                                    , "ControlPlan"
                                                                    , "ControlPlan");

                    DB_CPValue sDB_CPValue = new DB_CPValue();
                    sDB_CPValue.Op1 = i.operation1;
                    sDB_CPValue.Op2 = session.QueryOver <Sys_Operation2>().Where(x => x.operation2SrNo == i.sysOperation2.operation2SrNo)
                                      .SingleOrDefault().operation2Name;
                    Com_MEMain comMEMain = session.QueryOver <Com_MEMain>().Where(x => x.comPartOperation == i).SingleOrDefault <Com_MEMain>();
                    //過濾製程中有外包的尺寸,不可顯示在CP上避免客戶稽核,EX:250有外包則回來的IQC不能顯示在CP上
                    sDB_CPValue.comDimension = session.QueryOver <Com_Dimension>()
                                               .Where(x => x.comMEMain == comMEMain)
                                               .OrderBy(x => x.ballon).Asc.List <Com_Dimension>();
                    foreach (var o in sDB_CPValue.comDimension.ToArray())
                    {
                        if (sDB_CPValue.Op1 != "001" & o.excelType == "IQC")
                        {
                            sDB_CPValue.comDimension.Remove(o);
                        }
                    }

                    Dictionary <int, IList <Com_Dimension> > DicBalloonData = new Dictionary <int, IList <Com_Dimension> >();
                    foreach (Com_Dimension ii in sDB_CPValue.comDimension)
                    {
                        IList <Com_Dimension> dimension = new List <Com_Dimension>();
                        status = DicBalloonData.TryGetValue(ii.ballon, out dimension);
                        if (!status)
                        {
                            dimension = new List <Com_Dimension>();
                            dimension.Add(ii);
                            DicBalloonData.Add(ii.ballon, dimension);
                        }
                        else
                        {
                            dimension.Add(ii);
                            DicBalloonData[ii.ballon] = dimension;
                        }
                    }
                    sDB_CPValue.DicBalloonData = DicBalloonData;



                    List <DB_CPValue> listDB_CPValue = new List <DB_CPValue>();
                    status = DicCPData.TryGetValue(sDB_CPKey, out listDB_CPValue);
                    if (!status)
                    {
                        listDB_CPValue = new List <DB_CPValue>();
                        listDB_CPValue.Add(sDB_CPValue);
                        DicCPData.Add(sDB_CPKey, listDB_CPValue);
                    }
                    else
                    {
                        listDB_CPValue.Add(sDB_CPValue);
                        DicCPData[sDB_CPKey] = listDB_CPValue;
                    }
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(false);
            }
            return(true);
        }
        public static bool GetPFDData(Com_PEMain comPEMain, out Dictionary <DB_PEMain, List <DB_PartOperation> > DicPFDData)
        {
            DicPFDData = new Dictionary <DB_PEMain, List <DB_PartOperation> >();
            try
            {
                for (int i = 0; i < OutputForm.PEPanel.Rows.Count; i++)
                {
                    if (((bool)OutputForm.PEPanel.GetCell(i, 0).Value) == false)
                    {
                        continue;
                    }

                    if (OutputForm.PEPanel.GetCell(i, 1).Value.ToString() != "PFD")
                    {
                        continue;
                    }

                    DB_PEMain sDB_PEMain = new DB_PEMain();
                    sDB_PEMain.PartNo = comPEMain.partName;
                    sDB_PEMain.CusVer = comPEMain.customerVer;
                    sDB_PEMain.OpVer  = comPEMain.opVer;
                    //sDB_PEMain.excelTemplateFilePath = string.Format(@"{0}\{1}\{2}\{3}\{4}.xls"
                    //                                                    , OutputForm.EnvVariables.env
                    //                                                    , "PE_Config"
                    //                                                    , "Config"
                    //                                                    , "PFD"
                    //                                                    , "PFD");
                    sDB_PEMain.excelTemplateFilePath = string.Format(@"{0}\{1}\{2}\{3}\{4}.xls"
                                                                     , OutputForm.EnvVariables.env
                                                                     , "PE_Config"
                                                                     , "Config"
                                                                     , "PFD"
                                                                     , "PFD");
                    //sDB_PEMain.excelTemplateFilePath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}.xls"
                    //                                                    , "\\\\192.168.35.1"
                    //                                                    , "cax"
                    //                                                    , "Globaltek"
                    //                                                    , "PE_Config"
                    //                                                    , "Config"
                    //                                                    , "PFD"
                    //                                                    , "PFD");

                    IList <Com_PartOperation> listComPartOperation = session.QueryOver <Com_PartOperation>()
                                                                     .Where(x => x.comPEMain == comPEMain)
                                                                     .OrderBy(x => x.operation1).Asc
                                                                     .List <Com_PartOperation>();

                    List <DB_PartOperation> listDBPartOperation = new List <DB_PartOperation>();
                    foreach (Com_PartOperation j in listComPartOperation)
                    {
                        DB_PartOperation sDB_PartOperation = new DB_PartOperation();
                        sDB_PartOperation.Op1  = j.operation1;
                        sDB_PartOperation.Op2  = j.sysOperation2.operation2Name;
                        sDB_PartOperation.Form = j.form;
                        listDBPartOperation.Add(sDB_PartOperation);
                    }
                    DicPFDData.Add(sDB_PEMain, listDBPartOperation);
                }
            }
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }
        public static bool SetPEPanelData(Com_PEMain comPEMain, ref GridPanel PEPanel)
        {
            try
            {
                #region 插入PFD
                object[] o = new object[] { false, "PFD", comPEMain.customerVer, comPEMain.opVer
                                            , string.Format("{0}_{1}_{2}資料夾"
                                                            , comPEMain.partName
                                                            , comPEMain.customerVer
                                                            , comPEMain.opVer) };
                PEPanel.Rows.Add(new GridRow(o));
                PEPanel.GetCell(0, 0).Value = false;
                #endregion

                #region (註解)判斷所有製程是否都有上傳MEMain,如果有上傳才顯示Control Plan

                /*
                 * IList<Com_PartOperation> listComPartOperation = session.QueryOver<Com_PartOperation>()
                 *                                                     .Where(x => x.comPEMain == comPEMain).List<Com_PartOperation>();
                 *
                 * bool IsComplete = true;
                 * foreach (Com_PartOperation i in listComPartOperation)
                 * {
                 *  IList<Com_MEMain> comMEMain = session.QueryOver<Com_MEMain>()
                 *                                       .Where(x => x.comPartOperation == i).List<Com_MEMain>();
                 *  if (comMEMain.Count > 0)
                 *      continue;
                 *  else
                 *  {
                 *      IsComplete = false;
                 *      break;
                 *  }
                 * }
                 *
                 * if (IsComplete)
                 * {
                 *  o = new object[] { false, "Control Plan", comPEMain.customerVer, comPEMain.opVer
                 *                              , string.Format("{0}_{1}_{2}資料夾"
                 *                              , comPEMain.partName
                 *                              , comPEMain.customerVer
                 *                              , comPEMain.opVer) };
                 *  PEPanel.Rows.Add(new GridRow(o));
                 *  PEPanel.GetCell(1, 0).Value = false;
                 * }
                 */
                #endregion

                #region 插入Control Plan
                o = new object[] { false, "Control Plan", comPEMain.customerVer, comPEMain.opVer
                                   , string.Format("{0}_{1}_{2}資料夾"
                                                   , comPEMain.partName
                                                   , comPEMain.customerVer
                                                   , comPEMain.opVer) };
                PEPanel.Rows.Add(new GridRow(o));
                PEPanel.GetCell(1, 0).Value = false;
                #endregion
            }
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }
        public static bool SetPEPanelData(Sys_Customer customerSrNo, string partNo, string cusVer, string opVer, ref GridPanel PEPanel)
        {
            try
            {
                Com_PEMain comPEMain = session.QueryOver <Com_PEMain>()
                                       .Where(x => x.sysCustomer == customerSrNo)
                                       .Where(x => x.partName == partNo)
                                       .Where(x => x.customerVer == cusVer)
                                       .Where(x => x.opVer == opVer)
                                       .SingleOrDefault <Com_PEMain>();

                #region 插入Panel
                object[] o = new object[] { false, "PFD", cusVer, opVer
                                            , string.Format("{0}_{1}_{2}資料夾"
                                                            , partNo
                                                            , comPEMain.customerVer
                                                            , comPEMain.opVer) };
                PEPanel.Rows.Add(new GridRow(o));
                PEPanel.GetCell(0, 0).Value = false;

                #region 判斷所有製程是否都有上傳MEMain,如果有上傳才顯示Control Plan
                IList <Com_PartOperation> listComPartOperation = session.QueryOver <Com_PartOperation>()
                                                                 .Where(x => x.comPEMain == comPEMain).List <Com_PartOperation>();

                bool IsComplete = true;
                foreach (Com_PartOperation i in listComPartOperation)
                {
                    IList <Com_MEMain> comMEMain = session.QueryOver <Com_MEMain>()
                                                   .Where(x => x.comPartOperation == i).List <Com_MEMain>();
                    if (comMEMain.Count > 0)
                    {
                        continue;
                    }
                    else
                    {
                        IsComplete = false;
                        break;
                    }
                }

                if (IsComplete)
                {
                    o = new object[] { false, "Control Plan", cusVer, opVer
                                       , string.Format("{0}_{1}_{2}資料夾"
                                                       , partNo
                                                       , comPEMain.customerVer
                                                       , comPEMain.opVer) };
                    PEPanel.Rows.Add(new GridRow(o));
                    PEPanel.GetCell(1, 0).Value = false;
                }

                #endregion


                #endregion
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(false);
            }
            return(true);
        }
예제 #12
0
        private void OK_Click(object sender, EventArgs e)
        {
            try
            {
                #region (註解中)檢查PC有無Excel在執行
                //bool flag = false;
                //foreach (var item in Process.GetProcesses())
                //{
                //    if (item.ProcessName == "EXCEL")
                //    {
                //        flag = true;
                //        break;
                //    }
                //}
                //if (flag)
                //{
                //    MessageBox.Show("請先關閉所有Excel再重新執行輸出,如沒有EXCEL在執行,請開啟工作管理員關閉背景EXCEL");
                //    return;
                //}
                #endregion

                bool flag = false;
                Dictionary <string, List <Sys_TipTop> > DicToolERP = new Dictionary <string, List <Sys_TipTop> >();
                if (productNo.Text != "")
                {
                    if (!File.Exists("D:\\Knife.xls"))
                    {
                        MessageBox.Show("TipTop的文件不存在,無法比對資料,僅由UG資料輸出");
                        flag = true;
                        goto ExportFromUG;
                    }
                    string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=D:\\Knife.xls;" + "Extended Properties='Excel 8.0;" + "HDR=YES;" + "IMEX=1'";

                    OleDbConnection GetXLS = new OleDbConnection(strCon);
                    GetXLS.Open();
                    System.Data.DataTable Table = GetXLS.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                    //查詢此Excel所有的工作表名稱

                    //List<Sys_TipTop> ListSheetA = new List<Sys_TipTop>();
                    string SelectSheetName = "";
                    foreach (DataRow row in Table.Rows)
                    {
                        //抓取Xls各個Sheet的名稱(+'$')-有的名稱需要加名稱'',有的不用
                        SelectSheetName = (string)row["TABLE_NAME"];

                        //工作表名稱有特殊字元、空格,需加'工作表名稱$',ex:'Sheet_A$'
                        //工作表名稱沒有特殊字元、空格,需加工作表名稱$,ex:SheetA$
                        //所有工作表名稱為Sheet1,讀取此工作表的內容
                        if (SelectSheetName == "工作表1$")
                        {
                            //select 工作表名稱
                            OleDbCommand    cmSheetA = new OleDbCommand(" SELECT * FROM [工作表1$] ", GetXLS);
                            OleDbDataReader drSheetA = cmSheetA.ExecuteReader();

                            //讀取工作表SheetA資料
                            //List<string> ListSheetA = new List<string>();

                            while (drSheetA.Read())
                            {
                                if (drSheetA[0].ToString() == "")
                                {
                                    break;
                                }
                                List <Sys_TipTop> ListSheetA = new List <Sys_TipTop>();
                                status = DicToolERP.TryGetValue(drSheetA[0].ToString(), out ListSheetA);
                                if (!status)
                                {
                                    ListSheetA = new List <Sys_TipTop>();
                                    Sys_TipTop sSys_TipTop = new Sys_TipTop();
                                    sSys_TipTop.productNo      = drSheetA[0].ToString();
                                    sSys_TipTop.stepNo         = drSheetA[1].ToString();
                                    sSys_TipTop.partNo         = drSheetA[2].ToString();
                                    sSys_TipTop.ois            = drSheetA[3].ToString();
                                    sSys_TipTop.erpNo          = drSheetA[4].ToString();
                                    sSys_TipTop.toolNo         = drSheetA[5].ToString();
                                    sSys_TipTop.usedCount      = drSheetA[6].ToString();
                                    sSys_TipTop.toolLife       = drSheetA[7].ToString();
                                    sSys_TipTop.toolChangeTime = drSheetA[8].ToString();
                                    sSys_TipTop.toolSpec       = drSheetA[9].ToString();
                                    ListSheetA.Add(sSys_TipTop);
                                    DicToolERP.Add(drSheetA[0].ToString(), ListSheetA);
                                }
                                else
                                {
                                    Sys_TipTop sSys_TipTop = new Sys_TipTop();
                                    sSys_TipTop.productNo      = drSheetA[0].ToString();
                                    sSys_TipTop.stepNo         = drSheetA[1].ToString();
                                    sSys_TipTop.partNo         = drSheetA[2].ToString();
                                    sSys_TipTop.ois            = drSheetA[3].ToString();
                                    sSys_TipTop.erpNo          = drSheetA[4].ToString();
                                    sSys_TipTop.toolNo         = drSheetA[5].ToString();
                                    sSys_TipTop.usedCount      = drSheetA[6].ToString();
                                    sSys_TipTop.toolLife       = drSheetA[7].ToString();
                                    sSys_TipTop.toolChangeTime = drSheetA[8].ToString();
                                    sSys_TipTop.toolSpec       = drSheetA[9].ToString();
                                    ListSheetA.Add(sSys_TipTop);
                                    DicToolERP[drSheetA[0].ToString()] = ListSheetA;
                                }
                            }

                            /*步驟4:關閉檔案*/

                            //結束關閉讀檔(必要,不關會有error)
                            drSheetA.Close();
                            GetXLS.Close();
                        }
                    }
                }
                else
                {
                    flag = true;
                }
ExportFromUG:

                excelApp = new ApplicationClass();
                book     = null;
                sheet    = null;
                oRng     = null;

                excelApp.Visible = false;
                book             = excelApp.Workbooks.Open(ToolListPath);
                sheet            = (Worksheet)book.Sheets[1];
                oRng             = (Range)sheet.Cells;
                oRng[52, 10]     = PartNo;


                //Insert所需欄位並填入資料
                //新版CurrentRow從7開始、ToolNumberColumn從1開始、ToolNameColumn從8開始
                //舊版CurrentRow從8開始、ToolNumberColumn從2開始、ToolNameColumn從3開始
                int
                    CurrentRow           = 6,
                    ToolNumberColumn     = 1,
                    ToolERPColumn        = 2,
                    ToolCutterQtyColumn  = 3,
                    ToolCutterLifeColumn = 4,
                    ToolFluteQtyColumn   = 5,
                    ToolTitleColumn      = 6,
                    ToolSpecColumn       = 8,
                    ToolNoteColumn       = 10;

                //將相同刀號記錄起來,只輸出一筆資料
                Dictionary <string, OperData> DicToolData = new Dictionary <string, OperData>();
                //for (int i = 0; i < panel.Rows.Count; i++)
                //{
                //    OperData toolData = new OperData();
                //    status = DicToolData.TryGetValue(ReplaceToolNumber(panel.GetCell(i, 0).Value.ToString()), out toolData);
                //    if (!status)
                //    {
                //        toolData.ERP_NO = panel.GetCell(i, 1).Value.ToString();
                //        toolData.CUTTER_QTY = panel.GetCell(i, 2).Value.ToString();
                //        toolData.CUTTER_LIFE = panel.GetCell(i, 3).Value.ToString();
                //        toolData.FLUTE_QTY = panel.GetCell(i, 4).Value.ToString();
                //        toolData.TITLE = panel.GetCell(i, 5).Value.ToString();
                //        toolData.SPECIFICATION = panel.GetCell(i, 6).Value.ToString();
                //        toolData.NOTE = panel.GetCell(i, 7).Value.ToString();
                //        DicToolData.Add(ReplaceToolNumber(panel.GetCell(i, 0).Value.ToString()), toolData);
                //    }
                //}

                if (flag)
                {
                    int StartRow = 0, EndRow = 0;
                    oRng = (Range)sheet.Cells;
                    foreach (KeyValuePair <string, List <OperData> > kvp in DicNCData)
                    {
                        if (CurrentNCName != kvp.Key)
                        {
                            continue;
                        }

                        foreach (OperData i in kvp.Value)
                        {
                            CurrentRow = CurrentRow + 1;
                            StartRow   = CurrentRow;
                            oRng[CurrentRow, ToolNumberColumn]     = i.ToolNumber;//暫時不寫TOOL_NO,原因是有些刀子不是用系統掉進來會沒有屬性
                            oRng[CurrentRow, ToolERPColumn]        = i.ERP_NO;
                            oRng[CurrentRow, ToolCutterQtyColumn]  = i.CUTTER_QTY;
                            oRng[CurrentRow, ToolCutterLifeColumn] = i.CUTTER_LIFE;
                            oRng[CurrentRow, ToolFluteQtyColumn]   = i.FLUTE_QTY;
                            oRng[CurrentRow, ToolTitleColumn]      = i.TITLE;
                            oRng[CurrentRow, ToolSpecColumn]       = i.SPECIFICATION;
                            oRng[CurrentRow, ToolNoteColumn]       = i.NOTE;
                            if (i.ACCESSORY != "")
                            {
                                //  xxx!QQ!TC10D20FL5R2SD10L40 ? zxb!zxv!zxc ? 34!23!12
                                string[] SplitAccessory = i.ACCESSORY.Split('?');
                                foreach (string j in SplitAccessory)
                                {
                                    CurrentRow = CurrentRow + 1;
                                    string[] Spliti = j.Split('!');
                                    oRng[CurrentRow, ToolERPColumn]   = Spliti[0];
                                    oRng[CurrentRow, ToolTitleColumn] = Spliti[1];
                                    oRng[CurrentRow, ToolSpecColumn]  = Spliti[2];
                                }
                            }
                            EndRow = CurrentRow;
                            //合併儲存格
                            sheet.get_Range("A" + StartRow, "A" + EndRow).Merge(false);
                        }
                    }
                    //foreach (KeyValuePair<string, OperData> kvp in DicToolData)
                    //{
                    //    CurrentRow = CurrentRow + 1;
                    //    oRng[CurrentRow, ToolNumberColumn] = kvp.Key;
                    //    oRng[CurrentRow, ToolERPColumn] = kvp.Value.ERP_NO;
                    //    oRng[CurrentRow, ToolCutterQtyColumn] = kvp.Value.CUTTER_QTY;
                    //    oRng[CurrentRow, ToolCutterLifeColumn] = kvp.Value.CUTTER_LIFE;
                    //    oRng[CurrentRow, ToolFluteQtyColumn] = kvp.Value.FLUTE_QTY;
                    //    oRng[CurrentRow, ToolTitleColumn] = kvp.Value.TITLE;
                    //    oRng[CurrentRow, ToolSpecColumn] = kvp.Value.SPECIFICATION;
                    //    oRng[CurrentRow, ToolNoteColumn] = kvp.Value.NOTE;
                    //}
                    oRng[51, 10] = "OIS-" + comboBoxNCName.Text.Split('P')[1].Split('_')[0];
                }
                else
                {
                    //判斷TipTopExcel與UG的資料整理出要輸出的資料
                    Dictionary <string, List <Sys_TipTop> > DicExportData = new Dictionary <string, List <Sys_TipTop> >();
                    foreach (KeyValuePair <string, List <Sys_TipTop> > i in DicToolERP)
                    {
                        if (i.Key != productNo.Text)
                        {
                            continue;
                        }

                        foreach (KeyValuePair <string, OperData> j in DicToolData)
                        {
                            foreach (Sys_TipTop k in i.Value)
                            {
                                if (k.ois != ois.Text)
                                {
                                    continue;
                                }

                                if (k.toolNo != j.Key)
                                {
                                    continue;
                                }

                                List <Sys_TipTop> temp = new List <Sys_TipTop>();
                                status = DicExportData.TryGetValue(j.Key, out temp);
                                if (!status)
                                {
                                    temp = new List <Sys_TipTop>();
                                    Sys_TipTop sSys_TipTop = new Sys_TipTop();
                                    sSys_TipTop.productNo      = k.productNo;
                                    sSys_TipTop.stepNo         = k.stepNo;
                                    sSys_TipTop.partNo         = k.partNo;
                                    sSys_TipTop.ois            = k.ois;
                                    sSys_TipTop.erpNo          = k.erpNo;
                                    sSys_TipTop.toolNo         = k.toolNo;
                                    sSys_TipTop.usedCount      = k.usedCount;
                                    sSys_TipTop.toolLife       = k.toolLife;
                                    sSys_TipTop.toolChangeTime = k.toolChangeTime;
                                    sSys_TipTop.toolSpec       = k.toolSpec;
                                    sSys_TipTop.toolUGSpec     = j.Value.SPECIFICATION;
                                    temp.Add(sSys_TipTop);
                                    DicExportData.Add(j.Key, temp);
                                }
                                else
                                {
                                    Sys_TipTop sSys_TipTop = new Sys_TipTop();
                                    sSys_TipTop.productNo      = k.productNo;
                                    sSys_TipTop.stepNo         = k.stepNo;
                                    sSys_TipTop.partNo         = k.partNo;
                                    sSys_TipTop.ois            = k.ois;
                                    sSys_TipTop.erpNo          = k.erpNo;
                                    sSys_TipTop.toolNo         = k.toolNo;
                                    sSys_TipTop.usedCount      = k.usedCount;
                                    sSys_TipTop.toolLife       = k.toolLife;
                                    sSys_TipTop.toolChangeTime = k.toolChangeTime;
                                    sSys_TipTop.toolSpec       = k.toolSpec;
                                    sSys_TipTop.toolUGSpec     = j.Value.SPECIFICATION;
                                    temp.Add(sSys_TipTop);
                                    DicExportData[j.Key] = temp;
                                }
                            }
                        }
                    }

                    oRng = (Range)sheet.Cells;
                    foreach (KeyValuePair <string, List <Sys_TipTop> > kvp in DicExportData)
                    {
                        foreach (Sys_TipTop i in kvp.Value)
                        {
                            CurrentRow = CurrentRow + 1;
                            oRng[CurrentRow, ToolNumberColumn]     = i.toolNo;
                            oRng[CurrentRow, ToolERPColumn]        = i.erpNo;
                            oRng[CurrentRow, ToolCutterQtyColumn]  = "1";
                            oRng[CurrentRow, ToolCutterLifeColumn] = i.toolLife;
                            oRng[CurrentRow, ToolFluteQtyColumn]   = i.usedCount;
                            oRng[CurrentRow, ToolTitleColumn]      = i.toolSpec;
                            oRng[CurrentRow, ToolSpecColumn]       = i.toolUGSpec;
                        }
                    }
                }

                if (Is_Local != null)
                {
                    ISession   session   = MyHibernateHelper.SessionFactory.OpenSession();
                    Com_PEMain comPEMain = new Com_PEMain();
                    #region 由料號查peSrNo
                    try
                    {
                        comPEMain = session.QueryOver <Com_PEMain>().Where(x => x.partName == sPartInfo.PartNo)
                                    .Where(x => x.customerVer == sPartInfo.CusRev)
                                    .Where(x => x.opVer == sPartInfo.OpRev)
                                    .SingleOrDefault <Com_PEMain>();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show("1.資料庫中沒有此料號的紀錄,無法上傳刀具清單資料");
                        return;
                    }
                    #endregion

                    Com_PartOperation comPartOperation = new Com_PartOperation();
                    #region 由peSrNo和OpNum查partOperationSrNo
                    try
                    {
                        comPartOperation = session.QueryOver <Com_PartOperation>()
                                           .Where(x => x.comPEMain.peSrNo == comPEMain.peSrNo)
                                           .Where(x => x.operation1 == sPartInfo.OpNum)
                                           .SingleOrDefault <Com_PartOperation>();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                        MessageBox.Show("2.資料庫中沒有此料號的紀錄,無法上傳刀具清單資料");
                        return;
                    }
                    #endregion

                    #region 比對資料庫TEMain是否有同筆數據
                    IList <Com_TEMain> DBData_ComTEMain = session.QueryOver <Com_TEMain>().List <Com_TEMain>();

                    bool       Is_Exist         = false;
                    Com_TEMain currentComTEMain = new Com_TEMain();
                    foreach (Com_TEMain i in DBData_ComTEMain)
                    {
                        if (i.comPartOperation == comPartOperation && i.ncGroupName == CurrentNCName)
                        {
                            Is_Exist         = true;
                            currentComTEMain = i;
                            break;
                        }
                    }
                    #endregion

                    if (Is_Exist)
                    {
                        #region 刪除Com_ToolList
                        IList <Com_ToolList> DB_ToolList = session.QueryOver <Com_ToolList>()
                                                           .Where(x => x.comTEMain.teSrNo == currentComTEMain.teSrNo).List <Com_ToolList>();
                        using (ITransaction trans = session.BeginTransaction())
                        {
                            foreach (Com_ToolList i in DB_ToolList)
                            {
                                session.Delete(i);
                            }
                            trans.Commit();
                        }
                        #endregion

                        foreach (KeyValuePair <string, List <OperData> > kvp in DicNCData)
                        {
                            if (CurrentNCName != kvp.Key)
                            {
                                continue;
                            }

                            foreach (OperData i in kvp.Value)
                            {
                                Com_ToolList comToolList = new Com_ToolList();
                                comToolList.comTEMain     = currentComTEMain;
                                comToolList.toolNumber    = i.TOOL_NO;
                                comToolList.erpNumber     = i.ERP_NO;
                                comToolList.cutterQty     = i.CUTTER_QTY;
                                comToolList.cutterLife    = i.CUTTER_LIFE;
                                comToolList.fluteQty      = i.FLUTE_QTY;
                                comToolList.title         = i.TITLE;
                                comToolList.specification = i.SPECIFICATION;
                                comToolList.note          = i.NOTE;
                                comToolList.accessory     = i.ACCESSORY;
                                using (ITransaction trans = session.BeginTransaction())
                                {
                                    session.Save(comToolList);
                                    trans.Commit();
                                }
                            }
                        }

                        //foreach (KeyValuePair<string, OperData> kvp in DicToolData)
                        //{
                        //    Com_ToolList comToolList = new Com_ToolList();
                        //    comToolList.comTEMain = currentComTEMain;
                        //    comToolList.toolNumber = kvp.Key;
                        //    comToolList.erpNumber = kvp.Value.ERP_NO;
                        //    comToolList.cutterQty = kvp.Value.CUTTER_QTY;
                        //    comToolList.cutterLife = kvp.Value.CUTTER_LIFE;
                        //    comToolList.fluteQty = kvp.Value.FLUTE_QTY;
                        //    comToolList.title = kvp.Value.TITLE;
                        //    comToolList.specification = kvp.Value.SPECIFICATION;
                        //    comToolList.note = kvp.Value.NOTE;
                        //    using (ITransaction trans = session.BeginTransaction())
                        //    {
                        //        session.Save(comToolList);
                        //        trans.Commit();

                        //    }
                        //}
                    }
                }



                //oRng = (Range)sheet.Cells;
                //foreach (KeyValuePair<string,string> kvp in DicToolData)
                //{
                //    CurrentRow = CurrentRow + 1;
                //    oRng[CurrentRow, ToolNumberColumn] = kvp.Key;
                //    oRng[CurrentRow, ToolNameColumn] = kvp.Value;
                //}



                //oRng = (Range)sheet.Cells;
                //for (int i = 0; i < panel.Rows.Count; i++)
                //{
                //    //取得Row,Column
                //    CurrentRow = CurrentRow + 1;

                //    //新版
                //    oRng[CurrentRow, ToolNumberColumn] = panel.GetCell(i, 1).Value.ToString();
                //    oRng[CurrentRow, ToolNameColumn] = panel.GetCell(i, 2).Value.ToString();

                //    //舊版
                //    //oRng[CurrentRow, OpNameColumn] = panel.GetCell(i, 0).Value.ToString();
                //    //oRng[CurrentRow, ToolNumberColumn] = panel.GetCell(i, 1).Value.ToString();
                //    //oRng[CurrentRow, ToolNameColumn] = panel.GetCell(i, 2).Value.ToString();
                //    //oRng[CurrentRow, ToolDescColumn] = panel.GetCell(i, 3).Value.ToString();
                //}

                MessageBox.Show("刀具清單【完成】");
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                MessageBox.Show("刀具清單【失敗】");
            }
            finally
            {
                book.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                book.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }

            this.Close();
        }
예제 #13
0
        private void InitialLabel(PartInfo sPartInfo, string OpName)
        {
            try
            {
                //設定基礎資料資訊
                CusName.Text = sPartInfo.CusName;
                PartNo.Text  = sPartInfo.PartNo;
                CusRev.Text  = sPartInfo.CusRev;
                OpRev.Text   = sPartInfo.OpRev;
                OIS.Text     = sPartInfo.OpNum;

                //由料號取得DB中PEMain的資訊
                comPEMain = session.QueryOver <Com_PEMain>()
                            .Where(x => x.partName == sPartInfo.PartNo)
                            .And(x => x.customerVer == sPartInfo.CusRev)
                            .And(x => x.opVer == sPartInfo.OpRev)
                            .SingleOrDefault <Com_PEMain>();

                //由PEMain與OIS取得DB中PartOperation的資訊
                comPartOperation = session.QueryOver <Com_PartOperation>()
                                   .Where(x => x.comPEMain == comPEMain)
                                   .And(x => x.operation1 == sPartInfo.OpNum)
                                   .SingleOrDefault <Com_PartOperation>();

                //由PartOperation取得DB中DraftingVer的資訊
                comMEMain = session.QueryOver <Com_MEMain>()
                            .Where(x => x.comPartOperation == comPartOperation)
                            .List <Com_MEMain>();

                foreach (Com_MEMain i in comMEMain)
                {
                    DraftingRev.Items.Add(i.draftingVer);
                }

                if (DraftingRev.Items.Count == 1)
                {
                    DraftingRev.Text = DraftingRev.Items[0].ToString();
                }


                //設定程式資訊
                OperationName.Text = OpName;
                foreach (KeyValuePair <ExportShopDocDlg.ControlDimen_Key, List <ExportShopDocDlg.ControlDimen_Value> > kvp in ExportShopDocDlg.DicControlDimen)
                {
                    if (kvp.Key.OperationName != OpName)
                    {
                        continue;
                    }

                    ToolNo.Text     = kvp.Key.ToolNo;
                    ToolName.Text   = kvp.Key.ToolName;
                    ToolHolder.Text = kvp.Key.ToolHolder;

                    foreach (ExportShopDocDlg.ControlDimen_Value i in kvp.Value)
                    {
                        if (i.ControlBallon == "" || i.TheoryTolRange == "" || i.ControlTolRange == "")
                        {
                            break;
                        }

                        DraftingRev.Text = i.DraftingRev;
                        GridRow row = new GridRow(i.ControlBallon, i.TheoryTolRange, i.ControlTolRange, "刪除");
                        panel.Rows.Add(row);
                    }
                }
            }
            catch (System.Exception ex)
            {
            }
        }
예제 #14
0
        private void Upload_Click(object sender, EventArgs e)
        {
            try
            {
                int          SheetCount  = 0;
                NXOpen.Tag[] SheetTagAry = null;
                theUfSession.Draw.AskDrawings(out SheetCount, out SheetTagAry);
                //判斷是否需要出PDF
                List <DrawingSheet> drawingSheets = new List <DrawingSheet>();
                for (int j = 0; j < SheetCount; j++)
                {
                    drawingSheets.Add((DrawingSheet)NXObjectManager.Get(SheetTagAry[j]));
                }
                if (this.ExportPDF.Checked)
                {
                    if (!Directory.Exists(this.L_Folder))
                    {
                        Directory.CreateDirectory(this.L_Folder);
                    }
                    string str1 = string.Format(@"{0}\{1}.pdf", this.L_Folder, Path.GetFileNameWithoutExtension(FixInsUploadDlg.displayPart.FullPath));
                    CaxME.CreateOISPDF(drawingSheets, str1);

                    //傳OIS圖到SERVER
                    if (!Directory.Exists(S_Folder))
                    {
                        System.IO.Directory.CreateDirectory(S_Folder);
                    }
                    CaxPublic.DirectoryCopy(this.L_Folder, S_Folder, true);
                }
                //取得WorkPart資訊並檢查資料是否完整
                DadDimension.WorkPartAttribute sWorkPartAttribute = new DadDimension.WorkPartAttribute();
                status = DadDimension.GetWorkPartAttribute(workPart, out sWorkPartAttribute);
                if (!status)
                {
                    if (this.ExportPDF.Checked)
                    {
                        MessageBox.Show("量測資訊不足,僅上傳PDF檔案,上傳完成!");
                    }
                    else
                    {
                        MessageBox.Show("量測資訊不足,無法上傳資料!");
                    }
                    this.Close();
                    return;
                }
                //if (sWorkPartAttribute.draftingVer == "" || sWorkPartAttribute.draftingDate == "" ||
                //    sWorkPartAttribute.partDescription == "" || sWorkPartAttribute.material == "")
                //{
                //    MessageBox.Show("量測資訊不足");
                //    this.Close();
                //    return;
                //}

                //取得所有量測尺寸資料

                List <DadDimension> listDimensionData = new List <DadDimension>();
                for (int i = 0; i < SheetCount; i++)
                {
                    //打開Sheet並記錄所有OBJ
                    NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
                    CurrentSheet.Open();
                    CurrentSheet.View.UpdateDisplay();
                    DisplayableObject[] SheetObj = CurrentSheet.View.AskVisibleObjects();
                    status = Com_FixDimension.RecordFixDimension(SheetObj, sWorkPartAttribute, ref listDimensionData);
                    if (!status)
                    {
                        this.Close();
                        return;
                    }
                }

                //將圖片存到本機Globaltek內
                for (int i = 0; i < PicNameStr.Length; i++)
                {
                    string destFileName = string.Format(@"{0}\{1}", this.L_Folder, PicNameStr[i]);
                    File.Copy(PicPathStr[i], destFileName, true);
                }



                //由料號查Com_PEMain
                Com_PEMain cCom_PEMain = new Com_PEMain();
                status = CaxSQL.GetCom_PEMain(cCaxUpLoad.CusName, cCaxUpLoad.PartName, cCaxUpLoad.CusRev, cCaxUpLoad.OpRev, out cCom_PEMain);
                if (!status)
                {
                    return;
                }
                //由Com_PEMain和Op查Com_PartOperation
                Com_PartOperation cCom_PartOperation = new Com_PartOperation();
                status = CaxSQL.GetCom_PartOperation(cCom_PEMain, cCaxUpLoad.OpNum, out cCom_PartOperation);
                if (!status)
                {
                    return;
                }

                #region 比對資料庫FixInspection是否有同筆數據
                bool Is_Exit = true;
                Com_FixInspection cCom_FixInspection = new Com_FixInspection();
                CaxSQL.GetCom_FixInspection(cCom_PartOperation, Path.GetFileNameWithoutExtension(workPart.FullPath), out cCom_FixInspection);
                if (cCom_FixInspection == null)
                {
                    Is_Exit = false;
                }

                if (Is_Exit && eTaskDialogResult.Yes == CaxPublic.ShowMsgYesNo("此檢、治具已存在上一筆資料,是否更新?"))
                {
                    #region 刪除Com_FixDimension
                    IList <Com_FixDimension> listComFixDimension = new List <Com_FixDimension>();
                    CaxSQL.GetListCom_FixDimension(cCom_FixInspection, out listComFixDimension);
                    foreach (Com_FixDimension i in listComFixDimension)
                    {
                        CaxSQL.Delete <Com_FixDimension>(i);
                    }
                    #endregion
                    #region 刪除Com_FixInspection
                    CaxSQL.Delete <Com_FixInspection>(cCom_FixInspection);
                    #endregion
                    Is_Exit = false;
                }

                if (!Is_Exit)
                {
                    cCom_FixInspection = new Com_FixInspection()
                    {
                        comPartOperation  = cCom_PartOperation,
                        fixinsDescription = this.Desc.Text,
                        fixinsERP         = this.ERPNo.Text,
                        fixinsNo          = this.FixInsNo.Text,
                        fixPicPath        = this.S_PicPath,
                        fixPartName       = Path.GetFileNameWithoutExtension(FixInsUploadDlg.workPart.FullPath)
                    };

                    IList <Com_FixDimension> listCom_FixDimension = new List <Com_FixDimension>();
                    foreach (DadDimension i in listDimensionData)
                    {
                        //Com_FixDimension cCom_FixDimension = new Com_FixDimension()
                        //{
                        //    comFixInspection = comFixInspection
                        //};
                        ////cCom_FixDimension.comFixInspection = comFixInspection;

                        //CaxME.MappingData(i, ref cCom_FixDimension);
                        //listCom_FixDimension.Add(cCom_FixDimension);
                        Com_FixDimension cCom_FixDimension = new Com_FixDimension();
                        cCom_FixDimension.MappingData(i);
                        cCom_FixDimension.comFixInspection = cCom_FixInspection;
                        listCom_FixDimension.Add(cCom_FixDimension);
                    }
                    cCom_FixInspection.comFixDimension = listCom_FixDimension;

                    CaxSQL.Save <Com_FixInspection>(cCom_FixInspection);

                    //傳OIS圖到SERVER
                    if (!Directory.Exists(S_Folder))
                    {
                        System.IO.Directory.CreateDirectory(S_Folder);
                    }
                    CaxPublic.DirectoryCopy(this.L_Folder, S_Folder, true);
                }

                #endregion

                MessageBox.Show("上傳完成");
                base.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
예제 #15
0
        private void OK_Click(object sender, EventArgs e)
        {
            CaxPart.SaveAll();

            //Part上傳
            List <string> ListPartName = new List <string>();

            status = CaxMEUpLoad.UploadPart(DicPartDirData, out ListPartName);
            //status = Function.UploadPart(DicPartDirData, out ListPartName);
            if (!status)
            {
                this.Close();
                return;
            }
            System.IO.File.WriteAllLines(string.Format(@"{0}\{1}\{2}", sDownUpLoadDat.Server_ShareStr, "OP" + cCaxMEUpLoad.OpNum, "PartNameText_OIS.txt"), ListPartName.ToArray());
            //新增TE的下載文件
            if (TEDownloadText.Count > 0)
            {
                string PartNameText_CAM = string.Format(@"{0}\{1}\{2}", sDownUpLoadDat.Server_ShareStr, "OP" + cCaxMEUpLoad.OpNum, "PartNameText_CAM.txt");
                foreach (string i in TEDownloadText)
                {
                    using (StreamWriter sw = File.AppendText(PartNameText_CAM))
                    {
                        sw.WriteLine(i);
                    }
                }
            }

            #region (註解)Excel上傳

            /*
             * //Excel上傳
             * if (File.Exists(sExcelDirData.ExcelIPQCLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelIPQCLocalDir, sExcelDirData.ExcelIPQCServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("IPQC.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelSelfCheckLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelSelfCheckLocalDir, sExcelDirData.ExcelSelfCheckServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("SelfCheck.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelIQCLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelIQCLocalDir, sExcelDirData.ExcelIQCServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("IQC.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelFAILocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelFAILocalDir, sExcelDirData.ExcelFAIServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("FAI.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             *
             * if (File.Exists(sExcelDirData.ExcelFQCLocalDir))
             * {
             *  try
             *  {
             *      File.Copy(sExcelDirData.ExcelFQCLocalDir, sExcelDirData.ExcelFQCServerDir, true);
             *  }
             *  catch (System.Exception ex)
             *  {
             *      CaxLog.ShowListingWindow("FQC.xls上傳失敗");
             *      this.Close();
             *  }
             * }
             */
            #endregion


            int          SheetCount  = 0;
            NXOpen.Tag[] SheetTagAry = null;
            theUfSession.Draw.AskDrawings(out SheetCount, out SheetTagAry);

            List <NXOpen.Drawings.DrawingSheet> listDrawingSheet = new List <NXOpen.Drawings.DrawingSheet>();
            for (int i = 0; i < SheetCount; i++)
            {
                //打開Sheet並記錄所有OBJ
                NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
                listDrawingSheet.Add(CurrentSheet);
            }
            #region 輸出OIS
            //輸出PDF
            if (ExportPFD.Checked == true)
            {
                //建立PFD資料夾
                string PFDFullPath = string.Format(@"{0}\{1}", sDownUpLoadDat.Local_Folder_OIS, cCaxMEUpLoad.PartName + "_OIS" + cCaxMEUpLoad.OpNum + ".pdf");
                CaxME.CreateOISPDF(listDrawingSheet, PFDFullPath);
                //OIS資料夾上傳
                status = CaxPublic.DirectoryCopy(sDownUpLoadDat.Local_Folder_OIS, sDownUpLoadDat.Server_Folder_OIS, true);
                if (!status)
                {
                    MessageBox.Show("OIS資料夾複製失敗,請聯繫開發工程師");
                    this.Close();
                }
            }
            #endregion

            #region 資料上傳至Database
            //取得WorkPart資訊並檢查資料是否完整
            DadDimension.WorkPartAttribute sWorkPartAttribute = new DadDimension.WorkPartAttribute();
            //status = Function.GetWorkPartAttribute(workPart, out sWorkPartAttribute);
            status = DadDimension.GetWorkPartAttribute(workPart, out sWorkPartAttribute);
            if (!status)
            {
                MessageBox.Show("量測資訊不足,僅上傳CAD檔案,上傳完成!");
                this.Close();
                return;
            }

            #region 取得所有量測尺寸資料

            /*
             * //取得泡泡特徵,並記錄總共有幾個泡泡,後續比對數量用
             * IdSymbolCollection BallonCollection = workPart.Annotations.IdSymbols;
             * IdSymbol[] BallonAry = BallonCollection.ToArray();
             * int balloonCount = 0;
             * foreach (IdSymbol i in BallonAry)
             * {
             *  try
             *  {
             *      i.GetStringAttribute("BalloonAtt");
             *      balloonCount++;
             *  }
             *  catch (System.Exception ex)
             *  {
             *      continue;
             *  }
             * }
             *
             * List<CaxME.DimensionData> listDimensionData = new List<CaxME.DimensionData>();
             * List<int> listBalloonCount = new List<int>();
             * NXOpen.Drawings.DrawingSheet FirstSheet = null;
             * while (listBalloonCount.Count != balloonCount)
             * {
             *  for (int i = 0; i < SheetCount; i++)
             *  {
             *      //打開Sheet並記錄所有OBJ
             *      NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
             *      if (CurrentSheet.Name == "S1")
             *      {
             *          FirstSheet = CurrentSheet;
             *      }
             *      CurrentSheet.Open();
             *      CurrentSheet.View.UpdateDisplay();
             *      DisplayableObject[] SheetObj = CurrentSheet.View.AskVisibleObjects();
             *      status = CaxME.RecordDimension(SheetObj, sWorkPartAttribute, ref listDimensionData);
             *      if (!status)
             *      {
             *          this.Close();
             *          return;
             *      }
             *  }
             *  foreach (CaxME.DimensionData i in listDimensionData)
             *  {
             *      if (!listBalloonCount.Contains(i.ballonNum))
             *      {
             *          listBalloonCount.Add(i.ballonNum);
             *      }
             *  }
             *
             * }
             */
            //List<CaxME.DimensionData> listDimensionData = new List<CaxME.DimensionData>();
            List <DadDimension>          listDimensionData = new List <DadDimension>();
            NXOpen.Drawings.DrawingSheet FirstSheet        = null;
            for (int i = 0; i < SheetCount; i++)
            {
                //打開Sheet並記錄所有OBJ
                NXOpen.Drawings.DrawingSheet CurrentSheet = (NXOpen.Drawings.DrawingSheet)NXObjectManager.Get(SheetTagAry[i]);
                if (CurrentSheet.Name == "S1")
                {
                    FirstSheet = CurrentSheet;
                }
                CurrentSheet.Open();
                CurrentSheet.View.UpdateDisplay();
                DisplayableObject[] SheetObj = CurrentSheet.View.AskVisibleObjects();
                status = Com_Dimension.RecordDimension(SheetObj, sWorkPartAttribute, ref listDimensionData);
                if (!status)
                {
                    this.Close();
                    return;
                }
            }
            #endregion



            //切回首頁
            if (FirstSheet != null)
            {
                FirstSheet.Open();
            }


            //由料號查Com_PEMain
            Com_PEMain cCom_PEMain = new Com_PEMain();
            status = CaxSQL.GetCom_PEMain(cCaxMEUpLoad.CusName, cCaxMEUpLoad.PartName, cCaxMEUpLoad.CusRev, cCaxMEUpLoad.OpRev, out cCom_PEMain);
            if (!status)
            {
                return;
            }
            //由Com_PEMain和Op查Com_PartOperation
            Com_PartOperation cCom_PartOperation = new Com_PartOperation();
            status = CaxSQL.GetCom_PartOperation(cCom_PEMain, cCaxMEUpLoad.OpNum, out cCom_PartOperation);
            if (!status)
            {
                return;
            }


            #region (註解)由excelType查meExcelSrNo
            //Sys_MEExcel sysMEExcel = new Sys_MEExcel();
            //try
            //{
            //    sysMEExcel = session.QueryOver<Sys_MEExcel>().Where(x => x.meExcelType == meExcelType).SingleOrDefault<Sys_MEExcel>();
            //}
            //catch (System.Exception ex)
            //{
            //    MessageBox.Show("資料庫中沒有此料號的紀錄,故無法上傳量測尺寸,僅成功上傳實體檔案");
            //    return;
            //}
            #endregion

            #region 比對資料庫MEMain是否有同筆數據
            IList <Com_MEMain> ListCom_MEMain = new List <Com_MEMain>();
            CaxSQL.GetListCom_MEMain(out ListCom_MEMain);

            bool       Is_Exist         = false;
            Com_MEMain currentComMEMain = new Com_MEMain();
            foreach (Com_MEMain i in ListCom_MEMain)
            {
                if (i.comPartOperation == cCom_PartOperation)
                {
                    Is_Exist         = true;
                    currentComMEMain = i;
                    break;
                }
            }
            #endregion

            #region 如果本次上傳的資料不存在於資料庫,則開始上傳資料;如果已存在資料庫,則詢問是否要更新尺寸
            bool Is_Update = true;
            if (Is_Exist)
            {
                if (eTaskDialogResult.Yes == CaxPublic.ShowMsgYesNo("此料號已存在上一次的標註尺寸資料,是否更新?"))
                {
                    #region 刪除Com_Dimension資料表
                    IList <Com_Dimension> ListCom_Dimension = new List <Com_Dimension>();
                    CaxSQL.GetListCom_Dimension(currentComMEMain, out ListCom_Dimension);
                    foreach (Com_Dimension i in ListCom_Dimension)
                    {
                        CaxSQL.Delete <Com_Dimension>(i);
                    }
                    #endregion

                    #region 刪除Com_MEMain資料表
                    Com_MEMain cCom_MEMain = new Com_MEMain();
                    CaxSQL.GetCom_MEMain(cCom_PartOperation, out cCom_MEMain);
                    CaxSQL.Delete <Com_MEMain>(cCom_MEMain);
                    #endregion
                }
                else
                {
                    Is_Update = false;
                }
            }
            if (Is_Update)
            {
                #region 整理資料並上傳
                try
                {
                    Com_MEMain cCom_MEMain = new Com_MEMain();
                    cCom_MEMain.comPartOperation = cCom_PartOperation;
                    //cCom_MEMain.sysMEExcel = sysMEExcel;
                    cCom_MEMain.partDescription = sWorkPartAttribute.partDescription;
                    cCom_MEMain.createDate      = sWorkPartAttribute.createDate;
                    cCom_MEMain.material        = sWorkPartAttribute.material;
                    cCom_MEMain.draftingVer     = sWorkPartAttribute.draftingVer;

                    IList <Com_Dimension> listCom_Dimension = new List <Com_Dimension>();
                    foreach (DadDimension i in listDimensionData)
                    {
                        Com_Dimension cCom_Dimension = new Com_Dimension();
                        cCom_Dimension.MappingData(i);
                        cCom_Dimension.comMEMain = cCom_MEMain;
                        listCom_Dimension.Add(cCom_Dimension);
                        //Com_Dimension cCom_Dimension = new Com_Dimension();
                        //cCom_Dimension.comMEMain = cCom_MEMain;
                        //CaxME.MappingData(i, ref cCom_Dimension);
                        //listCom_Dimension.Add(cCom_Dimension);
                    }
                    cCom_MEMain.comDimension = listCom_Dimension;
                    CaxSQL.Save <Com_MEMain>(cCom_MEMain);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("上傳資料庫時發生錯誤,僅上傳實體檔案");
                }
                #endregion
            }

            #endregion


            #endregion

            CaxPart.Save();
            MessageBox.Show("上傳完成!");
            this.Close();
        }