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; } }
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); }
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); }
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()); } }
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)); }