Example #1
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)
            {
            }
        }
        public static bool SetFixInsPanelData(Com_PartOperation comPartOperation, string cus, string partNo, string cusVer, string opVer, string op1, ref GridPanel FixInsPanel)
        {
            try
            {
                IList <Com_FixInspection> listComFixIns = session.QueryOver <Com_FixInspection>().Where(x => x.comPartOperation == comPartOperation).List();
                //int FixInsCount = -1;
                foreach (Com_FixInspection i in listComFixIns)
                {
                    //FixInsCount++;
                    object[] o = new object[] { false, i.fixPartName, i.fixinsDescription, i.fixinsNo, i.fixinsERP };
                    FixInsPanel.Rows.Add(new GridRow(o));
                    //FixInsPanel.GetCell(FixInsCount, 0).Value = false;
                    //string pdfString = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}\{7}", OutputForm.EnvVariables.env_Task, cus, partNo, cusVer, opVer, "OP" + op1, "OIS", i.fixPartName);
                    //string[] pdfFiles = System.IO.Directory.GetFileSystemEntries(pdfString, "*.pdf");
                    //if (pdfFiles.Length > 0)
                    //{
                    //    o = new object[] { false, i.fixPartName + ".pdf", "", "", "" };
                    //    FixInsPanel.Rows.Add(new GridRow(o));
                    //}
                }

                //將模檢治具的PDF拉到外面搜尋
                string   pdfString = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}", OutputForm.EnvVariables.env_Task, cus, partNo, cusVer, opVer, "OP" + op1, "OIS");
                string[] pdfFiles  = Directory.GetDirectories(pdfString);
                foreach (string i in pdfFiles)
                {
                    string[] pdfPath = System.IO.Directory.GetFileSystemEntries(i, "*.pdf");
                    foreach (string y in pdfPath)
                    {
                        object[] o = new object[] { false, Path.GetFileName(y), "", "", "" };
                        FixInsPanel.Rows.Add(new GridRow(o));
                    }
                }
                //if (pdfFiles.Length > 0)
                //{
                //    o = new object[] { false, i.fixPartName + ".pdf", "", "", "" };
                //    FixInsPanel.Rows.Add(new GridRow(o));
                //}
            }
            catch (System.Exception ex)
            {
                return(false);
            }
            return(true);
        }
Example #3
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);
 }
Example #4
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);
 }
        public static bool SetTEPanelData(Com_PartOperation comPartOperation, string cus, string partNo, string cusVer, string opVer, string op1, ref GridPanel TEPanel)
        {
            try
            {
                List <string>             ExcelData = new List <string>();
                GridComboBoxExEditControl singleCell;
                IList <Com_TEMain>        comTEMain = session.QueryOver <Com_TEMain>()
                                                      .Where(x => x.comPartOperation == comPartOperation).List <Com_TEMain>();
                int TECount = -1;
                foreach (Com_TEMain i in comTEMain)
                {
                    #region 由teExcelSrNo取得對應的ExcelType
                    Sys_TEExcel sysTEExcel = session.QueryOver <Sys_TEExcel>()
                                             .Where(x => x.teExcelSrNo == i.sysTEExcel.teExcelSrNo).SingleOrDefault <Sys_TEExcel>();
                    ExcelData = new List <string>();
                    status    = GetExcelForm.GetTEExcelForm(sysTEExcel.teExcelType, out ExcelData);
                    if (!status)
                    {
                        return(false);
                    }
                    #endregion

                    #region 插入Panel
                    TECount++;
                    object[] o = new object[] { false, sysTEExcel.teExcelType, i.ncGroupName, ""
                                                , string.Format("{0}_{1}_{2}資料夾"
                                                                , partNo
                                                                , cusVer
                                                                , opVer) };
                    TEPanel.Rows.Add(new GridRow(o));
                    TEPanel.GetCell(TECount, 0).Value      = false;
                    TEPanel.GetCell(TECount, 3).EditorType = typeof(GridComboBoxExEditControl);
                    singleCell = TEPanel.GetCell(TECount, 3).EditControl as GridComboBoxExEditControl;
                    //singleCell.Items.Add("");
                    foreach (string tempStr in ExcelData)
                    {
                        singleCell.Items.Add(tempStr);
                    }

                    if (singleCell.Items.Count == 1)
                    {
                        TEPanel.GetCell(TECount, 3).Value = singleCell.Items[0].ToString();
                    }
                    else
                    {
                        TEPanel.GetCell(TECount, 3).Value = "(雙擊)選擇表單";
                    }
                    #endregion
                }

                #region 取得ToolList的表單格式
                ExcelData = new List <string>();
                status    = GetExcelForm.GetTEExcelForm("ToolList", out ExcelData);
                if (!status)
                {
                    return(false);
                }
                #endregion

                foreach (Com_TEMain i in comTEMain)
                {
                    #region 找ToolList資料,並插入Panel
                    IList <Com_ToolList> comToolList = session.QueryOver <Com_ToolList>().Where(x => x.comTEMain == i).List();
                    if (comToolList.Count == 0)
                    {
                        continue;
                    }
                    else
                    {
                        TECount++;
                        object[] o = new object[] { false, "ToolList", i.ncGroupName, ""
                                                    , string.Format("{0}_{1}_{2}資料夾"
                                                                    , partNo
                                                                    , cusVer
                                                                    , opVer) };
                        TEPanel.Rows.Add(new GridRow(o));
                        TEPanel.GetCell(TECount, 0).Value      = false;
                        TEPanel.GetCell(TECount, 3).EditorType = typeof(GridComboBoxExEditControl);
                        singleCell = TEPanel.GetCell(TECount, 3).EditControl as GridComboBoxExEditControl;
                        //singleCell.Items.Add("");
                        foreach (string tempStr in ExcelData)
                        {
                            singleCell.Items.Add(tempStr);
                        }

                        if (singleCell.Items.Count == 1)
                        {
                            TEPanel.GetCell(TECount, 3).Value = singleCell.Items[0].ToString();
                        }
                        else
                        {
                            TEPanel.GetCell(TECount, 3).Value = "(雙擊)選擇表單";
                        }
                    }
                    #endregion
                }


                #region 找NC資料夾,並插入Panel
                string CAMFolderPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}", OutputForm.EnvVariables.env_Task, cus, partNo, cusVer, opVer, "OP" + op1, "CAM");
                //string CAMFolderPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}", CaxEnv.GetGlobaltekEnvDir() + "\\Task", cus, partNo, cusVer, opVer, "OP" + op1, "CAM");
                string[] NCFolder = Directory.GetDirectories(CAMFolderPath);
                foreach (string item in NCFolder)
                {
                    if (!item.Contains("NC"))
                    {
                        continue;
                    }
                    TECount++;
                    object[] o = new object[] { false, "NC程式", Path.GetFileNameWithoutExtension(item), ""
                                                , string.Format("{0}_{1}_{2}資料夾"
                                                                , partNo
                                                                , cusVer
                                                                , opVer) };
                    TEPanel.Rows.Add(new GridRow(o));
                }
                #endregion
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(false);
            }
            return(true);
        }
        public static bool SetMEPanelData(Com_PartOperation comPartOperation, string cus, string partNo, string cusVer, string opVer, string op1, ref GridPanel MEPanel)
        {
            try
            {
                Com_MEMain            comMEMain1        = new Com_MEMain();
                IList <Com_Dimension> listComDimension1 = new List <Com_Dimension>();
                CaxSQL.GetCom_MEMain(comPartOperation, out comMEMain1);
                CaxSQL.GetListCom_Dimension(comMEMain1, out listComDimension1);

                //Com_MEMain comMEMain = session.QueryOver<Com_MEMain>()
                //                              .Where(x => x.comPartOperation == comPartOperation).SingleOrDefault<Com_MEMain>();

                //IList<Com_Dimension> listComDimension = session.QueryOver<Com_Dimension>()
                //                              .Where(x => x.comMEMain == comMEMain).List<Com_Dimension>();

                int MECount = -1;
                foreach (Com_Dimension i in listComDimension1)
                {
                    //2017.02.14判斷是否已經有插入過
                    bool IsExist = false;
                    for (int y = 0; y < MEPanel.Rows.Count; y++)
                    {
                        if (i.excelType == MEPanel.GetCell(y, 1).Value.ToString())
                        {
                            IsExist = true;
                        }
                    }
                    if (IsExist)
                    {
                        continue;
                    }

                    MECount++;
                    //由excelType取得廠區專用的Excel路徑
                    List <string> ExcelData = new List <string>();
                    status = GetExcelForm.GetMEExcelForm(i.excelType, out ExcelData);
                    if (!status)
                    {
                        return(false);
                    }

                    object[] o = new object[] { false, i.excelType, i.draftingVer, ""
                                                , string.Format("{0}_{1}_{2}資料夾"
                                                                , partNo
                                                                , cusVer
                                                                , opVer) };
                    MEPanel.Rows.Add(new GridRow(o));
                    MEPanel.GetCell(MECount, 0).Value      = false;
                    MEPanel.GetCell(MECount, 3).EditorType = typeof(GridComboBoxExEditControl);
                    GridComboBoxExEditControl singleCell = MEPanel.GetCell(MECount, 3).EditControl as GridComboBoxExEditControl;
                    //singleCell.Items.Add("");
                    foreach (string tempStr in ExcelData)
                    {
                        singleCell.Items.Add(tempStr);
                    }


                    if (singleCell.Items.Count == 1)
                    {
                        MEPanel.GetCell(MECount, 3).Value = singleCell.Items[0].ToString();
                    }
                    else
                    {
                        MEPanel.GetCell(MECount, 3).Value = "(雙擊)選擇表單";
                    }
                }

                #region 找OIS資料夾,並插入Panel
                string OISFolderPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}", OutputForm.EnvVariables.env_Task, cus, partNo, cusVer, opVer, "OP" + op1, "OIS");
                //string OISFolderPath = string.Format(@"{0}\{1}\{2}\{3}\{4}\{5}\{6}", CaxEnv.GetGlobaltekEnvDir() + "\\Task", cus, partNo, cusVer, opVer, "OP" + op1, "OIS");
                string[] OISFolder = Directory.GetFileSystemEntries(OISFolderPath, "*.pdf");
                foreach (string item in OISFolder)
                {
                    if (!item.Contains(".pdf"))
                    {
                        continue;
                    }
                    MECount++;
                    object[] o = new object[] { false, "PDF", Path.GetFileNameWithoutExtension(item), "", string.Format("{0}_{1}_{2}資料夾", partNo, cusVer, opVer) };
                    MEPanel.Rows.Add(new GridRow(o));
                }
                #endregion
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(false);
            }
            return(true);
        }
Example #7
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();
        }
Example #8
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)
            {
            }
        }
        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());
            }
        }
Example #10
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();
        }