public async Task <List <string> > GetLine() { var listMaterialPurchase = await _materialPurchaseRepository.FindAll() .Select(x => new { x.Factory_ID, x.MO_No }).Distinct().ToListAsync(); var listMesMo = await _mesMoRepository.FindAll() .Select(x => new { x.Factory_ID, x.MO_No, x.Line_ID_ASY }).Distinct().ToListAsync(); var data = listMaterialPurchase.Join(listMesMo, x => new { x.Factory_ID, x.MO_No }, y => new { y.Factory_ID, y.MO_No }, (x, y) => y.Line_ID_ASY) .Distinct().OrderBy(z => z).ToList(); return(data); }
public async Task <List <SupplierModel> > SupplierList() { var listMaterialPurchase = await _repoMaterialPurchase.FindAll(x => x.Supplier_ID.Trim() != "") .Select(x => new { Supplier_ID = x.Supplier_ID }).Distinct() .ToListAsync(); var listHPVendor = await _repoHPVendor.FindAll(x => x.Vendor_No.Trim() != "") .Select(x => new { Vendor_No = x.Vendor_No, Vendor_Name = x.Vendor_Name }).Distinct() .ToListAsync(); var data = (from T1 in listMaterialPurchase join T2 in listHPVendor on T1.Supplier_ID.Trim() equals T2.Vendor_No.Trim() select new SupplierModel { Supplier_No = T1.Supplier_ID.Trim(), Supplier_Name = T2.Vendor_Name.Trim() }).Distinct() .OrderBy(x => x.Supplier_No) .ToList(); return(data); }
public async Task <PagedList <ReceivingMaterialMainModel> > SearchByModel(PaginationParams param, FilterReceivingMateParam filterParam) { var pred_Material_Purchase = PredicateBuilder.New <WMSB_Material_Purchase>(true); var pred_VM_Material_Purchase = PredicateBuilder.New <VM_WMSB_Material_Purchase>(true); // Ở kho có Type = 2 pred_Material_Purchase.And(x => x.Type.Trim() == "2" && x.Biz_Tflag != "D"); if (filterParam.From_Date != null && filterParam.To_Date != null) { pred_Material_Purchase.And(x => x.Confirm_Delivery >= Convert.ToDateTime(filterParam.From_Date + " 00:00:00.000")); pred_Material_Purchase.And(x => x.Confirm_Delivery <= Convert.ToDateTime(filterParam.To_Date + " 23:59:59.997")); } if (!String.IsNullOrEmpty(filterParam.MO_No)) { pred_Material_Purchase.And(x => x.MO_No.Trim() == filterParam.MO_No.Trim()); pred_VM_Material_Purchase.And(x => x.Plan_No.Trim() == filterParam.MO_No.Trim()); } if (!String.IsNullOrEmpty(filterParam.Purchase_No)) { pred_Material_Purchase.And(x => x.Purchase_No.Trim() == filterParam.Purchase_No.Trim()); } if (filterParam.Status != "all") { pred_Material_Purchase.And(x => x.Status.Trim() == filterParam.Status.Trim()); } var materialPurchases = await _repoPurchase.FindAll(pred_Material_Purchase).ToListAsync(); var materialPurchaseList = materialPurchases .Select(x => new PurchaseConvert() { Purchase_No = x.Purchase_No.Trim(), Status = x.Status, MO_No = x.MO_No, Material_ID = x.Material_ID }).GroupBy(x => new { x.Purchase_No, x.Status, x.MO_No, x.Material_ID }).Select(x => x.FirstOrDefault()).ToList(); var purchaseContainQty = materialPurchases.Select(x => new { Purchase_No = x.Purchase_No.Trim(), MO_No = x.MO_No.Trim(), Purchase_Qty = x.Purchase_Qty, Material_ID = x.Material_ID.Trim() }).GroupBy(x => new { x.Purchase_No, x.MO_No, x.Material_ID }).Select(x => new { Purchase_No = x.FirstOrDefault().Purchase_No, MO_No = x.FirstOrDefault().MO_No, Material_ID = x.FirstOrDefault().Material_ID, Qty = x.Sum(cl => cl.Purchase_Qty) }).ToList(); // Distinct lại mảng.Do ko xài Distinct ở trong câu lệnh 1 list Object được. var listData = materialPurchaseList.GroupBy(x => new { x.Purchase_No, x.MO_No, x.Material_ID }).Select(y => y.First()); // --------------------------------------------------------------------------------------------------------- var listData_Purchase_No = listData.Select(x => x.Purchase_No.Trim()).Distinct().ToList(); pred_VM_Material_Purchase.And(x => listData_Purchase_No.Contains(x.Purchase_No)); var listMaterialView = await _repoMaterialView.FindAll(pred_VM_Material_Purchase) .Select(x => new { x.Mat_, x.Mat__Name, x.Plan_No, x.Model_No, x.Model_Name, x.Article, x.Purchase_No, x.Supplier_No, x.Supplier_Name, x.Subcon_No, x.Subcon_Name, x.T3_Supplier, x.T3_Supplier_Name }).Distinct().ToListAsync(); listMaterialView = listMaterialView.Distinct().ToList(); var result = (from a in listData join c in purchaseContainQty on new { Purchase_No = a.Purchase_No.Trim(), MO_No = a.MO_No.Trim(), MaterialID = a.Material_ID.Trim() } equals new { Purchase_No = c.Purchase_No.Trim(), MO_No = c.MO_No.Trim(), MaterialID = c.Material_ID.Trim() } join b in listMaterialView on new { Purchase_No = a.Purchase_No.Trim(), MO_No = a.MO_No.Trim(), MaterialID = a.Material_ID.Trim() } equals new { Purchase_No = b.Purchase_No, MO_No = b.Plan_No.Trim(), MaterialID = b.Mat_.Trim() } select new ReceivingMaterialMainModel { Status = a.Status, Material_ID = b.Mat_, Material_Name = b.Mat__Name, MO_No = b.Plan_No, Purchase_No = a.Purchase_No, Model_No = b.Model_No, Model_Name = b.Model_Name, Article = b.Article, Supplier_ID = b.Supplier_No, Supplier_Name = b.Supplier_Name, Subcon_No = b.Subcon_No, Subcon_Name = b.Subcon_Name, T3_Supplier = b.T3_Supplier, T3_Supplier_Name = b.T3_Supplier_Name, Qty = c.Qty }).ToList(); result = result.OrderBy(x => x.Status).ThenBy(x => x.MO_No).ThenBy(x => x.Purchase_No).ToList(); return(PagedList <ReceivingMaterialMainModel> .Create(result, param.PageNumber, param.PageSize, false)); }
public async Task <PagedList <MaterialMainViewModel> > SearchByModel(PaginationParams param, FilterMaterialParam filterParam) { var listMaterialView = await _repoMaterialView.FindAll().ToListAsync(); var materialPurchaseList = await _repoPurchase.FindAll(). Select(x => new { Purchase_No = x.Purchase_No, Status = x.Status, Missing_No = "", Confirm_Delivery = x.Confirm_Delivery }).Distinct().ToListAsync(); var materialMissingList = await _repoMissing.GetAll() .Select(x => new { Purchase_No = x.Purchase_No, Status = x.Status, Missing_No = x.Missing_No, Confirm_Delivery = x.Confirm_Delivery }).Distinct().ToListAsync(); foreach (var item in materialMissingList) { materialPurchaseList.Add(item); } // Nếu purchase đó có 1 batch là N thì status show ra sẽ là N. Còn Y hết thì hiển thị Y // Tạo ra 1 mảng đối tượng mới var materialPurchaseListConvert = new List <PurchaseConvert>(); foreach (var item in materialPurchaseList) { var item1 = new PurchaseConvert { Purchase_No = item.Purchase_No, Status = item.Status, Missing_No = item.Missing_No, Confirm_Delivery = item.Confirm_Delivery }; materialPurchaseListConvert.Add(item1); } foreach (var item in materialPurchaseListConvert) { if (item.Status.Trim() == "N") { foreach (var item1 in materialPurchaseListConvert) { if (item1.Purchase_No.Trim() == item.Purchase_No.Trim() && item1.Missing_No == item.Missing_No) { item1.Status = "N"; } } } } // Distinct lại mảng.Do ko xài Distinct ở trong câu lệnh 1 list Object được. var listData = materialPurchaseListConvert.GroupBy(x => new{ x.Purchase_No, x.Missing_No }).Select(y => y.First()); // -------------------------------------------------------------------------- var listMaterial = (from a in listData join b in listMaterialView on a.Purchase_No.Trim() equals b.Purchase_No.Trim() select new MaterialMainViewModel { Status = a.Status, Material_ID = b.Mat_, Material_Name = b.Mat__Name, Missing_No = a.Missing_No == null? "" : a.Missing_No, MO_No = b.Plan_No, Confirm_Delivery = a.Confirm_Delivery, Purchase_No = a.Purchase_No, Model_No = b.Model_No, Model_Name = b.Model_Name, Article = b.Article, Custmoer_Name = b.Custmoer_Name, Supplier_ID = b.Supplier_No, Supplier_Name = b.Supplier_Name, Subcon_No = b.Subcon_No, Subcon_Name = b.Subcon_Name, T3_Supplier = b.T3_Supplier, T3_Supplier_Name = b.T3_Supplier_Name }).ToList(); if (filterParam.From_Date != null && filterParam.To_Date != null) { listMaterial = listMaterial.Where(x => x.Confirm_Delivery >= Convert.ToDateTime(filterParam.From_Date + " 00:00:00.000") && x.Confirm_Delivery <= Convert.ToDateTime(filterParam.To_Date + " 23:59:59.997")).ToList(); } if (filterParam.MO_No != null && filterParam.MO_No != string.Empty) { listMaterial = listMaterial.Where(x => x.MO_No.Trim() == filterParam.MO_No.Trim()).ToList(); } if (filterParam.Supplier_ID != null && filterParam.Supplier_ID != string.Empty) { listMaterial = listMaterial.Where(x => x.Supplier_ID.Trim() == filterParam.Supplier_ID.Trim()).ToList(); } if (filterParam.Status != "all") { listMaterial = listMaterial.Where(x => x.Status.Trim() == filterParam.Status.Trim()).ToList(); } return(PagedList <MaterialMainViewModel> .Create(listMaterial, param.PageNumber, param.PageSize)); }
public async Task <object> MaterialMerging(MaterialMainViewModel model) { var listMaterial = new List <Material_Dto>(); if (model.Missing_No != "") { listMaterial = await _repoMissing.FindAll(x => x.Purchase_No.Trim() == model.Purchase_No.Trim() && x.Missing_No.Trim() == model.Missing_No.Trim() && x.MO_No.Trim() == model.MO_No.Trim()) .ProjectTo <Material_Dto>(_configMapper) .ToListAsync(); } else { listMaterial = await _repoPurchase.FindAll(x => x.Purchase_No.Trim() == model.Purchase_No.Trim() && x.MO_No.Trim() == model.MO_No.Trim() && x.Biz_Tflag.Trim() != "D" && (x.MO_Qty != 0 || x.Purchase_Qty != 0) ) .ProjectTo <Material_Dto>(_configMapper) .ToListAsync(); } listMaterial.OrderByDescending(x => x.MO_Seq); var OrderSizeGroup = listMaterial.GroupBy(x => x.Order_Size).Select(x => x.Key); OrderSizeGroup = OrderSizeGroup.OrderBy(x => decimal.Parse(x)).ToList(); var listBatch = listMaterial.GroupBy(x => x.MO_Seq).Select(y => new { MO_Seq = y.First().MO_Seq }).ToList(); var list3 = new List <OrderSizeByBatch>(); foreach (var item in listBatch) { var item1 = new OrderSizeByBatch(); item1.MO_Seq = item.MO_Seq; item1.Purchase_No = model.Purchase_No; item1.Missing_No = model.Missing_No; item1.Material_ID = model.Material_ID; item1.Material_Name = model.Material_Name; item1.Model_No = model.Model_No; item1.Model_Name = model.Model_Name; item1.MO_No = model.MO_No; item1.Article = model.Article; item1.Supplier_ID = model.Supplier_ID; item1.Supplier_Name = model.Supplier_Name; item1.Subcon_No = model.Subcon_No; item1.Subcon_Name = model.Subcon_Name; item1.T3_Supplier = model.T3_Supplier; item1.T3_Supplier_Name = model.T3_Supplier_Name; // ---- Start Check xem Batch này đã insert đủ hết chưa.----- item1.CheckInsert = "1"; foreach (var item4 in listMaterial) { if (item4.MO_Seq == item.MO_Seq) { if (item4.Accumlated_In_Qty != item4.Purchase_Qty) { item1.CheckInsert = "0"; break; } } } // -----------------------------End------------------------ var item3 = new List <OrderSizeAccumlate>(); foreach (var orderSize in OrderSizeGroup) { var materialByBathOrderSize = listMaterial .Where(x => x.Order_Size.Trim() == orderSize.Trim() && x.MO_Seq == item.MO_Seq); if (materialByBathOrderSize.Count() > 0) { foreach (var item2 in materialByBathOrderSize) { var item4 = new OrderSizeAccumlate(); item4.Order_Size = item2.Order_Size; item4.Model_Size = item2.Model_Size; item4.Tool_Size = item2.Tool_Size; item4.Spec_Size = item2.Spec_Size; item4.Purchase_Qty_Const = item2.Purchase_Qty; item4.MO_Qty = item2.MO_Qty; item4.Purchase_Qty = item2.Purchase_Qty - item2.Accumlated_In_Qty; item4.Accumlated_In_Qty = item2.Accumlated_In_Qty; item4.Received_Qty = 0; item3.Add(item4); item1.Purchase_Qty = item3; } } else { var item4 = new OrderSizeAccumlate(); item4.Order_Size = orderSize; item3.Add(item4); } } list3.Add(item1); } // -------------------------------------------------------------------------------------------// var list1 = listMaterial.GroupBy(l => l.Order_Size) .Select(cl => new { Tool_Size = cl.First().Tool_Size, Order_Size = cl.First().Order_Size, Accumlated_In_Qty = cl.Sum(c => c.Accumlated_In_Qty), Delivery_Qty_Batches = cl.Sum(x => x.Accumlated_In_Qty), Purchase_Qty = cl.Sum(c => c.Purchase_Qty), Delivery_Qty = cl.Sum(c => c.Purchase_Qty) - cl.Sum(c => c.Accumlated_In_Qty) }).ToList(); var list2 = listMaterial.GroupBy(x => new { x.Order_Size, x.Purchase_Qty, x.MO_Seq }) .Select(y => new { Order_Size = y.First().Order_Size, Purchase_Qty = y.First().Purchase_Qty, MO_Seq = y.First().MO_Seq, }); var list4 = new List <MaterialMergingViewMode>(); foreach (var orderSize in OrderSizeGroup) { var list5 = list1.Where(x => x.Order_Size.Trim() == orderSize.Trim()); foreach (var item in list5) { var arrayItem = new MaterialMergingViewMode(); arrayItem.Tool_Size = item.Tool_Size; arrayItem.Order_Size = item.Order_Size; arrayItem.Purchase_Qty = item.Purchase_Qty; arrayItem.Accumlated_In_Qty = item.Accumlated_In_Qty; arrayItem.Delivery_Qty = item.Delivery_Qty; arrayItem.Delivery_Qty_Batches = item.Delivery_Qty_Batches; var array1 = new List <BatchQtyItem>(); foreach (var item1 in list2) { if (item1.Order_Size.Trim() == item.Order_Size.Trim()) { var item2 = new BatchQtyItem(); item2.MO_Seq = item1.MO_Seq; item2.Purchase_Qty = item1.Purchase_Qty; array1.Add(item2); arrayItem.Purchase_Qty_Item = array1; } } list4.Add(arrayItem); } } var totalByBatch = new List <TotalQtyOfBatch>(); foreach (var item in list3) { var totalQty = item.Purchase_Qty.Sum(x => x.Purchase_Qty); var itemTotalQty = new TotalQtyOfBatch(); itemTotalQty.Total = totalQty; itemTotalQty.MO_Seq = item.MO_Seq; totalByBatch.Add(itemTotalQty); } var listTotalQty = new TotalQty(); listTotalQty.TotalPurchaseQty = list4.Sum(x => x.Purchase_Qty); listTotalQty.TotalAccumated_Qty = list4.Sum(x => x.Accumlated_In_Qty); listTotalQty.TotalDeliveryQty = list4.Sum(x => x.Delivery_Qty); // --------------------------------------End----------------------------------------// var result = new { list3, list4, totalByBatch, listTotalQty }; return(result); }