Ejemplo n.º 1
0
        /// <summary>
        /// 根据ExpRouteId删除物流详细信息
        /// </summary>
        /// <returns></returns>
        public ResultDTO DelExpressTraceExt(Guid ExpRouteId)
        {
            ResultDTO dto = null;

            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                var            expressTrace   = ExpressTrace.ObjectSet().Where(p => p.ExpRouteId == ExpRouteId).ToList();
                if (expressTrace.Count() > 0)
                {
                    foreach (var item in expressTrace)
                    {
                        item.EntityState = EntityState.Deleted;
                        contextSession.Delete(item);
                    }
                    contextSession.SaveChanges();
                }
                dto = new ResultDTO()
                {
                    ResultCode = 0, Message = "删除物流信息成功", isSuccess = true
                };
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("佣金信息删除异常。MallApply:{0}", ex.Message));
                dto = new ResultDTO()
                {
                    ResultCode = 1, Message = ex.Message, isSuccess = false
                };
            }
            return(dto);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 保存物流详细信息
        /// </summary>
        /// <returns></returns>
        public ResultDTO SaveExpressTraceListExt(List <ExpressTraceDTO> list)
        {
            ResultDTO dto = null;

            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                if (list.Count() > 0)
                {
                    foreach (var item in list)
                    {
                        ExpressTrace model = new ExpressTrace();
                        model.Id            = item.Id;
                        model.ExpRouteId    = item.ExpRouteId;
                        model.AcceptTime    = item.AcceptTime;
                        model.AcceptStation = item.AcceptStation;
                        model.Remark        = item.Remark;
                        model.EntityState   = EntityState.Added;
                        contextSession.SaveObject(model);
                    }
                }
                contextSession.SaveChanges();
                dto = new ResultDTO {
                    ResultCode = 0, Message = "保存成功", isSuccess = true
                };
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("佣金信息保存异常。ExpressTrace:{0}", ex.Message));
                dto = new ResultDTO {
                    ResultCode = 1, Message = ex.Message, isSuccess = false
                };
            }
            return(dto);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据ExpRouteId查询物流详细信息
        /// </summary>
        /// <param name="search">查询类</param>
        /// <returns>结果</returns>
        public List <ExpressTraceDTO> GetExpressTraceListExt(ExpressTraceDTO search)
        {
            var expressTracelist = ExpressTrace.ObjectSet().ToList();

            if (search.ExpRouteId != Guid.Empty)
            {
                expressTracelist = expressTracelist.Where(p => p.ExpRouteId == search.ExpRouteId).ToList();
            }
            List <ExpressTraceDTO> searchlist = new List <ExpressTraceDTO>();

            if (expressTracelist.Count() > 0)
            {
                foreach (var item in expressTracelist)
                {
                    ExpressTraceDTO model = new ExpressTraceDTO();
                    model.Id            = item.Id;
                    model.ExpRouteId    = item.ExpRouteId;
                    model.AcceptTime    = item.AcceptTime;
                    model.AcceptStation = item.AcceptStation;
                    model.Remark        = item.Remark;
                    searchlist.Add(model);
                }
            }
            return(searchlist);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 删除极光物流数据信息
        /// </summary>
        private ResultDTO DeleteExpressTrace(Guid orderExpressRouteId)
        {
            ResultDTO dto = null;

            try
            {
                string sql = " delete from ExpressTrace where ExpRouteId='" + orderExpressRouteId + "'";
                ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sql);
                dto = new ResultDTO()
                {
                    ResultCode = 0, Message = "删除成功", isSuccess = true
                };
            }
            catch (Exception ex)
            {
                LogHelper.Debug(string.Format("OTMSJob删除急速物流异常信息:{0}", ex));
                dto = new ResultDTO()
                {
                    ResultCode = 1, Message = ex.Message, isSuccess = false
                };
            }
            return(dto);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取用户最新的所有订单的物流信息
        /// 查询前三条数据
        /// </summary>
        /// <param name="AppId"></param>
        /// <param name="Userid"></param>
        /// <returns></returns>
        public ResultDTO <ListResult <ComOrderExpressNew> > GetUserAllNewOrderExpressExt(Guid AppId, Guid Userid)
        {
            ListResult <ComOrderExpressNew> expressNews = new ListResult <ComOrderExpressNew>();

            expressNews.List = new List <ComOrderExpressNew>();
            ResultDTO <ListResult <ComOrderExpressNew> > result = new ResultDTO <ListResult <ComOrderExpressNew> >()
            {
                isSuccess  = false,
                ResultCode = 1,
                Data       = expressNews
            };
            string  json = string.Empty;
            JObject obj  = null;

            try
            {
                LogHelper.Info("【三条---京东】京东物流[开始调用]AppId=" + AppId + "  Userid=" + Userid + "");
                //获取已发货的订单信息
                //var comOrders = CommodityOrder.ObjectSet().Where(p => p.State == 2 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).ToList();
                var comOrders = CommodityOrder.ObjectSet().Where(p => p.State != 0 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).Take(3).ToList();
                LogHelper.Info("【三条---京东】京东物流comOrders-->[" + comOrders.Count() + "]");
                if (comOrders != null)
                {
                    List <ExpressTrace> expressList = null;
                    ComOrderExpressNew  expressNew  = null;
                    foreach (var order in comOrders.ToList())
                    {
                        expressList = new List <ExpressTrace>();
                        expressNew  = new ComOrderExpressNew();
                        var OrderItemInfo = OrderItem.ObjectSet().Where(p => p.CommodityOrderId == order.Id).FirstOrDefault();
                        expressNew.CommodityOrderId = order.Id;      //订单id
                        expressNew.Pic = OrderItemInfo.PicturesPath; //首条订单图片
                        //京东信息
                        var commodityOrderId = order.Id.ToString();
                        if (ThirdECommerceHelper.IsJingDongDaKeHu(order.AppId))
                        {
                            //var jdOrderitem = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId));
                            var query = JdOrderItem.ObjectSet().Where(p => p.CommodityOrderId.Contains(commodityOrderId));

                            //去重后的父单集合
                            var jdOrderList = query.Select(p => new { p.JdOrderId }).GroupBy(p => p.JdOrderId).ToList();

                            if (jdOrderList.Any())
                            {
                                jdOrderList.ForEach(p =>
                                {
                                    var jdwuliu = JdHelper.orderTrack(p.Key);

                                    LogHelper.Info("【三条---京东】京东物流====返回-->[" + jdwuliu + "]");
                                    if (jdwuliu != null)
                                    {
                                        JArray objson = JArray.Parse(jdwuliu);
                                        foreach (var item in objson)
                                        {
                                            ExpressTrace Express  = new ExpressTrace();
                                            Express.AcceptTime    = DateTime.Parse(item["msgTime"].ToString());
                                            Express.AcceptStation = item["content"].ToString().Trim();
                                            expressList.Add(Express);
                                        }
                                        AddExpressNewAll(expressNews, expressList, expressNew, "京东");
                                    }
                                });
                            }
                        }
                        else if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId))//网易严选或第三方电商
                        {
                            var orderItem = OrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId == order.Id);
                            var express   = ThirdECommerceHelper.GetOrderItemExpressTrace(order.AppId, orderItem.Id);
                            LogHelper.Info("【三条---严选】网易严选物流-->[" + JsonHelper.JsonSerializer(express) + "]");
                            if (express != null)
                            {
                                if (express.ExpressTraceList != null && express.ExpressTraceList.Count > 0)
                                {
                                    express.ExpressTraceList.ForEach(p =>
                                    {
                                        ExpressTrace Express  = new ExpressTrace();
                                        Express.AcceptTime    = p.Time == null ? DateTime.Now : DateTime.Parse(p.Time);
                                        Express.AcceptStation = p.Desc;
                                        expressList.Add(Express);
                                    });

                                    string name      = "严选";
                                    var    yxExpress = YXExpressTrace.ObjectSet().Where(p => p.OrderId == order.Id).FirstOrDefault();
                                    if (yxExpress != null)
                                    {
                                        name = yxExpress.ExpressCompany;
                                    }
                                    AddExpressNewAll(expressNews, expressList, expressNew, name);
                                }
                            }
                        }
                        else if (ThirdECommerceHelper.IsSuNingYiGou(order.AppId))//苏宁店铺
                        {
                            var snOrderitem = SNOrderItem.ObjectSet().FirstOrDefault(p => p.OrderId == order.Id);

                            SNExpressTraceFacade snExpress = new SNExpressTraceFacade();
                            var SuningWuliu = snExpress.GetExpressTrace(order.Id.ToString(), snOrderitem.OrderItemId.ToString());
                            LogHelper.Info("【三条---苏宁】苏宁物流[" + order.Id.ToString() + "," + snOrderitem.OrderItemId.ToString() + "]===返回-->[" + JsonHelper.JsonSerializer(SuningWuliu) + "]");
                            if (SuningWuliu != null)
                            {
                                SuningWuliu.ForEach(p =>
                                {
                                    ExpressTrace Express  = new ExpressTrace();
                                    Express.AcceptTime    = p.OperateTime == null ? DateTime.Now : p.OperateTime.Value;
                                    Express.AcceptStation = p.OperateState;
                                    expressList.Add(Express);
                                });
                                AddExpressNewAll(expressNews, expressList, expressNew, "苏宁");
                            }
                        }
                        else if (ThirdECommerceHelper.IsFangZheng(order.AppId))//方正店铺
                        {
                            var FangZhengWuliu = FangZhengSV.FangZheng_Logistics_InfoList(order.Id);
                            LogHelper.Info("【三条---方正】方正物流[" + commodityOrderId + "]===返回-->[" + JsonHelper.JsonSerializer(FangZhengWuliu) + "]");
                            if (FangZhengWuliu != null)
                            {
                                FangZhengWuliu.ExpressTraceList.ForEach(p =>
                                {
                                    ExpressTrace Express  = new ExpressTrace();
                                    Express.AcceptTime    = DateTime.Parse(p.Time);
                                    Express.AcceptStation = p.Desc;
                                    expressList.Add(Express);
                                });
                                AddExpressNewAll(expressNews, expressList, expressNew, "方正");
                            }
                        }
                        else
                        {
                            if (order.ExpOrderNo != null)
                            {
                                json = Express100SV.GetExpressFromKD100(order.ExpOrderNo, order.ShipExpCo);
                                obj  = JObject.Parse(json);
                                LogHelper.Info(string.Format("【三条---快递100】快递100:订单Id:{0},物流信息:{1}", order.Id, obj));
                                if (obj["message"].ToString().ToLower().Equals("ok"))
                                {
                                    JToken arr = obj["data"];
                                    foreach (var item in arr)
                                    {
                                        ExpressTrace Express = new ExpressTrace();
                                        Express.AcceptTime    = Convert.ToDateTime(item["ftime"].ToString());
                                        Express.AcceptStation = item["context"].ToString().Trim();
                                        expressList.Add(Express);
                                    }
                                    LogHelper.Info(string.Format("【三条---快递100】arr[{0}]--->expressList[{1}]", arr.Count(), expressList.Count));



                                    //快递单当前签收状态,包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态,其中4-7需要另外开通才有效
                                    int deliverystatus = Convert.ToInt32(obj["state"].ToString());
                                    LogHelper.Info("【三条---快递100】deliverystatus-->[" + deliverystatus + "]");
                                    if (deliverystatus == 0)
                                    {
                                        expressNew.shipmentsTime = expressList.Min(p => p.AcceptTime);
                                        expressNew.state         = "已发货";
                                        expressNew.Remarked      = "您的订单已发货,由" + order.ShipExpCo + "快递配送,请注意物流信息~";
                                        expressNews.List.Add(expressNew);
                                    }
                                    else if (deliverystatus == 5)
                                    {
                                        expressNew.shipmentsTime = expressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime;
                                        expressNew.state         = "派件中";
                                        expressNew.Remarked      = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~";
                                        expressNews.List.Add(expressNew);
                                    }
                                    else if (deliverystatus == 3)
                                    {
                                        expressNew.shipmentsTime = expressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime;
                                        expressNew.state         = "已签收";
                                        expressNew.Remarked      = "您的订单已签收";
                                        expressNews.List.Add(expressNew);
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                            }
                        }
                    }
                    expressNews.Count = expressNews.List == null ? 0 : expressNews.List.Count();
                    if (expressNews.List.Any())
                    {
                        ListResult <ComOrderExpressNew> express = new ListResult <ComOrderExpressNew>();
                        express.List = new List <ComOrderExpressNew>();
                        express.List = expressNews.List.Take(3).ToList();
                        //取前三条
                        result.Data       = express;
                        result.isSuccess  = true;
                        result.ResultCode = 0;
                    }
                    else
                    {
                        result.Data       = expressNews;
                        result.isSuccess  = false;
                        result.ResultCode = 1;
                    }
                    LogHelper.Info(string.Format("获取用户最新的所有订单物流信息返回数据:{0}", JsonHelper.JsonSerializer(result)));
                    return(result);
                }
                else
                {
                    return(result);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("获取用户最新的所有订单物流信息信息异常,异常信息:{0}", ex));
                return(result);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 获取用户最新的订单物流信息
        /// 查询第一条数据
        /// </summary>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.Commodity.ComOrderExpressNew> GetUserNewOrderExpressExt(System.Guid AppId, System.Guid Userid)
        {
            LogHelper.Info("【一条物流】====AppId-->[" + AppId + "]--->UserId=[" + Userid + "]");
            ComOrderExpressNew             ExpressNews = new ComOrderExpressNew();
            ResultDTO <ComOrderExpressNew> result      = new ResultDTO <ComOrderExpressNew>()
            {
                ResultCode = 1,
                isSuccess  = false,
                Data       = ExpressNews
            };
            string  json = null;
            JObject obj  = null;

            try
            {
                //获取已发货的订单信息
                var ComOrder = CommodityOrder.ObjectSet().Where(p => p.State == 2 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).FirstOrDefault();

                if (ComOrder != null)
                {
                    List <ExpressTrace> ExpressList = new List <ExpressTrace>();
                    var OrderItemInfo = OrderItem.ObjectSet().Where(p => p.CommodityOrderId == ComOrder.Id).FirstOrDefault();
                    ExpressNews.CommodityOrderId = ComOrder.Id;   //订单id
                    ExpressNews.Pic = OrderItemInfo.PicturesPath; //首条订单图片
                    //京东信息
                    var commodityOrderId = ComOrder.Id;

                    /*
                     * var jdOrderitem = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId));
                     * LogHelper.Debug(string.Format("物流信息(订单信息),订单id{0}:", ComOrder.Id));
                     * //急速数据信息
                     * if (!string.IsNullOrWhiteSpace(ComOrder.ExpOrderNo) && jdOrderitem == null)
                     * {
                     *  //根据快递编号获取急速数据信息
                     *  json = GetWuliuJson(ComOrder.ExpOrderNo);
                     *  obj = JObject.Parse(json);
                     *  LogHelper.Info(string.Format("极速物流信息:订单Id:{0},物流信息:{1}", ComOrder.Id, obj));
                     *  if (Convert.ToInt32(obj["status"]) != 0)
                     *  {
                     *      return result;
                     *  }
                     *  JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString());
                     *  foreach (var item in arr)
                     *  {
                     *      ExpressTrace Express = new ExpressTrace();
                     *      Express.AcceptTime = Convert.ToDateTime(item["time"].ToString());
                     *      Express.AcceptStation = item["status"].ToString().Trim();
                     *      ExpressList.Add(Express);
                     *  }
                     *
                     *  if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 1)
                     *  {
                     *      ExpressNews.shipmentsTime = ExpressList.Min(p => p.AcceptTime);
                     *      ExpressNews.state = "已发货";
                     *      ExpressNews.Remarked = "您的订单已发货,由" + ComOrder.ShipExpCo + "快递配送,请注意物流信息~";
                     *      result.ResultCode = 0;
                     *      result.isSuccess = true;
                     *  }
                     *  else if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 2)
                     *  {
                     *      ExpressNews.shipmentsTime = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime;
                     *      ExpressNews.state = "派件中";
                     *      ExpressNews.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~";
                     *      result.ResultCode = 0;
                     *      result.isSuccess = true;
                     *  }
                     *  else
                     *  {
                     *      result.ResultCode = 1;
                     *      result.isSuccess = false;
                     *  }
                     * }
                     * else
                     * {
                     *  if (jdOrderitem != null)
                     *  {
                     *      var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId);
                     *      if (jdwuliu != null)
                     *      {
                     *          JArray objson = JArray.Parse(jdwuliu);
                     *          foreach (var item in objson)
                     *          {
                     *              ExpressTrace Express = new ExpressTrace();
                     *              Express.AcceptTime = DateTime.Parse(item["msgTime"].ToString());
                     *              Express.AcceptStation = item["content"].ToString().Trim();
                     *              ExpressList.Add(Express);
                     *          }
                     *          var NewExpress = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault();
                     *          if (NewExpress.AcceptStation.Contains("正在配送") || NewExpress.AcceptStation.Contains("自提"))
                     *          {
                     *              ExpressNews.shipmentsTime = NewExpress.AcceptTime;
                     *              ExpressNews.state = "派件中";
                     *              ExpressNews.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~";
                     *              result.ResultCode = 0;
                     *              result.isSuccess = true;
                     *          }
                     *          else if (NewExpress.AcceptStation.Contains("已签收"))
                     *          {
                     *              result.ResultCode = 1;
                     *              result.isSuccess = false;
                     *          }
                     *          else if (NewExpress.AcceptStation.Contains("出库") || NewExpress != null)
                     *          {
                     *              ExpressNews.shipmentsTime = ExpressList.Min(p => p.AcceptTime);
                     *              ExpressNews.state = "已发货";
                     *              ExpressNews.Remarked = "您的订单已发货,由京东快递配送,请注意物流信息~";
                     *              result.ResultCode = 0;
                     *              result.isSuccess = true;
                     *          }
                     *      }
                     *  }
                     * }*/



                    if (ThirdECommerceHelper.IsJingDongDaKeHu(ComOrder.AppId))
                    {
                        string orderId = commodityOrderId.ToString().ToLower();
                        LogHelper.Info("IsJingDongDaKeHu1--->" + orderId);



                        var jdOrderitem = JdOrderItem.ObjectSet().Where(p => p.CommodityOrderId.ToLower() == orderId).FirstOrDefault();
                        LogHelper.Info("IsJingDongDaKeHu2--->" + orderId);
                        if (jdOrderitem != null)
                        {
                            LogHelper.Info("IsJingDongDaKeHu3--->" + orderId);
                            var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId);

                            LogHelper.Info("【一条---京东】京东物流[" + JsonHelper.JsonSerializer(jdOrderitem) + "]====返回-->[" + jdwuliu + "]");
                            if (jdwuliu != null)
                            {
                                JArray objson = JArray.Parse(jdwuliu);
                                foreach (var item in objson)
                                {
                                    ExpressTrace Express = new ExpressTrace();
                                    Express.AcceptTime    = DateTime.Parse(item["msgTime"].ToString());
                                    Express.AcceptStation = item["content"].ToString().Trim();
                                    ExpressList.Add(Express);
                                }
                                AddExpressNew(ExpressList, ExpressNews, result);
                            }
                        }
                    }
                    else if (ThirdECommerceHelper.IsWangYiYanXuan(ComOrder.AppId))//网易严选或第三方电商
                    {
                        var yxOrder = YXOrder.ObjectSet().FirstOrDefault(p => p.OrderId == commodityOrderId);
                        if (yxOrder != null)
                        {
                            var express = ThirdECommerceHelper.GetOrderItemExpressTrace(AppId, yxOrder.Id);

                            LogHelper.Info("【一条---严选】网易严选物流[" + JsonHelper.JsonSerializer(yxOrder) + "]===返回-->[" + JsonHelper.JsonSerializer(express) + "]");
                            if (express != null)
                            {
                                if (express.ExpressTraceList != null && express.ExpressTraceList.Count > 0)
                                {
                                    express.ExpressTraceList.ForEach(p =>
                                    {
                                        ExpressTrace Express  = new ExpressTrace();
                                        Express.AcceptTime    = p.Time == null ? DateTime.Now : DateTime.Parse(p.Time);
                                        Express.AcceptStation = p.Desc;
                                        ExpressList.Add(Express);
                                    });
                                    AddExpressNew(ExpressList, ExpressNews, result);
                                }
                            }
                        }
                    }
                    else if (ThirdECommerceHelper.IsSuNingYiGou(ComOrder.AppId))//苏宁店铺
                    {
                        var snOrderitem = SNOrderItem.ObjectSet().FirstOrDefault(p => p.OrderId == commodityOrderId);
                        if (snOrderitem != null)
                        {
                            SNExpressTraceFacade snExpress = new SNExpressTraceFacade();
                            var SuningWuliu = snExpress.GetExpressTrace(commodityOrderId.ToString(), snOrderitem.Id.ToString());

                            LogHelper.Info("【一条---苏宁】苏宁物流[" + JsonHelper.JsonSerializer(snOrderitem) + "]===返回-->[" + JsonHelper.JsonSerializer(SuningWuliu) + "]");
                            if (SuningWuliu != null)
                            {
                                SuningWuliu.ForEach(p =>
                                {
                                    ExpressTrace Express  = new ExpressTrace();
                                    Express.AcceptTime    = p.OperateTime == null ? DateTime.Now : p.OperateTime.Value;
                                    Express.AcceptStation = p.OperateState;
                                    ExpressList.Add(Express);
                                });
                                AddExpressNew(ExpressList, ExpressNews, result);
                            }
                        }
                    }
                    else if (ThirdECommerceHelper.IsFangZheng(ComOrder.AppId))//方正店铺
                    {
                        var FangZhengWuliu = FangZhengSV.FangZheng_Logistics_InfoList(commodityOrderId);
                        LogHelper.Info("【一条---方正】方正物流[" + commodityOrderId + "]===返回-->[" + JsonHelper.JsonSerializer(FangZhengWuliu) + "]");
                        if (FangZhengWuliu != null)
                        {
                            FangZhengWuliu.ExpressTraceList.ForEach(p =>
                            {
                                ExpressTrace Express  = new ExpressTrace();
                                Express.AcceptTime    = DateTime.Parse(p.Time);
                                Express.AcceptStation = p.Desc;
                                ExpressList.Add(Express);
                            });
                            AddExpressNew(ExpressList, ExpressNews, result);
                        }
                    }
                    else
                    {
                        json = Express100SV.GetExpressFromKD100(ComOrder.ExpOrderNo, ComOrder.ShipExpCo);
                        obj  = JObject.Parse(json);
                        LogHelper.Info(string.Format("【一条---快递100】快递100:订单Id:{0},物流信息:{1}", commodityOrderId, obj));
                        if (obj["message"].ToString().ToLower().Equals("ok"))
                        {
                            JArray arr = (JArray)JsonConvert.DeserializeObject(obj["data"].ToString());
                            foreach (var item in arr)
                            {
                                ExpressTrace Express = new ExpressTrace();
                                Express.AcceptTime    = Convert.ToDateTime(item["ftime"].ToString());
                                Express.AcceptStation = item["context"].ToString().Trim();

                                ExpressList.Add(Express);
                            }
                            //快递单当前签收状态,包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态,其中4-7需要另外开通才有效
                            int deliverystatus = Convert.ToInt32(obj["state"].ToString());
                            if (deliverystatus == 0)
                            {
                                ExpressNews.shipmentsTime = ExpressList.Min(p => p.AcceptTime);
                                ExpressNews.state         = "已发货";
                                ExpressNews.Remarked      = "您的订单已发货,由" + ComOrder.ShipExpCo + "快递配送,请注意物流信息~";
                                result.ResultCode         = 0;
                                result.isSuccess          = true;
                            }
                            else if (deliverystatus == 5)
                            {
                                ExpressNews.shipmentsTime = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime;
                                ExpressNews.state         = "派件中";
                                ExpressNews.Remarked      = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~";
                                result.ResultCode         = 0;
                                result.isSuccess          = true;
                            }
                            else if (deliverystatus == 3)
                            {
                                ExpressNews.shipmentsTime = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime;
                                ExpressNews.state         = "已签收";
                                ExpressNews.Remarked      = "您的订单已签收";
                                result.ResultCode         = 0;
                                result.isSuccess          = true;
                            }
                        }
                    }



                    result.Data = ExpressNews;
                    LogHelper.Info("Express100--->result[" + JsonHelper.JsonSerializer(result) + "]");
                    return(result);
                }
                else
                {
                    return(result);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("获取用户最新的订单物流信息信息异常,异常信息:{0}", ex));
                return(result);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        ///  获取物流跟踪信息
        /// </summary>
        public void GetOrderExpressForJobExt()
        {
            ContextSession contextSession = ContextFactory.CurrentThreadContext;

            try
            {
                Guid EsAppId        = Guid.Parse("8B4D3317-6562-4D51-BEF1-0C05694AC3A6");
                var  commodityOrder = CommodityOrder.ObjectSet().Where(p => (p.State == 1 || p.State == 2) && p.EsAppId == EsAppId).AsQueryable();
                if (commodityOrder.Count() > 0)
                {
                    LogHelper.Info(string.Format("commodityOrder中的Count:{0}", commodityOrder));
                    foreach (var item in commodityOrder)
                    {
                        //当表中存在这个订单式撤销
                        var exEntity = LongisticsTrack.ObjectSet().FirstOrDefault(p => p.Code == item.Code);
                        if (exEntity == null)
                        {
                            LongisticsTrack model = new LongisticsTrack();
                            model.Id           = Guid.NewGuid();
                            model.Code         = item.Code;
                            model.AppName      = item.AppName;
                            model.SupplierName = item.SupplierName;
                            model.SupplierCode = item.SupplierCode;
                            model.AppId        = item.AppId;
                            model.EsAppId      = item.EsAppId ?? Guid.Empty;
                            model.SupplierType = item.SupplierType.ToString();
                            var orderitem = OrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId == item.Id);
                            if (orderitem != null)
                            {
                                model.CommodityDetail = orderitem.Name + "(数量:" + orderitem.Number + ",属性:" + orderitem.CommodityAttributes + ")";
                            }
                            //下订单时间
                            model.Ordertime = item.SubTime;
                            //上传订单时间
                            model.UploadExpresstime = item.ShipmentsTime;

                            var commodityOrderId = item.Id.ToString();
                            var jdOrderitem      = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId));
                            if (jdOrderitem != null)
                            {
                                //查询京东物流的订单信息
                                var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId);
                                if (jdwuliu != null)
                                {
                                    JArray objson = JArray.Parse(jdwuliu);
                                    LogHelper.Info(string.Format("obj京东信息:{0}", objson.ToString()));
                                    int count = 0;
                                    foreach (var _item in objson)
                                    {
                                        if (count == 0)
                                        {
                                            model.Expressdeliverytime = DateTime.Parse(_item["msgTime"].ToString());
                                        }
                                        if (count == 1)
                                        {
                                            model.ExpressSdtime = DateTime.Parse(_item["msgTime"].ToString());
                                        }
                                        count++;
                                    }
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(item.ExpOrderNo))
                                {
                                    var result = (from a in ExpressTrace.ObjectSet()
                                                  join b in OrderExpressRoute.ObjectSet()
                                                  on a.ExpRouteId equals b.Id
                                                  where b.ExpOrderNo == item.ExpOrderNo
                                                  select a).ToList();

                                    if (result.Count() == 1)
                                    {
                                        model.Expressdeliverytime = result[0].AcceptTime;
                                        model.ExpressSdtime       = result[0].AcceptTime;
                                    }
                                    if (result.Count() > 2)
                                    {
                                        model.Expressdeliverytime = result[0].AcceptTime;
                                        model.ExpressSdtime       = result[1].AcceptTime;
                                    }
                                }
                            }
                            model.Confirmtime = item.ConfirmTime;
                            model.SubTime     = DateTime.Now;
                            model.IsDel       = false;
                            model.EntityState = System.Data.EntityState.Added;
                            contextSession.SaveObject(model);
                        }
                    }
                    contextSession.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("OTMSJob错误信息:{0}", ex.Message));
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 按快递单号获取快递路由信息。
        /// </summary>
        /// <returns></returns>
        public ResultDTO <OrderExpressRouteExtendDTO> GetExpressRouteByExpNoExt(Jinher.AMP.BTP.Deploy.OrderExpressRouteDTO express)
        {
            ResultDTO <OrderExpressRouteExtendDTO> result = new ResultDTO <OrderExpressRouteExtendDTO>();

            try
            {
                if (express == null)
                {
                    result.ResultCode = 1;
                    result.Message    = "参数错误,参数不能为空!";
                    return(result);
                }
                else if (string.IsNullOrWhiteSpace(express.ShipExpCo))
                {
                    result.ResultCode = 2;
                    result.Message    = "参数错误,物流公司名称不能为空!";
                    return(result);
                }
                else if (string.IsNullOrWhiteSpace(express.ExpOrderNo))
                {
                    result.ResultCode = 3;
                    result.Message    = "参数错误,运单号不能为空!";
                    return(result);
                }

                var cname  = express.ShipExpCo.Replace("快递", "").Replace("速递", "").Replace("物流", "").Replace("配送", "").Replace("货运", "").Replace("快运", "").Replace("速运", "").ToUpper();
                var ocInfo = ExpressCode.AllExpCodes.Where(ec => ec.ExpCompanyName.ToUpper().Contains(cname));
                if (!ocInfo.Any())
                {
                    result.ResultCode = 4;
                    result.Message    = "暂不支持该物流公司的快递单号查询!";
                    return(result);
                }
                express.ShipperCode = ocInfo.First().ExpCode;

                var oerQuery = (from oer in OrderExpressRoute.ObjectSet()
                                where oer.ShipperCode == express.ShipperCode && oer.ExpOrderNo == express.ExpOrderNo
                                select oer).FirstOrDefault();
                if (oerQuery == null)
                {
                    return(result);
                }
                OrderExpressRouteExtendDTO oerDto = new OrderExpressRouteExtendDTO();
                oerDto.FillWith(oerQuery);
                var etQuery = (from et in ExpressTrace.ObjectSet()
                               where et.ExpRouteId == oerQuery.Id
                               orderby et.AcceptTime descending
                               select et).ToList();
                if (etQuery.Any())
                {
                    List <ExpressTraceDTO> oerList = etQuery.ConvertAll <ExpressTraceDTO>(exp => exp.ToEntityData());
                    oerDto.Traces = oerList;
                }
                result.Data = oerDto;
            }
            catch (Exception ex)
            {
                result.ResultCode = -1;
                result.Message    = string.Format("按快递单号获取快递路由信息异常,异常信息:{0}", ex);
                return(result);
            }
            return(result);
        }
Ejemplo n.º 9
0
        /*
         * private void GetWuliu(OrderExpressRoute orderExpressRoute,Guid AppId)
         * {
         *  JObject obj = null;
         *  string json = null;
         *  try
         *  {
         *      if (string.IsNullOrWhiteSpace(orderExpressRoute.Deliverystatus))
         *      {
         #region 当没有物流信息时添加数据
         *          json = GetWuliuJson(orderExpressRoute, AppId);
         *          obj = JObject.Parse(json);
         *          if (obj["status"].ToString() != null && obj["status"].ToString() == "0")
         *          {
         *              //先删除数据然后添加
         *              var res = DeleteExpressTrace(orderExpressRoute.Id);
         *              if (res.isSuccess==true)
         *              {
         *                  JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString());
         *                  if (arr.Count() > 0)
         *                  {
         *                      StringBuilder sb = new StringBuilder();
         *                      sb.Append("insert into ExpressTrace (Id,ExpRouteId,AcceptTime,AcceptStation,Remark) values");
         *                      foreach (var item in arr)
         *                      {
         *                          sb.Append("(");
         *                          sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(item["time"].ToString()) + "','" + item["status"].ToString().Trim() + "',''");
         *                          sb.Append("),");
         *                      }
         *                      sb.Remove(sb.Length - 1, 1);
         *                      ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sb.ToString());
         *                  }
         *                  int deliverystatus = Convert.ToInt32(obj["result"]["deliverystatus"].ToString());
         *                  if (deliverystatus == 1)
         *                  {
         *                      orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.ZTZ);
         *                  }
         *                  if (deliverystatus == 2)
         *                  {
         *                      orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PJZ);
         *                  }
         *                  if (deliverystatus == 3)
         *                  {
         *                      orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.YQS);
         *                  }
         *                  if (deliverystatus == 4)
         *                  {
         *                      orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PSSB);
         *                  }
         *                  string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'";
         *                  OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql);
         *              }
         *
         *          }
         *
         #endregion
         *      }
         *      else
         *      {
         *          //不存在下面两种情况时更新状态
         *          if (!orderExpressRoute.Deliverystatus.Contains("已签收") && !orderExpressRoute.Deliverystatus.Contains("派送失败"))
         *          {
         #region 当物流信息存在时
         *              json = GetWuliuJson(orderExpressRoute, AppId);
         *              obj = JObject.Parse(json);
         *              if (obj["status"].ToString() != null && obj["status"].ToString() == "0")
         *              {
         *                  //先删除数据然后添加
         *                  var res = DeleteExpressTrace(orderExpressRoute.Id);
         *                  if (res.isSuccess == true)
         *                  {
         *                      JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString());
         *                      if (arr.Count() > 0)
         *                      {
         *                          StringBuilder sb = new StringBuilder();
         *                          sb.Append("insert into ExpressTrace (Id,ExpRouteId,AcceptTime,AcceptStation,Remark) values");
         *
         *                          foreach (var item in arr)
         *                          {
         *                              sb.Append("(");
         *                              sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(item["time"].ToString()) + "','" + item["status"].ToString() + "',''");
         *                              sb.Append("),");
         *                          }
         *                          sb.Remove(sb.Length - 1, 1);
         *                          ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sb.ToString());
         *                      }
         *                      int deliverystatus = Convert.ToInt32(obj["result"]["deliverystatus"].ToString());
         *                      if (deliverystatus == 1)
         *                      {
         *                          orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.ZTZ);
         *                      }
         *                      if (deliverystatus == 2)
         *                      {
         *                          orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PJZ);
         *                      }
         *                      if (deliverystatus == 3)
         *                      {
         *                          orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.YQS);
         *                      }
         *                      if (deliverystatus == 4)
         *                      {
         *                          orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PSSB);
         *                      }
         *                      string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'";
         *                      OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql);
         *                  }
         *
         *              }
         #endregion
         *          }
         *
         *      }
         *  }
         *  catch (Exception ex)
         *  {
         *      LogHelper.Debug(string.Format("OTMSJob急速数据物流快递异常信息:{0}", ex.Message));
         *  }
         *
         * }
         */
        /// <summary>
        /// 获取快递100物流信息
        /// </summary>
        /// <param name="orderExpressRoute"></param>
        /// <param name="AppId"></param>
        /// <param name="shipExpCo"></param>
        private void GetExpress100Wuliu(OrderExpressRoute orderExpressRoute, Guid AppId, string shipExpCo)
        {
            JObject obj  = null;
            string  json = null;

            try
            {
                #region 当没有物流信息时添加数据


                json = Express100SV.GetExpressFromKD100(orderExpressRoute.ExpOrderNo, shipExpCo);
                //LogHelper.Info("【获取快递100】AppId=[" + AppId + "]shipExpCo=[" + shipExpCo + "]====返回-->[" + json + "]");
                obj = JObject.Parse(json);
                if (obj["message"].ToString().ToLower().Equals("ok"))
                {
                    //先删除数据然后添加
                    var res = DeleteExpressTrace(orderExpressRoute.Id);
                    if (res.isSuccess == true)
                    {
                        string data = obj["data"].ToString();
                        JArray arr  = JArray.Parse(data);
                        //JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString());
                        if (arr.Count() > 0)
                        {
                            JToken first = arr[arr.Count() - 1];
                            JToken end   = arr[0];


                            StringBuilder sb = new StringBuilder();
                            sb.Append("insert into ExpressTrace (Id,ExpRouteId,AcceptTime,AcceptStation,Remark) values");

                            if (first != null)
                            {
                                sb.Append("(");
                                sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(first["ftime"].ToString()) + "','" + first["context"].ToString().Trim() + "',''");
                                sb.Append("),");
                            }
                            if (end != null)
                            {
                                sb.Append("(");
                                sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(end["ftime"].ToString()) + "','" + end["context"].ToString().Trim() + "',''");
                                sb.Append("),");
                            }

                            sb.Remove(sb.Length - 1, 1);
                            ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sb.ToString());
                            //LogHelper.Info("【获取快递100】Job 同步成功Sql--->[" + sb.ToString() + "]");
                        }
                        //快递单当前签收状态,包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态,其中4-7需要另外开通才有效
                        int deliverystatus = Convert.ToInt32(obj["state"].ToString());
                        if (deliverystatus == 3)
                        {
                            orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.YQS);

                            string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'";
                            OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql);
                        }
                        else if (deliverystatus == 6)
                        {
                            orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PSSB);

                            string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'";
                            OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql);
                        }
                    }
                }

                #endregion
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("GetExpress100Wuliu 快递100接口调用错误:{0}", ex.Message));
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 获取用户最新的订单物流信息
        /// </summary>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.Commodity.ComOrderExpressNew> GetUserNewOrderExpressExt(System.Guid AppId, System.Guid Userid)
        {
            ComOrderExpressNew             ExpressNews = new ComOrderExpressNew();
            ResultDTO <ComOrderExpressNew> result      = new ResultDTO <ComOrderExpressNew>()
            {
                ResultCode = 1,
                isSuccess  = false,
                Data       = ExpressNews
            };
            string  json = null;
            JObject obj  = null;

            try
            {
                //获取已发货的订单信息
                var ComOrder = CommodityOrder.ObjectSet().Where(p => p.State == 2 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).FirstOrDefault();

                if (ComOrder != null)
                {
                    List <ExpressTrace> ExpressList = new List <ExpressTrace>();
                    var OrderItemDebug = OrderItem.ObjectSet().Where(p => p.CommodityOrderId == ComOrder.Id).FirstOrDefault();
                    ExpressNews.CommodityOrderId = ComOrder.Id;    //订单id
                    ExpressNews.Pic = OrderItemDebug.PicturesPath; //首条订单图片
                    ExpressTrace Express = new ExpressTrace();
                    //急速数据信息
                    if (!string.IsNullOrWhiteSpace(ComOrder.ExpOrderNo))
                    {
                        var orderexpressroute = OrderExpressRoute.ObjectSet().FirstOrDefault(p => p.ExpOrderNo == ComOrder.ExpOrderNo);
                        //根据快递编号获取急速数据信息
                        json = GetWuliuJson(orderexpressroute, ComOrder.AppId);
                        LogHelper.Debug(string.Format("极速快递物流信息:{0}", JsonHelper.JsonSerializer(json)));
                        obj = JObject.Parse(json);
                        if (Convert.ToInt32(obj["status"]) != 0)
                        {
                            return(result);
                        }
                        JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString());
                        foreach (var item in arr)
                        {
                            Express.AcceptTime    = Convert.ToDateTime(item["time"].ToString());
                            Express.AcceptStation = item["status"].ToString().Trim();
                            ExpressList.Add(Express);
                        }
                        var NewExpress = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault();
                        if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 1)
                        {
                            result.ResultCode         = 0;
                            result.isSuccess          = true;
                            ExpressNews.shipmentsTime = ComOrder.ModifiedOn;
                            ExpressNews.state         = "已发货";
                            ExpressNews.Remarked      = "您的订单已发货,由" + ComOrder.ShipExpCo + "快递配送,请注意物流信息~";
                        }
                        else if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 2)
                        {
                            result.ResultCode         = 0;
                            result.isSuccess          = true;
                            ExpressNews.shipmentsTime = NewExpress.AcceptTime;
                            ExpressNews.state         = "派件中";
                            ExpressNews.Remarked      = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~";
                        }
                        else
                        {
                            result.ResultCode = 1;
                            result.isSuccess  = false;
                        }
                    }
                    else
                    {
                        //京东信息
                        var commodityOrderId = ComOrder.Id.ToString();
                        var jdOrderitem      = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId));
                        if (jdOrderitem != null)
                        {
                            var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId);
                            LogHelper.Debug(string.Format("京东物流信息:{0}", JsonHelper.JsonSerializer(jdwuliu)));
                            if (jdwuliu != null)
                            {
                                JArray objson = JArray.Parse(jdwuliu);
                                foreach (var item in objson)
                                {
                                    Express.AcceptTime    = DateTime.Parse(item["msgTime"].ToString());
                                    Express.AcceptStation = item["content"].ToString().Trim();
                                    ExpressList.Add(Express);
                                }
                                var NewExpress = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault();
                                if (NewExpress.AcceptStation.Contains("正在配送"))
                                {
                                    result.ResultCode         = 0;
                                    result.isSuccess          = true;
                                    ExpressNews.shipmentsTime = NewExpress.AcceptTime;
                                    ExpressNews.state         = "派件中";
                                    ExpressNews.Remarked      = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~";
                                }
                                else if (NewExpress.AcceptStation.Contains("订单已签收"))
                                {
                                    result.ResultCode = 1;
                                    result.isSuccess  = false;
                                }
                                else
                                {
                                    result.ResultCode         = 0;
                                    result.isSuccess          = true;
                                    ExpressNews.shipmentsTime = ComOrder.ModifiedOn;
                                    ExpressNews.state         = "已发货";
                                    ExpressNews.Remarked      = "您的订单已发货,由京东快递配送,请注意物流信息~";
                                }
                            }
                        }
                    }
                    result.Data = ExpressNews;
                    LogHelper.Debug(string.Format("获取用户最新的订单物流信息返回数据:{0}", JsonHelper.JsonSerializer(result)));
                    return(result);
                }
                else
                {
                    return(result);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("获取用户最新的订单物流信息信息异常,异常信息:{0}", ex));
                return(result);
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 接收快递鸟推送的物流路由信息。  base.Do(false);
        /// </summary>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO ReceiveKdniaoExpressRouteExt(System.Collections.Generic.List <Jinher.AMP.BTP.Deploy.CustomDTO.OrderExpressRouteExtendDTO> oerList)
        {
            ResultDTO result = new ResultDTO {
                ResultCode = 0, Message = "Success"
            };

            try
            {
                if (oerList == null || !oerList.Any())
                {
                    result.ResultCode = 1;
                    result.Message    = "参数错误,物流路由信息不能为空!";
                    return(result);
                }
                ContextSession           contextSession = ContextFactory.CurrentThreadContext;
                List <OrderExpressRoute> oerReadyList   = new List <OrderExpressRoute>();
                var distinctOEList = (from oe in oerList select new { oe.ShipperCode, oe.ExpOrderNo }).Distinct();
                foreach (var oe in distinctOEList)
                {
                    var oerQuery = (from oer in OrderExpressRoute.ObjectSet()
                                    where oer.ShipperCode == oe.ShipperCode && oer.ExpOrderNo == oe.ExpOrderNo
                                    select oer).ToList();
                    if (!oerQuery.Any())
                    {
                        continue;
                    }
                    oerReadyList.AddRange(oerQuery);

                    //清理同一运单已有路由信息。
                    var erids   = (from oer in oerQuery select oer.Id).Distinct();
                    var etQuery = (from et in ExpressTrace.ObjectSet()
                                   where erids.Contains(et.ExpRouteId)
                                   select et).ToList();
                    foreach (var etq in etQuery)
                    {
                        etq.EntityState = System.Data.EntityState.Deleted;
                    }
                }
                //将运单路由信息保存到db.

                foreach (var oere in oerList)
                {
                    OrderExpressRoute oerNew = (from oerr in oerReadyList
                                                where oerr.ShipperCode == oere.ShipperCode && oerr.ExpOrderNo == oere.ExpOrderNo
                                                select oerr).FirstOrDefault();
                    if (oerNew == null)
                    {
                        continue;
                    }
                    oerNew.ModifiedOn  = DateTime.Now;
                    oerNew.EntityState = System.Data.EntityState.Modified;

                    if (oere.Traces != null && oere.Traces.Any())
                    {
                        foreach (ExpressTraceDTO etDto in oere.Traces)
                        {
                            ExpressTrace et = ExpressTrace.CreateExpressTrace();
                            et.FillWith(etDto);
                            et.ExpRouteId  = oerNew.Id;
                            et.Id          = Guid.NewGuid();
                            et.EntityState = System.Data.EntityState.Added;
                            contextSession.SaveObject(et);
                        }
                    }
                }
                contextSession.SaveChanges();
            }
            catch (Exception ex)
            {
                string s = string.Format("保存快递鸟推送的物流路由信息异常,异常信息:{0}", ex);
                LogHelper.Error(s);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
            return(result);
        }