private async Task <List <Entity.DTO.DTO_MBOM> > GetBOMDIF(int Top = 0) { ProgressBarBot.Value = 0; ProgressRuning = true; this.treeViewLeft.Nodes.Clear(); List <Entity.DTO.DTO_MBOM> result = new List <Entity.DTO.DTO_MBOM>(); List <Entity.ERP.Model.Part> ListPart = new List <Entity.ERP.Model.Part>(); return(await Task.Run(() => { ListPart = ERP.GetUnClosedPart(Top); if (ListPart != null) { foreach (var item in ListPart) { List <Entity.DTO.DTO_MBOM> ERPBOM = new List <Entity.DTO.DTO_MBOM>(); ERP.GetERPBOM(item.PartNum, ERPBOM, false); List <Entity.DTO.DTO_MBOM> PLMBOM = new List <Entity.DTO.DTO_MBOM>(); PLM.GetPLMBOM(item.PartNum, PLMBOM, false); foreach (var it in ERPBOM) { it.PartDescription = ""; it.MtlPartDescription = ""; } ERPBOM = ERPBOM.OrderBy(o => o.MtlSeq).ToList(); foreach (var it in PLMBOM) { it.PartDescription = ""; it.MtlPartDescription = ""; } PLMBOM = PLMBOM.OrderBy(o => o.MtlSeq).ToList(); bool isEqual = true; if (ERPBOM.Count == PLMBOM.Count) { for (int i = 0; i < ERPBOM.Count; i++) { isEqual = Utility.CompareType(ERPBOM[i], PLMBOM[i]); if (!isEqual) { break; } } } else { isEqual = false; } if (!isEqual) { result = result.Union(PLMBOM).ToList(); } } } this.BeginInvoke(new Action(() => { var datas = result.Select(o => new { o.Company, o.PartNum, o.ECOGroupID }).Distinct().ToList(); DataCount = datas.Count; DGVBOM.DataSource = datas; tabControlMain.SelectedIndex = 1; tabControlMain.SelectedTab.Text = "BOM更新数据"; CurrentDgv = DGVBOM; ProgressBarBot.Value = 100; StatusLabelInfo.Text = "共获取" + DataCount + "条信息"; ProgressRuning = false; })); return result; })); }
private void BtnOK_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(tBoxPartNum.Text)) { MessageBox.Show("物料编码必填!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(tBoxJobNum.Text) && radioJob.Checked) { MessageBox.Show("工单号必填!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } BtnOK.Text = "对比中..."; BtnOK.Enabled = false; Task.Run(() => { //获取ERP设计BOM ERP_DES_BOM = new List <DTO_MBOM>(); ERP.GetERPBOM(tBoxPartNum.Text, ERP_DES_BOM, true, textBoxRev.Text); if (radioJob.Checked) { //获取工单BOM var JobAsmblDatas = ERP.GetJobAsmbl(tBoxJobNum.Text); var JobMtlDatas = ERP.GetJobMtl(tBoxJobNum.Text); ERP_JOB_BOM = new List <DTO_MBOM>(); string mainPart = ""; try { mainPart = JobAsmblDatas.Where(o => o.JobNum == tBoxJobNum.Text && o.BomLevel == 0).FirstOrDefault().PartNum; } catch { } ERP.GetJobBom(ERP_JOB_BOM, JobAsmblDatas, JobMtlDatas, mainPart); } else { //获取PLMBOM PLM_BOM = new List <DTO_MBOM>(); PLM.GetPLMBOM(tBoxPartNum.Text, PLM_BOM); } //List<DTO_MBOM> BOM_DIFF = CompareBOM(tBoxPartNum.Text, tBoxJobNum.Text); this.BeginInvoke(new Action(() => { BtnOK.Text = "开始对比"; BtnOK.Enabled = true; #region 导出对比结果 //var dt = Utility.ListToDataTable(BOM_DIFF, "_", "#"); //string rnd = Random.Next(0, 9999).ToString(); string filepath = SaveFolderPath + "\\" + tBoxPartNum.Text + "BOM_DIFF.xls"; long ticks = DateTime.Now.Ticks; if (radioJob.Checked) { filepath = SaveFolderPath + "\\DES_JOB_" + tBoxPartNum.Text + "_" + tBoxJobNum.Text + "_Compare" + ticks.ToString() + ".xls"; CreateDIFFBook(filepath, ERP_DES_BOM, ERP_JOB_BOM, "设计BOM", "工单BOM"); } else { filepath = SaveFolderPath + "\\DES_PLM_" + tBoxPartNum.Text + "_Compare" + ticks.ToString() + ".xls"; CreateDIFFBook2(filepath, ERP_DES_BOM, PLM_BOM, "PLMBOM", "设计BOM"); } //Utility.ExportExcel(dt, SaveFolderPath + "\\" + tBoxPartNum.Text + "BOM_DIFF" + rnd + ".xls"); System.Diagnostics.Process.Start(filepath); #endregion })); }); }