private void BtnBOMCheck_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.PartNum.Text)) { MessageBox.Show("请输入物料编码!", "提示"); return; } DgvMain.DataSource = null; List <CheckResult> lists = new List <CheckResult>(); GetCashData(); foreach (var item in MPART) { if (item.TypeCode == "M") { var boo = PLM.GetPLMBOO(item.PartNum); if (boo.Count <= 0) { lists.Add(new CheckResult() { ErrorGrade = 1, ErrorType = "BOO", Message = "需要有效的工序", PartDesc = item.PartDescription, PartNum = item.PartNum }); } } var entity = BasicDatas.ErpPart.Where(o => o.InActive == true && o.PartNum == item.PartNum).FirstOrDefault(); if (entity != null) { lists.Add(new CheckResult() { ErrorGrade = 1, ErrorType = "PART", Message = "此编码已禁用", PartDesc = item.PartDescription, PartNum = item.PartNum }); } } if (lists.Count > 0) { DgvMain.DataSource = lists; } else { MessageBox.Show("BOM没有问题!", "提示"); } }
/// <summary> /// 获取新BOO /// </summary> private void CallGetNewBOO(string[] PartNumArr, List <ExportDto.MBOM_UD> ListMBOM, bool IsOnly) { DataNewBOO = new DataTable(); if (PartNumArr.Length > 0 && !IsOnly) { List <Entity.DTO.DTO_MBOO> lists = new List <Entity.DTO.DTO_MBOO>(); int GroupId = 1; foreach (string PartNum in PartNumArr) { var boo = PLM.GetPLMBOO(PartNum, true); lists = lists.Union(boo).ToList(); var BOMS = ListMBOM.Where(o => o.GroupID == GroupId && o.PullAsAsm == "TRUE").ToList(); List <string> Parts = new List <string>(); foreach (var bom in BOMS) { if (!Parts.Contains(bom.MtlPartNum)) { Parts.Add(bom.MtlPartNum); } } foreach (var part in Parts) { var boo2 = PLM.GetPLMBOO(part, true); if (boo2 != null && boo2.Count > 0) { boo2 = boo2.OrderBy(o => o.OprSeq).ToList(); lists = lists.Union(boo2).ToList(); } } GroupId++; } lists = lists.OrderBy(o => o.PartNum).ThenBy(o => o.RevisionNum).ThenBy(o => o.OprSeq).ToList(); Mapper.Initialize(x => x.CreateMap <Entity.DTO.DTO_MBOO, ExportDto.MBOO>().ForMember(dest => dest.CommentText, opt => opt.MapFrom(src => src.OprComment))); List <ExportDto.MBOO> data = Mapper.Map <List <ExportDto.MBOO> >(lists); DataNewBOO = Utility.ListToDataTable(data, "_", "#"); } Utility.ExportExcel(DataNewBOO, SaveFolderPath + "\\BOO.xls"); pecentExe += 10; lblStatus = "新BOO数据已就绪..."; }
private void buttonGetBOO_Click(object sender, EventArgs e) { string contents = textBoxPartNums.Text.Trim(); string[] PartNums = contents.Split(new string[] { "\r\n" }, StringSplitOptions.None); var lists = new List <Entity.DTO.DTO_MBOO>(); foreach (var item in PartNums) { var exMBOO = PLM.GetPLMBOO(item, true); lists = lists.Union(exMBOO).ToList(); } foreach (var item in lists) { item.RevisionNum = textBoxPartRev.Text; } Mapper.Initialize(x => x.CreateMap <Entity.DTO.DTO_MBOO, ExportDto.MBOO>().ForMember(dest => dest.CommentText, opt => opt.MapFrom(src => src.OprComment))); BOO = Mapper.Map <List <ExportDto.MBOO> >(lists); dataGridViewBOO.DataSource = BOO; tabControl1.SelectedIndex = 1; }
private void CallGetNewBOO() { string PartNum = this.tboxPartNum.Text; //string SqlStr = "select * from V_BOO where PartNum='" + PartNum + "'"; //if (!string.IsNullOrEmpty(textBoxRev.Text)) //{ // SqlStr += " and REVISIONNUM='"+ textBoxRev.Text + "'"; //} var ds = PLM.GetPLMBOO(PartNum); ds = ds.OrderBy(o => o.OprSeq).ToList(); this.BeginInvoke(new Action(() => { dataGridViewMain.DataSource = ds; DataCount = ds.Count; BtnGetNewBOO.Enabled = true; tabControlMain.SelectedIndex = 0; tabControlMain.SelectedTab.Text = "PLM部件BOO"; CurrentDgv = dataGridViewMain; })); }
/// <summary> /// 工单BOO对比PLMBOO /// </summary> /// <param name="partNum"></param> /// <param name="jobNum"></param> /// <returns></returns> private List <DTO_MBOO> CompareBOO(string partNum, string jobNum) { List <Entity.DTO.DTO_MBOO> BOO_DIFF = new List <Entity.DTO.DTO_MBOO>(); #region PLM所有BOO List <Entity.DTO.DTO_MBOO> PLM_BOO = new List <Entity.DTO.DTO_MBOO>(); if (!string.IsNullOrEmpty(partNum) && PLM_BOM.Count > 0) { var boo = PLM.GetPLMBOO(partNum); PLM_BOO = PLM_BOO.Union(boo).ToList(); var PBOM = PLM_BOM.Where(o => o.PullAsAsm == "TRUE").ToList(); foreach (var item in PBOM) { var boos = PLM.GetPLMBOO(item.MtlPartNum); PLM_BOO = PLM_BOO.Union(boos).ToList(); } PLM_BOO = PLM_BOO.OrderBy(o => o.PartNum).ThenBy(o => o.OprSeq).ToList(); } #endregion #region ERP所有BOO List <Entity.DTO.DTO_MBOO> ERP_BOO = new List <Entity.DTO.DTO_MBOO>(); if (!string.IsNullOrEmpty(jobNum) && ERP_JOB_BOM.Count > 0) { var operList = ERP.GetJobOper(jobNum); var asmbList = ERP.GetJobAsmbl(jobNum); var boolists = from asmbl in asmbList join joboper in operList on new { asmbl.Company, asmbl.AssemblySeq, asmbl.JobNum } equals new { joboper.Company, joboper.AssemblySeq, joboper.JobNum } orderby asmbl.AssemblySeq ascending select new { asmbl, joboper }; foreach (var boo in boolists) { Entity.DTO.DTO_MBOO obj = new Entity.DTO.DTO_MBOO(); obj.Company = boo.asmbl.Company; obj.DaysOut = boo.joboper.DaysOut.ToString(); obj.ECOGroupID = "manager"; obj.LaborEntryMethod = boo.joboper.LaborEntryMethod; obj.OpCode = boo.joboper.OpCode; obj.OprComment = boo.joboper.CommentText; obj.OprSeq = boo.joboper.OprSeq; obj.PartDescription = boo.asmbl.Description; obj.PartNum = boo.asmbl.PartNum; obj.Plant = "MfgSys"; obj.ProdStandard = boo.joboper.ProdStandard; obj.RevisionNum = boo.joboper.RevisionNum; obj.StdFormat = boo.joboper.StdFormat; obj.SubContract = boo.joboper.SubContract.ToString().ToUpper(); obj.VendorNumVendorID = boo.joboper.VendorNum.ToString(); ERP_BOO.Add(obj); } ERP_BOO = ERP_BOO.OrderBy(o => o.PartNum).ThenBy(o => o.OprSeq).ToList(); } #endregion #region 开始对比 if (PLM_BOO != null && ERP_BOO != null) { foreach (var item in PLM_BOO) { if (ERP_BOO.Where(o => o.PartNum == item.PartNum).Count() <= 0) { if (BOO_DIFF.Where(o => o.PartNum == item.PartNum).Count() <= 0) { item.VendorNumVendorID = "无此物料"; BOO_DIFF.Add(item); continue; } } else { var ERPBOO = ERP_BOO.Where(o => o.PartNum == item.PartNum && o.OpCode == item.OpCode); if (ERPBOO.Count() <= 0) { if (BOO_DIFF.Where(o => o.PartNum == item.PartNum && o.OpCode == item.OpCode).Count() <= 0) { item.VendorNumVendorID = "工序不存在"; BOO_DIFF.Add(item); continue; } } } } } #endregion return(BOO_DIFF); }