Exemple #1
0
        /// <summary>
        /// 快递100接口查询
        /// </summary>
        /// <param name="num">   //查询的快递单号, 单号的最大长度是32个字符   必须</param>
        /// <param name="shipExpCo"> 快递公司名称</param>
        public static ResultDTO <OrderExpressRouteExtendDTO> GetExpressFromKD100DTO(string num, string shipExpCo)
        {
            ResultDTO <OrderExpressRouteExtendDTO> result = new ResultDTO <OrderExpressRouteExtendDTO>();

            try
            {
                string expressJson = GetExpressFromKD100(num, shipExpCo);

                if (string.IsNullOrEmpty(expressJson))
                {
                    result.ResultCode = 1;
                    result.Message    = "暂无数据";
                    return(result);
                }
                else
                {
                    OrderExpressRouteExtendDTO dTO = new OrderExpressRouteExtendDTO();
                    JObject jObject = JObject.Parse(expressJson);
                    if (jObject["message"].ToString().ToLower().Equals("ok"))
                    {
                        List <ExpressTraceDTO> listDto = new List <ExpressTraceDTO>();
                        string data  = jObject["data"].ToString();
                        JArray obArr = JArray.Parse(data);
                        foreach (var item in obArr)
                        {
                            string time    = item["time"].ToString();
                            string ftime   = item["ftime"].ToString();
                            string context = item["context"].ToString();
                            listDto.Add(new ExpressTraceDTO
                            {
                                Id            = Guid.NewGuid(),
                                ExpRouteId    = Guid.NewGuid(),
                                AcceptStation = context,
                                AcceptTime    = DateTime.Parse(ftime)
                            });
                        }
                        dTO.Traces = listDto;
                    }
                    else
                    {
                        result.ResultCode = 1;
                        result.Message    = jObject["message"].ToString();
                    }
                    result.Data = dTO;
                    return(result);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("GetExpressFromKD100DTO 错误--->快递单号【" + num + "】快递公司名称-->【" + shipExpCo + "】", ex);
            }
            return(result);
        }
Exemple #2
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);
        }