public IActionResult OrderDeliveryStatistics()
 {
     if (!_permissionService.Authorize("ViewOrderDeliveryStatistics"))
     {
         return(View("_AccessDeniedView"));
     }
     ViewBag.Platforms = new SelectList(_commonService.GetDictionaryList(new List <DictionaryType>()
     {
         DictionaryType.Platform, DictionaryType.ThirdpartyOnlineSales, DictionaryType.Consignment
     }), "Id", "Value");
     ViewBag.WareHouses = new SelectList(_wareHouseService.GetAllWareHouseList(), "Id", "Name");
     ViewBag.PayTypes   = new SelectList(_commonService.GetBaseDictionaryList(DictionaryType.PayType), "Id", "Value");
     ViewBag.Deliveries = new SelectList(_deliveriesService.GetAllDeliveries(), "Id", "Name");
     return(View());
 }
Exemple #2
0
        public IActionResult Index()
        {
            if (!_permissionService.Authorize("ViewDelivery"))
            {
                return(View("_AccessDeniedView"));
            }
            var deliveries = _deliveriesService.GetAllDeliveries();

            return(View(deliveries));
        }
        public async Task <HttpResponseMessage> GetAllDeliveries(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "Deliveries/admin")] HttpRequest req)
        {
            string token = req.Headers["Authorization"].ToString().Replace("Bearer ", "");

            if (_authorizationsService.IsTokenValid(token, true))
            {
                List <Delivery> result = await _deliveriesService.GetAllDeliveries();

                return(result != null
                    ? new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(result, new JsonSerializerSettings()
                    {
                        ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                    }), Encoding.UTF8, "application/json")
                }
                    : new HttpResponseMessage(HttpStatusCode.NoContent));
            }
            // Authorized access only
            return(new HttpResponseMessage(HttpStatusCode.Unauthorized));
        }
Exemple #4
0
        public IActionResult SyncOrderDeliveryState([FromBody] OrderDeliveryInfo orderDeliveryInfo)
        {
            if (orderDeliveryInfo != null)
            {
                var zhShopId = _configuration.GetSection("Zhaohang")["shopId"]; //招行店铺号
                var order    = _orderService.GetOrderBySerialNumber(orderDeliveryInfo.OMSSerialNumber);
                if (order == null)
                {
                    _logService.Error(string.Format("订单快递信息同步时未找到订单号为{0}的订单", orderDeliveryInfo.OMSSerialNumber));
                    return(Json(new { State = false, Message = string.Format("OMS中未找到SerialNumber为{0}的订单", orderDeliveryInfo.OMSSerialNumber) }));
                }

                var delivery = _deliveriesService.GetAllDeliveries().Where(r => r.Isvalid && r.Code.Equals(orderDeliveryInfo.DeliveryCode)).FirstOrDefault();
                if (delivery == null)
                {
                    _logService.Error(string.Format("订单号为:{0}的订单在同步快递信息时未找到快递Code为{1}的快递方式", orderDeliveryInfo.OMSSerialNumber, orderDeliveryInfo.DeliveryCode));
                    return(Json(new { State = false, Message = string.Format("OMS中未匹配到Code为{0}的快递", orderDeliveryInfo.DeliveryCode) }));
                }

                if (order != null)
                {
                    order.DeliveryDate   = orderDeliveryInfo.DeliveryDate;
                    order.DeliveryNumber = orderDeliveryInfo.DeliveryNumber;
                    order.DeliveryTypeId = delivery.Id;
                    if (order.Type == OrderType.B2B)
                    {
                        order.State = OrderState.Finished;
                    }
                    else
                    {
                        order.State = OrderState.Delivered;
                    }
                    _orderService.UpdateOrder(order);

                    #region 订单日志(订单发货)
                    OrderLog orderLog = new OrderLog();
                    orderLog.OrderId    = order.Id;
                    orderLog.OrderState = order.State;
                    orderLog.PayState   = order.PayState;
                    orderLog.OptionType = "订单发货";
                    orderLog.Mark       = "订单发货";
                    _logService.InsertOrderLog(orderLog);
                    #endregion
                    _logService.Info(string.Format("OMS订单号为:{0},订单Id为:{1} ,从WMS到OMS同步订单物流发货状态为{2}", order.SerialNumber, order.Id, order.State.Description()));

                    //推送快递信息到订单辅助系统(官方的商城的订单才可以)
                    var orderList = new List <Order>();//需要通知的发货订单集合
                    if (order.Type == OrderType.B2C_XH && order.ShopId == 97)
                    {
                        //正常的订单流程
                        if (order.AppendType == 0)
                        {
                            orderList.Add(order);
                        }
                        //合并的订单
                        if (order.AppendType == AppendType.Combine)
                        {
                            var orderArr = order.OrgionSerialNumber.Split("_", StringSplitOptions.RemoveEmptyEntries);
                            //找出所有合并订单里面的子订单进行通知
                            for (int i = 0; i < orderArr.Length; i++)
                            {
                                var childOrder = _orderService.GetOrderBySerialNumber(orderArr[i].Trim());
                                childOrder.DeliveryNumber = order.DeliveryNumber;
                                if (childOrder != null)
                                {
                                    orderList.Add(childOrder);
                                }
                            }
                        }

                        //拆分的订单
                        if (order.AppendType == AppendType.Split)
                        {
                            //父订单单号
                            var orgionSerialNumber = order.OrgionSerialNumber.Split("(")[0].Trim();
                            if (!string.IsNullOrEmpty(orgionSerialNumber))
                            {
                                //判断拆分成的子订单是否发货,存在未发货的不去通知,子订单全部发货完成之后再进行通知商城订单发货
                                var childOrders = _omsAccessor.Get <Order>().Where(x => x.Isvalid && x.State != OrderState.Delivered && x.OrgionSerialNumber.Contains(orgionSerialNumber));
                                if (childOrders == null || childOrders.Count() == 0)
                                {
                                    var updateOrder = _orderService.GetOrderBySerialNumber(orgionSerialNumber);
                                    updateOrder.DeliveryNumber = childOrders.FirstOrDefault().DeliveryNumber;
                                    if (updateOrder != null)
                                    {
                                        orderList.Add(updateOrder);
                                    }
                                }
                            }
                        }
                        //通知发货状态
                        if (orderList != null && orderList.Count > 0)
                        {
                            SyncOrderDeliveryToAssist(orderList);
                        }
                    }
                    //推送快递信息到招行系统
                    else if (order.Type == OrderType.B2C_XH && order.ShopId == int.Parse(zhShopId))
                    {
                        //正常的订单流程
                        if (order.AppendType == 0)
                        {
                            orderList.Add(order);
                        }
                        //合并的订单
                        if (order.AppendType == AppendType.Combine)
                        {
                            var orderArr = order.OrgionSerialNumber.Split("_", StringSplitOptions.RemoveEmptyEntries);
                            //找出所有合并订单里面的子订单进行通知
                            for (int i = 0; i < orderArr.Length; i++)
                            {
                                var childOrder = _orderService.GetOrderBySerialNumber(orderArr[i].Trim());
                                childOrder.DeliveryNumber = order.DeliveryNumber;
                                childOrder.DeliveryTypeId = order.DeliveryTypeId;
                                if (childOrder != null)
                                {
                                    orderList.Add(childOrder);
                                }
                            }
                        }

                        //拆分的订单
                        if (order.AppendType == AppendType.Split)
                        {
                            //父订单单号
                            var orgionSerialNumber = order.OrgionSerialNumber.Split("(")[0].Trim();
                            if (!string.IsNullOrEmpty(orgionSerialNumber))
                            {
                                //判断拆分成的子订单是否发货,存在未发货的不去通知,子订单全部发货完成之后再进行通知商城订单发货
                                var childOrders = _omsAccessor.Get <Order>().Where(x => x.Isvalid && x.State != OrderState.Delivered && x.OrgionSerialNumber.Contains(orgionSerialNumber));
                                if (childOrders == null || childOrders.Count() == 0)
                                {
                                    var updateOrder = _orderService.GetOrderBySerialNumber(orgionSerialNumber);
                                    updateOrder.DeliveryNumber = childOrders.FirstOrDefault().DeliveryNumber;
                                    updateOrder.DeliveryTypeId = childOrders.FirstOrDefault().DeliveryTypeId;
                                    if (updateOrder != null)
                                    {
                                        orderList.Add(updateOrder);
                                    }
                                }
                            }
                        }
                        //通知发货状态
                        if (orderList != null && orderList.Count > 0)
                        {
                            foreach (var item in orderList)
                            {
                                var result = _cmbService.ReturnDeliverResultToCMB(item);
                            }
                        }
                    }
                    //推送发货状态到线下店
                    else if (order.Type == OrderType.B2C_XH && order.PSerialNumber.Contains("XS"))
                    {
                        //正常的订单流程
                        if (order.AppendType == 0)
                        {
                            orderList.Add(order);
                        }
                        //合并的订单
                        if (order.AppendType == AppendType.Combine)
                        {
                            var orderArr = order.OrgionSerialNumber.Split("_", StringSplitOptions.RemoveEmptyEntries);
                            //找出所有合并订单里面的子订单进行通知
                            for (int i = 0; i < orderArr.Length; i++)
                            {
                                var childOrder = _orderService.GetOrderBySerialNumber(orderArr[i].Trim());
                                childOrder.DeliveryNumber = order.DeliveryNumber;
                                if (childOrder != null)
                                {
                                    orderList.Add(childOrder);
                                }
                            }
                        }

                        //拆分的订单
                        if (order.AppendType == AppendType.Split)
                        {
                            //父订单单号
                            var orgionSerialNumber = order.OrgionSerialNumber.Split("(")[0].Trim();
                            if (!string.IsNullOrEmpty(orgionSerialNumber))
                            {
                                //判断拆分成的子订单是否发货,存在未发货的不去通知,子订单全部发货完成之后再进行通知商城订单发货
                                var childOrders = _omsAccessor.Get <Order>().Where(x => x.Isvalid && x.State != OrderState.Delivered && x.OrgionSerialNumber.Contains(orgionSerialNumber));
                                if (childOrders == null || childOrders.Count() == 0)
                                {
                                    var updateOrder = _orderService.GetOrderBySerialNumber(orgionSerialNumber);
                                    updateOrder.DeliveryNumber = childOrders.FirstOrDefault().DeliveryNumber;
                                    if (updateOrder != null)
                                    {
                                        orderList.Add(updateOrder);
                                    }
                                }
                            }
                        }
                        //通知发货状态
                        if (orderList != null && orderList.Count > 0)
                        {
                            _orderService.ApiReturnOffLineOrderState(orderList);
                        }
                    }
                }

                return(Json(new { State = true, Message = "成功" }));
            }
            else
            {
                return(Json(new { State = false, Message = "no data" }));
            }
        }