private void FindActiveKits(List <SerialNumberItem> items, OrderDeliveryModel deliveryModel) { var kits = items.Where(x => x.KitId > 0 && x.KitCounter > 0 && !string.IsNullOrEmpty(x.ScannedBy)).GroupBy(x => x.ScannedBy); var kitGroups = new Dictionary <string, List <DeliveryOrderItemModel> >(); kits.ToList().ForEach(group => { var matched = group.FirstOrDefault(); var kitItems = items.Where(i => i.KitCounter.Equals(matched.KitCounter) && i.KitId.Equals(matched.KitId)); if (!kitGroups.ContainsKey(group.Key)) { kitGroups.Add(group.Key, kitItems.Map <IEnumerable <SerialNumberItem>, List <DeliveryOrderItemModel> >()); } else { kitGroups[group.Key].AddRange(kitItems.Map <IEnumerable <SerialNumberItem>, List <DeliveryOrderItemModel> >()); } if (kitGroups[group.Key].All(i => !string.IsNullOrEmpty(i.SerialCode))) { kitGroups.Remove(group.Key); } else { kitItems.ToList().ForEach(ki => items.Remove(ki)); } }); deliveryModel.ActiveKits = kitGroups; }
/// <summary> /// 门店发货 /// </summary> /// <param name="model"></param> /// <returns></returns> public object PostShopSendGood(OrderDeliveryModel model) { CheckUserLogin(); string shopkeeperName = ""; shopkeeperName = CurrentShopBranch.UserName; var returnurl = String.Format("http://{0}/Common/ExpressData/SaveExpressData", Request.RequestUri.Authority); OrderApplication.ShopSendGood(model.orderId, model.deliveryType, shopkeeperName, model.companyName, model.shipOrderNumber, returnurl); return(SuccessResult("发货成功")); }
public void IsVerified_NotScanned_HasNoVerified_Scanned_HasNone() { var actual = new OrderDeliveryModel(); actual.ScannedItems = new List <DeliveryOrderItemModel> { new DeliveryOrderItemModel { } }; actual.NotScannedItems = new List <DeliveryOrderItemModel> { new DeliveryOrderItemModel { } }; Assert.IsFalse(actual.IsVerified); }
/// <summary> /// 门店发货 /// </summary> /// <param name="model"></param> /// <returns></returns> public object PostShopSendGood(OrderDeliveryModel model) { CheckUserLogin(); string shopkeeperName = ""; long shopid = CurrentShopBranch.ShopId; long sbid = CurrentUser.ShopBranchId; shopkeeperName = CurrentShopBranch.UserName; var returnurl = String.Format("{0}/Common/ExpressData/SaveExpressData", CurrentUrlHelper.CurrentUrlNoPort()); if (model.deliveryType == DeliveryType.CityExpress.GetHashCode()) //同城物流 { var dadaconfig = CityExpressConfigApplication.GetDaDaCityExpressConfig(shopid); if (!dadaconfig.IsEnable) { throw new HimallApiException("未开启同城合作物流"); } var order = OrderApplication.GetOrder(model.orderId); if (order == null || order.ShopId != shopid || !(order.ShopBranchId > 0) || order.OrderStatus != Entities.OrderInfo.OrderOperateStatus.WaitDelivery) { throw new HimallApiException("错误的订单编号"); } //Log.Error("达达发货ShopBranchOrder-开始01:orderId:" + model.orderId); var sbdata = ShopBranchApplication.GetShopBranchById(sbid); string json = ExpressDaDaHelper.addAfterQuery(shopid, sbdata.DaDaShopId, model.shipOrderNumber); var resultObj = JsonConvert.DeserializeObject(json) as JObject; string status = resultObj["status"].ToString(); //Log.Error("达达发货ShopBranchOrder-开始02:status:" + status); if (status != "success") { //订单码过期,重发单 json = SendDaDaExpress(model.orderId, shopid, sbid, false); var rObj2 = JsonConvert.DeserializeObject(json) as JObject; string status2 = rObj2["status"].ToString(); if (status2 != "success") { string msg = rObj2["msg"].ToString(); return(ErrorResult(msg)); } } } OrderApplication.ShopSendGood(model.orderId, model.deliveryType, shopkeeperName, model.companyName, model.shipOrderNumber, returnurl); return(SuccessResult("发货成功")); }
//启动分发 public void OrderDelivery() { while (true) { Thread.Sleep(1000); try { //var orderAreaList = _operDal.GetDeliveryAreas(); var orderNotSend = _operDal.GeTbOrdersNotSend(); //根据area定义的名字,发送到对一个的socket //发送后,将数据库IsSend状态修改为1 foreach (var item in orderNotSend.GroupBy(x => x.OrderId)) { var orderId = item.Key; var list = new OrderDelivery { Content = new List <OrderContent>() }; var last = new OrderDeliveryModel(); foreach (var p in orderNotSend.Where(x => x.OrderId.Equals(orderId))) { last = p; list.Address = p.Address; list.CreateTime = p.CreateTime; list.OrderId = orderId; list.PhoneNumber = p.PhoneNumber; list.Content.Add(new OrderContent { BuyCnt = p.BuyCnt, CurPrice = p.CurPrice, StockCode = p.StockCode, Name = p.Name }); } list.Address = last.Address; list.CreateTime = last.CreateTime; list.PhoneNumber = last.PhoneNumber; list.OrderId = orderId; list.AreaId = last.AreaId; _dispatcherCore.SendMessage(last.AreaId, list); _operDal.UpdateTbOrdersSend(orderId); } } catch (Exception ex) { AppLogger.Error($"{ex.Message} {ex.StackTrace}", ex); } } }
public OrderDeliveryModel OrderLookUp(MacDeliveryModel lookup) { var delivery = _repo.GetDelivery(new DeliveryOrderQuery { DocNum = lookup.DeliveryNumber, ServerLocation = _settings.GetServerLocation, IsInternal = lookup.IsInternal }); OrderDeliveryModel deliveryModel = null; if (delivery != null) { delivery.IsIrDelivery = lookup.IsInternal; var items = _repo.GetDeliveryItems(new DeliveryOrderItemsQuery { DocNum = lookup.DeliveryNumber, ServerLocation = _settings.GetServerLocation, Username = _identity.Name, IsInternal = delivery.IsIrDelivery }).ToList(); deliveryModel = delivery.Map <Delivery, OrderDeliveryModel>(); deliveryModel.DeliveryNumber = lookup.DeliveryNumber; deliveryModel.IsInternal = lookup.IsInternal; FindActiveKits(items, deliveryModel); items.ForEach(i => { var model = i.Map <SerialNumberItem, DeliveryOrderItemModel>(); if (string.IsNullOrEmpty(i.MacId)) { deliveryModel.NotScannedItems.Add(model); } else { deliveryModel.ScannedItems.Add(model); } }); var dictionary = new Dictionary <string, int>(); var grouped = items.Where(i => i.RealItemCode != null).GroupBy(i => i.RealItemCode).ToList(); grouped.OrderBy(g => g.Count()).ToList().ForEach(g => dictionary.Add(g.Key, g.Count())); deliveryModel.ChartData = dictionary; } return(deliveryModel); }
public OrderDeliveryModel ConvertOrderItemsAndCustomerInfoToOrderDeliveryModel(List <OrderItem> orderItems, CustomerDetailDto customerDetail) { if (customerDetail == null) { throw new ArgumentNullException(nameof(CustomerDetailDto)); } var orderDeliveryModel = new OrderDeliveryModel(); // Build Delivery Address var deliveryAddressArr = new [] { $"{customerDetail.HouseNumber.ToUpper()} {customerDetail.Street}", customerDetail.Town, customerDetail.Postcode }; var deliveryAddress = string.Join(", ", deliveryAddressArr.Where(s => !string.IsNullOrEmpty(s))); // Build Order Model var orderModel = new OrderModel(); if (orderItems != null && orderItems.Count > 0) { orderModel.OrderNumber = orderItems.First().Order.OrderId; orderModel.OrderDate = orderItems.First().Order.OrderDate.ToString("dd-MMM-yyyy"); orderModel.DeliveryAddress = deliveryAddress; orderModel.DeliveryExpected = orderItems.First().Order.DeliveryExpected.ToString("dd-MMM-yyyy"); orderModel.OrderItems = orderItems.Select(orderItem => new OrderItemModel { Product = orderItem.Order.ContainsGift ? "Gift" : orderItem.Product.ProductName, Quantity = orderItem.Quantity, PriceEach = orderItem.Price }) .ToList(); orderDeliveryModel.Order = orderModel; } // Add CustomerModel to OrderDeliveryModel and Return orderDeliveryModel.Customer = new CustomerModel { FirstName = customerDetail.FirstName, LastName = customerDetail.LastName }; return(orderDeliveryModel); }
public OrderDeliveryModel DeliveryAddress(int orderid) { var query = from order in _context.Set <Order>() where order.OrderId == orderid select new { OrderDelivery = order.OrderDeliveries.FirstOrDefault() }; var record = query.FirstOrDefault(); var data = new OrderDeliveryModel { CreatedDate = record.OrderDelivery.CreatedDate, DeliveryAddress = record.OrderDelivery.DeliveryAddress, OrderDeliveryId = record.OrderDelivery.OrderDeliveryId, FullName = record.OrderDelivery.FullName, PhoneNumber = record.OrderDelivery.PhoneNumber }; return(data); }
public ActionResult Delivery(OrderDeliveryModel model) { try { //Getting The OrderId var orderId = Convert.ToInt32(TempData["OrderId"]); //Storing the model to the database _order.CreateDeliveryInfo(model, orderId); //redirecting to order controller return(RedirectToAction("Place", "Order", TempData["Order"] as OrderModel)); } catch (Exception ex) { TempData["Message"] = ex.Message; ModelState.AddModelError("Error", ex); return(Redirect(Request.UrlReferrer.ToString())); } }
public OrderDeliveryModel StoreDeliveryDetails(OrderDeliveryModel model, int orderId) { if (orderId <= 0) { throw new Exception("Invalid Order"); } var delivery = new OrderDelivery() { CreatedDate = DateTime.Now, DeliveryAddress = model.DeliveryAddress, FullName = model.FullName, PhoneNumber = model.PhoneNumber, OrderId = orderId }; _context.Set <OrderDelivery>().Add(delivery); _context.SaveChanges(); model.OrderDeliveryId = delivery.OrderDeliveryId; return(model); }
public OrderDeliveryModel CreateDeliveryInfo(OrderDeliveryModel model, int orderId) { // Create delivery details return(_repo.StoreDeliveryDetails(model, orderId)); }