Пример #1
0
        public bool CreateShipment(string PackageId, tblShipment _tblShipment)
        {
            List <DetailPackageOnday> lstResult = new List <DetailPackageOnday>();
            DatabaseClass             objData   = new DatabaseClass();
            QueryString objQuery = new QueryString();

            objQuery.strSPName = "CreateShipment";
            objQuery.AddString("@ShipmentCode", _tblShipment.ShipmentCode);
            objQuery.AddInt("@Destination", _tblShipment.Destination);
            objQuery.AddInt("@WarehouseId", _tblShipment.WarehouseId);
            objQuery.AddDecimal("@TotalWeight", _tblShipment.TotalWeight);
            objQuery.AddString("@PackageId", PackageId);
            string strSqlStore = objQuery.GenSPString();
            Common common      = new Common();

            try
            {
                objData.ExecuteNonQuery(strSqlStore);

                return(true);
            }
            catch (Exception ex)
            {
                common.WriteLog(Environment.CurrentDirectory, "WinAppShipment - getDetailPackageOnday: " + ex.StackTrace);
                lstResult = null;

                return(false);
            }
            finally
            {
                objData.CloseData();
                objData = null;
                common  = null;
            }
        }
Пример #2
0
        public int Admin_CreateShipment(tblShipment model)
        {
            int result = 0;

            try
            {
                using (var db = ContextFactory.UsTransportEntities())
                {
                    db.tblShipments.Add(model);
                    db.SaveChanges();
                    result = model.Id;
                }
            }
            catch (Exception ex)
            {
                SELog.WriteLog("ShipmentService => Admin_CreateShipment", ex);
            }
            return(result);
        }
Пример #3
0
        public int Admin_UpdateShipment(tblShipment model)
        {
            int result = 0;

            try
            {
                using (var db = ContextFactory.UsTransportEntities())
                {
                    var curent = db.tblShipments.FirstOrDefault(x => x.Id == model.Id);
                    if (curent != null)
                    {
                        db.Entry(curent).CurrentValues.SetValues(model);
                        db.SaveChanges();
                        result = 1;
                    }
                }
            }
            catch (Exception ex)
            {
                SELog.WriteLog("ShipmentService => Admin_UpdateShipment", ex);
            }
            return(result);
        }
Пример #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Begin!");
            //UHAN18082301
            var _ShipmentDAL  = new ShipmentDAL();
            var lstShipmentHN = new List <tblShipment>();
            var lstShipmentSG = new List <tblShipment>();

            var AVG_Weight = 0;
            var MAX_Weight = 0;
            var startCode  = "";
            int estimate   = 0;

            try {
                //Lấy ra danh sách package trong ngày group theo kho bên mỹ và cảng hàng không VN cần chuyển order by theo orderId
                var lstPackage = _ShipmentDAL.GetListPackageOnday();



                //Fix dữ liệu giả lập
                lstPackage.Clear();
                ListPackageOnday _ListPackageOnday = new ListPackageOnday();
                _ListPackageOnday.Destination  = 2;
                _ListPackageOnday.TotalPackage = 4;
                _ListPackageOnday.TotalWeight  = 140;
                _ListPackageOnday.WarehouseId  = 1;
                lstPackage.Add(_ListPackageOnday);

                Console.WriteLine("CO " + lstPackage.Count + " Group shipment can xu ly");
                //Duyệt tính toán vận đơn cho 1 kho tới VN
                for (int i = 0; i < lstPackage.Count; i++)
                {
                    var lstShipment = new List <tblShipment>();
                    if (lstPackage[i].Destination == int.Parse(DestinationHNId))
                    {
                        MAX_Weight = int.Parse(UHNWeight);
                        startCode  = "UHAN";
                        Console.WriteLine("Dang xu ly WarehouseId " + lstPackage[i].WarehouseId + " Chuyen ve UHAN");
                        lstShipment = lstShipmentHN;
                    }
                    else if (lstPackage[i].Destination == int.Parse(DestinationSGId))
                    {
                        MAX_Weight = int.Parse(USGWeight);
                        startCode  = "SGN";
                        Console.WriteLine("Dang xu ly WarehouseId " + lstPackage[i].WarehouseId + " Chuyen ve SGN");
                        lstShipment = lstShipmentSG;
                    }


                    estimate = lstPackage[i].TotalPackage / MAX_Weight;
                    //Nếu tổng khối lượng vận chuyển có dư, estimate số lượng shipment tăng lên 1 để chia đều
                    if (lstPackage[i].TotalPackage % MAX_Weight != 0)
                    {
                        estimate += 1;
                    }

                    AVG_Weight = MAX_Weight / estimate;

                    //Lấy danh sách package theo kho hàng và địa chỉ nhận hàng trong ngày
                    var lstPackageDetailt = _ShipmentDAL.getDetailPackageOnday(lstPackage[i].WarehouseId, lstPackage[i].Destination);

                    //Fix dữ liệu giả lập
                    lstPackageDetailt.Clear();
                    DetailPackageOnday PackageDetailt = new DetailPackageOnday();
                    PackageDetailt.Destination = 2;
                    PackageDetailt.WarehouseId = 1;
                    PackageDetailt.Weight      = 40;
                    PackageDetailt.Id          = 0;

                    DetailPackageOnday PackageDetailt1 = new DetailPackageOnday();
                    PackageDetailt1.Destination = 2;
                    PackageDetailt1.WarehouseId = 1;
                    PackageDetailt1.Weight      = 25;
                    PackageDetailt1.Id          = 1;

                    //DetailPackageOnday PackageDetailt2 = new DetailPackageOnday();
                    //PackageDetailt2.Destination = 2;
                    //PackageDetailt2.WarehouseId = 1;
                    //PackageDetailt2.Weight = 10;
                    //PackageDetailt2.Id = 2;

                    DetailPackageOnday PackageDetailt3 = new DetailPackageOnday();
                    PackageDetailt3.Destination = 2;
                    PackageDetailt3.WarehouseId = 1;
                    PackageDetailt3.Weight      = 25;
                    PackageDetailt3.Id          = 3;

                    DetailPackageOnday PackageDetailt4 = new DetailPackageOnday();
                    PackageDetailt4.Destination = 2;
                    PackageDetailt4.WarehouseId = 1;
                    PackageDetailt4.Weight      = 40;
                    PackageDetailt4.Id          = 4;

                    lstPackageDetailt.Add(PackageDetailt);
                    lstPackageDetailt.Add(PackageDetailt1);
                    //lstPackageDetailt.Add(PackageDetailt2);
                    lstPackageDetailt.Add(PackageDetailt3);
                    lstPackageDetailt.Add(PackageDetailt4);


                    var    shipment     = new tblShipment();
                    string strPackageId = "";
                    for (int j = 0; j < lstPackageDetailt.Count; j++)
                    {
                        //Nếu chuyến hàng có khối lượng dưới khối lượng tối đa
                        var tmpWeight = lstPackageDetailt[j].Weight + shipment.TotalWeight;
                        if (tmpWeight <= AVG_Weight)
                        {
                            Console.WriteLine("Dang add PackageId " + lstPackageDetailt[j].Id + " vao " + startCode + DateTime.Now.ToString("ddMMYY") + (lstShipment.Count + 1).ToString());
                            if (strPackageId != "")
                            {
                                strPackageId += ",";
                            }
                            strPackageId        += lstPackageDetailt[j].Id;
                            shipment.TotalWeight = tmpWeight;
                            //trường hợp 2 package vòng lặp cuối tạo luôn shipment
                            if (j == lstPackageDetailt.Count - 1)
                            {
                                //tạo shipment hiện tại
                                if (strPackageId != "")
                                {
                                    strPackageId += ",";
                                }
                                strPackageId        += lstPackageDetailt[j].Id;
                                shipment.WarehouseId = lstPackageDetailt[j].WarehouseId;
                                shipment.Destination = lstPackageDetailt[j].Destination;
                                //shipment.ShipmentCode = startCode + DateTime.Now.ToString("ddMMyy") + (lstShipment.Count + 1).ToString();
                                lstShipment.Add(shipment);
                                if (lstPackage[i].Destination == int.Parse(DestinationHNId))
                                {
                                    lstShipmentHN = lstShipment;
                                }
                                else if (lstPackage[i].Destination == int.Parse(DestinationSGId))
                                {
                                    lstShipmentSG = lstShipment;
                                }
                                shipment.ShipmentCode = startCode + DateTime.Now.ToString("ddMMyy") + (lstShipment.Count).ToString();
                                _ShipmentDAL.CreateShipment(strPackageId, shipment);
                                Console.WriteLine("Tao xong shipment " + shipment.ShipmentCode + " ID pack: " + strPackageId + " TotalWeight: " + shipment.TotalWeight);
                                strPackageId = "";
                            }
                        }
                        else
                        {
                            //tạo shipment hiện tại
                            //if (strPackageId != "") strPackageId += ",";
                            //strPackageId += lstPackageDetailt[j].Id;
                            shipment.WarehouseId = lstPackageDetailt[j - 1].WarehouseId;
                            shipment.Destination = lstPackageDetailt[j - 1].Destination;

                            if (lstPackage[i].Destination == int.Parse(DestinationHNId))
                            {
                                lstShipmentHN = lstShipment;
                            }
                            else if (lstPackage[i].Destination == int.Parse(DestinationSGId))
                            {
                                lstShipmentSG = lstShipment;
                            }
                            shipment.ShipmentCode = startCode + DateTime.Now.ToString("ddMMyy") + (lstShipment.Count).ToString();
                            _ShipmentDAL.CreateShipment(strPackageId, shipment);
                            lstShipment.Add(shipment);
                            Console.WriteLine("Tao xong shipment " + shipment.ShipmentCode + " ID pack: " + strPackageId + " TotalWeight: " + shipment.TotalWeight);
                            strPackageId = "";



                            //trường hợp  package vòng lặp cuối tạo luôn shipment
                            if (j == lstPackageDetailt.Count - 1)
                            {
                                //tạo shipment hiện tại
                                if (strPackageId != "")
                                {
                                    strPackageId += ",";
                                }
                                strPackageId        += lstPackageDetailt[j].Id;
                                shipment.WarehouseId = lstPackageDetailt[j].WarehouseId;
                                shipment.Destination = lstPackageDetailt[j].Destination;
                                //shipment.ShipmentCode = startCode + DateTime.Now.ToString("ddMMyy") + (lstShipment.Count + 1).ToString();
                                lstShipment.Add(shipment);
                                if (lstPackage[i].Destination == int.Parse(DestinationHNId))
                                {
                                    lstShipmentHN = lstShipment;
                                }
                                else if (lstPackage[i].Destination == int.Parse(DestinationSGId))
                                {
                                    lstShipmentSG = lstShipment;
                                }
                                shipment.TotalWeight  = lstPackageDetailt[j].Weight;
                                shipment.ShipmentCode = startCode + DateTime.Now.ToString("ddMMyy") + (lstShipment.Count).ToString();
                                _ShipmentDAL.CreateShipment(strPackageId, shipment);
                                Console.WriteLine("Tao xong shipment " + shipment.ShipmentCode + " ID pack: " + strPackageId + " TotalWeight: " + shipment.TotalWeight);

                                strPackageId = "";
                            }
                            else
                            {
                                //Chuyển qua add shipment mới
                                shipment             = new tblShipment();
                                shipment.TotalWeight = lstPackageDetailt[j].Weight;
                                strPackageId         = lstPackageDetailt[j].Id.ToString();
                            }
                        }
                    }
                }
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Пример #5
0
        public ActionResult SaveShipment(ShipmentViewDTO model)
        {
            CustomJsonResult result = new CustomJsonResult();

            if (model.Id < 1)
            {
                // create shipment
                if (model.LstPackage != null && model.LstPackage.Any())
                {
                    // lấy destination của 1 package đầu tiên
                    var         packageFirst = model.LstPackage[0];
                    tblShipment shipment     = new tblShipment();
                    shipment.WarehouseId = packageFirst.WarehouseId;
                    //shipment.Destination = packageFirst.Destination;
                    shipment.Destination = model.Destination;
                    if (string.IsNullOrEmpty(model.ShipmentCode))
                    {
                        string startCode = Lib.Business.Common.ServiceHelper.GetDestionationCodeById(packageFirst.Destination);
                        model.ShipmentCode = $"{startCode}{DateTime.Now.ToString("ddMMyy")}{_shipmentService.Admin_CountShipmentOnDateByDestination(packageFirst.Destination) + 1}";
                    }
                    shipment.ShipmentCode = model.ShipmentCode;
                    shipment.TotalWeight  = Math.Round(model.LstPackage.Sum(x => x.Weight), 2);
                    shipment.CreateTime   = (int)model.CreateTime;
                    shipment.Id           = _shipmentService.Admin_CreateShipment(shipment);
                    if (shipment.Id < 1)
                    {
                        result.Message = "Có lỗi xảy ra khi tạo shipment";
                        result.Result  = -1;
                    }
                    else
                    {
                        _shipmentService.Admin_UpdateShipmentForPackage(model.LstPackage.Select(x => x.Id).ToList(), shipment.Id, shipment.ShipmentCode);
                    }
                }
                else
                {
                    result.Message = "Thông tin tạo shipment không hợp lệ!";
                    result.Result  = -1;
                }
            }
            else
            {
                // update shipment
                tblShipment shipment = model.BindToModel <tblShipment>();
                if (model.LstPackage.Count > 0)
                {
                    shipment.TotalWeight = Math.Round(model.LstPackage.Sum(x => x.Weight), 2);
                }
                if (_shipmentService.Admin_UpdateShipment(shipment) > 0)
                {
                    var shipmentOld = _shipmentService.Admin_GeDetailShipmentHasPackageById(model.Id);
                    if (shipmentOld.LstPackage == null)
                    {
                        shipmentOld.LstPackage = new List <PackageViewDTO>();
                    }
                    if (model.LstPackage != null && model.LstPackage.Any())
                    {
                        // lấy các shipment remove
                        List <long> lstPackageIdRemove = new List <long>();
                        foreach (var item in shipmentOld.LstPackage)
                        {
                            var o = model.LstPackage.FirstOrDefault(x => x.Id == item.Id);
                            if (o == null)
                            {
                                lstPackageIdRemove.Add(item.Id);
                            }
                        }
                        if (lstPackageIdRemove.Any())
                        {
                            _shipmentService.Admin_UpdateShipmentForPackage(lstPackageIdRemove, null, null);
                        }
                        // các shipment thêm mới
                        var lstPackagenew = model.LstPackage.Where(x => x.ShipmentId < 1).ToList();
                        if (lstPackagenew != null && lstPackagenew.Any())
                        {
                            _shipmentService.Admin_UpdateShipmentForPackage(lstPackagenew.Select(x => x.Id).ToList(), shipmentOld.Id, shipmentOld.ShipmentCode);
                        }
                    }
                    else
                    {
                        // xóa hết các package hiện có của shipment này
                        _shipmentService.Admin_UpdateShipmentForPackage(shipmentOld.LstPackage.Select(x => x.Id).ToList(), null, null);
                    }
                }
                else
                {
                    result.Message = "Có lỗi xảy ra khi cập nhật shipment";
                    result.Result  = -1;
                }
            }
            return(Json(result));
        }