public string GetCodeName(string codeId) { var code = _repoCodeIDDetail.FindSingle(x => x.Code_ID.Trim() == codeId.Trim()); if (code != null) { return(code.Code_Ename); } else { return(""); } }
public async Task <Output_Dto> GetByQrCodeId(string qrCodeId) { // biến qrcodeid là sheet no của bảng materialsheetsize, dựa theo mã đó lấy ra listmaterialsheetsize là danh sánh đơn output ra var listMaterialSheetSize = await _repoMaterialSheetSize.FindAll(x => x.Sheet_No.Trim() == qrCodeId.Trim()).ProjectTo <Material_Sheet_Size_Dto>(_configMapper).OrderBy(x => x.Tool_Size).ToListAsync(); // kiểm tra xem Sheet_No đó đã output bao giờ chưa, nếu có rồi là kiểm tra đơn đó đã output ra hết chưa var listTransactionMainTypeOByPickupNo = await _repoTransactionMain.FindAll().Where(x => x.Pickup_No.Trim() == qrCodeId && x.Transac_Type.Trim() == "O").ToListAsync(); List <WMSB_Transaction_Detail> listTransactionDetailByBistTransactionMainTypeOByPickupNo = new List <WMSB_Transaction_Detail>(); if (listTransactionMainTypeOByPickupNo.Count > 0) { foreach (var item in listTransactionMainTypeOByPickupNo) { var tmp = await _repoTransactionDetail.FindAll(x => x.Transac_No == item.Transac_No).ToListAsync(); listTransactionDetailByBistTransactionMainTypeOByPickupNo.AddRange(tmp); } var totalTransQtyOutput = listTransactionDetailByBistTransactionMainTypeOByPickupNo.GroupBy(x => new { x.Order_Size }) .Select(y => new { OrderSize = y.Key.Order_Size, TotalTransQty = (decimal)y.Sum(z => z.Trans_Qty) }).ToList(); listMaterialSheetSize = listMaterialSheetSize.Join(totalTransQtyOutput, x => x.Order_Size, y => y.OrderSize, (x, y) => new Material_Sheet_Size_Dto { Qty = (decimal)x.Qty - y.TotalTransQty, Factory_ID = x.Factory_ID, Batch = x.Batch, Cur_Ent = x.Cur_Ent, HP_Update_Time = x.HP_Update_Time, HP_User = x.HP_User, Manno = x.Manno, Material_ID = x.Material_ID, Model_Size = x.Model_Size, Order_Size = x.Order_Size, Print_Size = x.Print_Size, Prod_Delivery_Way = x.Prod_Delivery_Way, Sheet_No = x.Sheet_No, Subcont_Material = x.Subcont_Material, Tool_Size = x.Tool_Size, Update_By = x.Update_By, Update_Time = x.Update_Time }).ToList(); } // hết kiểm tra xem Sheet_No đó đã output ra bao giờ chưa List <OutputMain_Dto> listOuput = new List <OutputMain_Dto>(); var materialSheetSize = await _repoMaterialSheetSize.FindAll(x => x.Sheet_No.Trim() == qrCodeId.Trim()).FirstOrDefaultAsync(); if (materialSheetSize != null) { List <WMSB_Transaction_Main> transactionModel = new List <WMSB_Transaction_Main>(); // Nếu Prod_Delivery_Way == "A" thì chỉ lấy trong transaction main theo material_id và mo_no if (materialSheetSize.Prod_Delivery_Way == "A") { transactionModel = await _repoTransactionMain.FindAll(x => x.MO_No.Trim() == materialSheetSize.Manno.Trim() && x.Material_ID == materialSheetSize.Material_ID && x.Can_Move == "Y" && x.Transac_Type != "O").ToListAsync(); } // ngược lại là lấy theeo mo_no, material_id và batch else { transactionModel = await _repoTransactionMain.FindAll(x => x.MO_No.Trim() == materialSheetSize.Manno.Trim() && x.MO_Seq.Trim() == materialSheetSize.Batch.Trim() && x.Material_ID == materialSheetSize.Material_ID && x.Can_Move == "Y" && x.Transac_Type != "O").ToListAsync(); } foreach (var item in transactionModel) { var rackLocation = await _repoRackLocation.FindAll(x => x.Rack_Location.Trim() == item.Rack_Location.Trim()).FirstOrDefaultAsync(); // dữ liệu output cần hiển thị: trong bảng tranasaction main, transaction detail ... OutputMain_Dto output = new OutputMain_Dto(); output.Id = item.ID; output.TransacNo = item.Transac_No; output.QrCodeId = item.QRCode_ID.Trim(); output.QrCodeVersion = item.QRCode_Version; output.PlanNo = item.MO_No.Trim(); output.Batch = item.MO_Seq; output.MatId = item.Material_ID.Trim(); output.MatName = item.Material_Name.Trim(); if (rackLocation != null) { output.Building = _repoCode.FindSingle(x => x.Code_Type == 3 && x.Code_ID == rackLocation.Build_ID).Code_Ename; // building With WMS_Code.Code_TYPE = 3 output.Area = _repoCode.FindSingle(x => x.Code_Type == 5 && x.Code_ID == rackLocation.Area_ID).Code_Ename; // building With WMS_Code.Code_TYPE = 5 output.WH = _repoCode.FindSingle(x => x.Code_Type == 2 && x.Code_ID == rackLocation.WH_ID).Code_Ename; // building With WMS_Code.Code_TYPE = 2 } output.RackLocation = item.Rack_Location; output.InStockQty = _repoTransactionDetail.GetQtyByTransacNo(item.Transac_No); output.TransOutQty = 0; output.RemainingQty = _repoTransactionDetail.GetQtyByTransacNo(item.Transac_No); var qrCodeModel = await _repoQRCodeMain.GetByQRCodeID(item.QRCode_ID); var packingListModel = await _repoPackingList.GetByReceiveNo(qrCodeModel.Receive_No); if (packingListModel != null) { output.SupplierName = packingListModel.Supplier_Name.Trim(); output.SupplierNo = packingListModel.Supplier_ID.Trim(); } listOuput.Add(output); } } // dữ liệu cần lấy ra để hiển thị: listoutputmain là trong bảng transaction main với type bằng I, R, M và listmaterialsheetsize là số lượng cần output ra của đơn Output_Dto result = new Output_Dto(); result.Outputs = listOuput.OrderBy(x => x.InStockQty).ToList(); result.MaterialSheetSizes = listMaterialSheetSize; return(result); }