Beispiel #1
0
        public bool CheckRackLocationHaveTheSameArea(string fromLocation, string toLocation)
        {
            var rackLocation = _repoRackLocation.FindSingle(x => x.Rack_Location.Trim() == fromLocation.Trim());

            if (fromLocation == toLocation)
            {
                return(false);
            }

            if (rackLocation != null)
            {
                string areaId = rackLocation.Area_ID;
                var    tmp    = _repoRackLocation.FindAll(x => x.Rack_Location.Contains(toLocation.Trim()) && x.Area_ID.Trim() == areaId.Trim()).ToList();
                if (tmp.Count() > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Beispiel #2
0
        public async Task <PagedList <RackLocation_Main_Dto> > Filter(PaginationParams param, FilterRackLocationParam filterParam)
        {
            var pred_Rack_Location = PredicateBuilder.New <WMSB_RackLocation_Main>(true);

            if (!String.IsNullOrEmpty(filterParam.Factory))
            {
                pred_Rack_Location.And(x => x.Factory_ID == filterParam.Factory);
            }

            if (!String.IsNullOrEmpty(filterParam.Wh))
            {
                pred_Rack_Location.And(x => x.WH_ID == filterParam.Wh);
            }

            if (!String.IsNullOrEmpty(filterParam.Building))
            {
                pred_Rack_Location.And(x => x.Build_ID == filterParam.Building);
            }

            if (!String.IsNullOrEmpty(filterParam.Floor))
            {
                pred_Rack_Location.And(x => x.Floor_ID == filterParam.Floor);
            }

            if (!String.IsNullOrEmpty(filterParam.Area))
            {
                pred_Rack_Location.And(x => x.Area_ID == filterParam.Area);
            }
            var resultAll = _repoRackLocation.FindAll(pred_Rack_Location).ProjectTo <RackLocation_Main_Dto>(_configMapper);

            resultAll = resultAll.OrderByDescending(x => x.Updated_Time).Select(x => new RackLocation_Main_Dto
            {
                BuildingName      = _repoCode.GetBuildingName(x.Build_ID),
                AreaName          = _repoCode.GetAreaName(x.Area_ID),
                FloorName         = _repoCode.GetFloorName(x.Floor_ID),
                ID                = x.ID,
                Rack_Location     = x.Rack_Location,
                Rack_Code         = x.Rack_Code,
                Rack_Level        = x.Rack_Level,
                Rack_Bin          = x.Rack_Bin,
                Factory_ID        = x.Factory_ID,
                WH_ID             = x.WH_ID,
                Build_ID          = x.Build_ID,
                Floor_ID          = x.Floor_ID,
                Area_ID           = x.Area_ID,
                CBM               = x.CBM,
                Max_per           = x.Max_per,
                Memo              = x.Memo,
                Rack_Invalid_date = x.Rack_Invalid_date,
                Updated_Time      = x.Updated_Time,
                Updated_By        = x.Updated_By,
            });

            return(await PagedList <RackLocation_Main_Dto> .CreateAsync(resultAll, param.PageNumber, param.PageSize));
        }
Beispiel #3
0
 public async Task<bool> CheckRackLocation(string rackLocation)
 {
     var rackMain = await _repoRacklocationRepo.FindAll(x => x.Rack_Location.Trim() == rackLocation.Trim())
         .FirstOrDefaultAsync();
     if (rackMain == null)
     {
         return false;
     }
     else
     {
         if (rackMain.Area_ID.Trim() == "A012")
         {
             return true;
         }
         else
         {
             return false;
         }
     }
 }
Beispiel #4
0
        public async Task <Output_Dto> GetByQrCodeId(string qrCodeId)
        {
            string message = "No data!";
            // 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(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();

                foreach (var itemMaterialSheetSize in listMaterialSheetSize)
                {
                    var transQtyHadOutput = totalTransQtyOutput.Where(x => x.OrderSize == itemMaterialSheetSize.Order_Size).FirstOrDefault();
                    var qty = transQtyHadOutput != null ? transQtyHadOutput.TotalTransQty : 0;
                    itemMaterialSheetSize.Qty = (decimal)itemMaterialSheetSize.Qty - qty;
                }
            }
            // 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>();
                // trong transaction main lấy theeo mo_no, material_id và batch
                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();
                    output.PickupNo      = qrCodeId;
                    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();
                        output.T3Supplier     = packingListModel.T3_Supplier.Trim();
                        output.T3SupplierName = packingListModel.T3_Supplier_Name;
                        output.SubconId       = packingListModel.Subcon_ID.Trim();
                        output.SubconName     = packingListModel.Subcon_Name;
                    }

                    listOuput.Add(output);
                }
                if (transactionModel.Count() == 0)
                {
                    message = "Had been finishing outputted!";
                }
            }

            // kiểm tra đơn yêu cầu có bị dư toolsize nào ko thì loại ra
            // do hệ thống còn liên quan đến hp nên có thể toolsize bị dư ko output được
            // lấy theo toolsize của bảng transaction detail, của những đơn cần output
            List <OutputTotalNeedQty_Dto> listNeedQtyByOutput = new List <OutputTotalNeedQty_Dto>();

            if (listOuput.Count() > 0)
            {
                var tmpTransacno  = listOuput.FirstOrDefault().TransacNo;
                var tmpListDetail = await _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == tmpTransacno.Trim()).OrderBy(x => x.Tool_Size).ToListAsync();

                foreach (var itemTmpListDetail in tmpListDetail)
                {
                    var tmpMaterialSheetSize = listMaterialSheetSize.Where(x => x.Tool_Size.Trim() == itemTmpListDetail.Tool_Size.Trim() && x.Order_Size.Trim() == itemTmpListDetail.Order_Size.Trim() && x.Model_Size.Trim() == itemTmpListDetail.Model_Size.Trim())
                                               .Select(x => new OutputTotalNeedQty_Dto {
                        Model_Size = x.Model_Size,
                        Order_Size = x.Order_Size,
                        Qty        = x.Qty,
                        Tool_Size  = x.Tool_Size
                    }).FirstOrDefault();
                    if (tmpMaterialSheetSize != null)
                    {
                        listNeedQtyByOutput.Add(tmpMaterialSheetSize);
                    }
                }
                // kiểm tra phần tử có trong transaction detail có mà trong material sheet size ko có, thì thêm vào material sheet size qty bằng 0
                var toolSizeHaveInDetailNotHaveInSheet = tmpListDetail.Where(p => !listMaterialSheetSize.Any(x => x.Tool_Size.Trim() == p.Tool_Size.Trim() && x.Order_Size.Trim() == p.Order_Size.Trim() && x.Model_Size.Trim() == p.Model_Size.Trim())).ToList();
                if (toolSizeHaveInDetailNotHaveInSheet.Any())
                {
                    var tmpMaterialSheetSize = listMaterialSheetSize.First();
                    foreach (var item in toolSizeHaveInDetailNotHaveInSheet)
                    {
                        OutputTotalNeedQty_Dto tmp = new OutputTotalNeedQty_Dto();
                        tmp.Model_Size = item.Model_Size;
                        tmp.Tool_Size  = item.Tool_Size;
                        tmp.Order_Size = item.Order_Size;
                        tmp.Qty        = 0;
                        listNeedQtyByOutput.Add(tmp);
                    }
                }
            }
            //// hết đoạn kiểm tra toolsize

            // 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.OutputTotalNeedQty = listNeedQtyByOutput.OrderBy(x => x.Tool_Size).ToList();
            result.Message            = message;
            return(result);
        }
Beispiel #5
0
        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);
        }