예제 #1
0
        /// <summary>
        ///     获取网关数据/api/business/batchordersearch
        /// </summary>
        /// <returns></returns>
        public static async Task <int> GetOrderSearch(string orderId)
        {
            HttpResponseMessage httpResponseMesage = new HttpResponseMessage();

            try
            {
                //记录下需要插入的资产ids
                httpResponseMesage = await InitialHttpClient().PostAsJsonAsync("api/business/ordersearch", new { orderId });

                OrderSearchResponse response = await httpResponseMesage.Content.ReadAsAsync <OrderSearchResponse>();

                switch (response.Status)
                {
                case "S":
                    return(1);

                case "F":
                case null:
                    return(-1);
                }
                return(-2);
            }
            catch (Exception ex)
            {
                //log记录日志
                Logger.LoadData(@"BankError\Error.txt", ex.Message + "---------" + await httpResponseMesage.Content.ReadAsStringAsync());
                return(-2);
            }
        }
예제 #2
0
        public OrderSearchResponse Search(OrderSearchRequest request)
        {
            var response = new OrderSearchResponse();

            response.List = _facade.Search(request.Filter, request.PaginationInfo);
            return(response);
        }
        public override async Task <OrderSearchResponse> Order_Search(OrderSearchRequest request, ServerCallContext context)
        {
            //TODO 从底层ES中查找订单数据,
            //可以设计成DDD 方式来进行ES的操作,这里我就为了演示直接硬编码了

            var response = new OrderSearchResponse();

            try
            {
                response.Data.Add(new OrderRepsonse()
                {
                    Amount  = 100.00,
                    Count   = 10,
                    Name    = "订单名称测试",
                    OrderId = DateTime.Now.ToString("yyyyMMddHHmmss"),
                    Time    = DateTime.Now.ToString()
                });

                response.Data.Add(new OrderRepsonse()
                {
                    Amount  = 200.00,
                    Count   = 10,
                    Name    = "订单名称测试2",
                    OrderId = DateTime.Now.ToString("yyyyMMddHHmmss"),
                    Time    = DateTime.Now.ToString()
                });

                response.Data.Add(new OrderRepsonse()
                {
                    Amount  = 300.00,
                    Count   = 10,
                    Name    = "订单名称测试2",
                    OrderId = DateTime.Now.ToString("yyyyMMddHHmmss"),
                    Time    = DateTime.Now.ToString()
                });
                response.Success = true;
            }
            catch (Exception ex)
            {
                response.ErrorMsg = ex.Message;
                _logger.LogWarning("异常");
            }
            return(response);
        }
예제 #4
0
파일: MainForm.cs 프로젝트: asine/JdSdk
        private List <OrderInfo> GetOrderList(DateTime startDate, DateTime endDate, string orderState, int page, int pageSize, out Int32 totalCount, bool recursive)
        {
            try
            {
                OrderSearchRequest request = new OrderSearchRequest();
                request.StartDate  = startDate;
                request.EndDate    = endDate;
                request.OrderState = orderState;
                request.Page       = page;
                request.PageSize   = pageSize;
                OrderSearchResponse response = Client.Execute(request, AppContext.AccessToken.Token);
                if (!response.IsError)
                {
                    List <OrderInfo> list = new List <OrderInfo>();
                    if (response.OrderSearch == null || response.OrderSearch.OrderInfoList == null || response.OrderSearch.OrderInfoList.Count == 0)
                    {
                        totalCount = 0;
                        return(list);
                    }

                    list.AddRange(response.OrderSearch.OrderInfoList);
                    if (recursive && page * pageSize < response.OrderSearch.OrderTotal)
                    {
                        list.AddRange(GetOrderList(startDate, endDate, orderState, ++page, pageSize, out totalCount, true));
                    }

                    totalCount = response.OrderSearch.OrderTotal;
                    return(list);
                }
                else
                {
                    throw new Exception(response.ErrCode + ":" + response.ErrMsg);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #5
0
        /// <summary>
        ///     获取网关数据/api/business/batchordersearch
        /// </summary>
        /// <returns></returns>
        private async Task <bool> GetOrderSearch(string orderId)
        {
            HttpResponseMessage httpResponseMesage = new HttpResponseMessage();

            try
            {
                //记录下需要插入的资产ids
                httpResponseMesage = await this.httpClient.PostAsJsonAsync($"{this.loadAppSettings.BankGatewayUrl}api/business/ordersearch", new { orderId });

                OrderSearchResponse response = await httpResponseMesage.Content.ReadAsAsync <OrderSearchResponse>();

                if (response.Status == "S")
                {
                    return(true);
                }
                return(false);
            }
            catch (Exception ex)
            {
                //log记录日志
                Logger.LoadData(@"CountHasCreditAssignment\Error.txt", ex.Message + "---------" + await httpResponseMesage.Content.ReadAsStringAsync());
                return(false);
            }
        }
예제 #6
0
        public async Task <bool> OmsSyncWineWorldOrder()
        {
            try
            {
                //防止多次抓取订单造成错误
                Monitor.Enter(_MyLock); //获取排它锁
                string method      = "wineworld.order.search";
                string app_key     = "oms";
                string v           = "1.0";
                string sd_id       = "501";
                string order_state = "WAIT_SELLER_STOCK_OUT";
                string page_no     = "1";
                string page_size   = "50";
                string data        = null;
                OrderAssistParamsModel orderAssistParamsModel = _orderSyncService.OrderAssistOmsApi(method, app_key, v, sd_id, order_state, page_no, page_size, data);
                //处理SSL问题
                var httpClientHandler = new HttpClientHandler
                {
                    ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true
                };
                using (var http = new HttpClient(httpClientHandler))
                {
                    var postParamJson = orderAssistParamsModel.ToJson();
                    //#region JWTBearer授权校验信息
                    //_workContext.CurrentHttpContext.Request.Cookies.TryGetValue("wms_token", out string token);
                    //if (string.IsNullOrEmpty(token)) { token = await GetWMSOauthToken(); }
                    //http.DefaultRequestHeaders.Add("Authorization", string.Format("Bearer {0}", token));
                    //#endregion
                    var content  = new StringContent(postParamJson, Encoding.UTF8, "application/json");
                    var postUrl  = _configuration.GetSection("OrderAssistOmsApi")["domain"].ToString();
                    var response = http.PostAsync(postUrl, content).Result;
                    var result   = await response.Content.ReadAsStringAsync();

                    //if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized) // 未授权
                    //{
                    //    await GetWMSOauthToken();
                    //    Logger.Error("OMS抓取商城下单信息同步到订单表失败,原因是API授权失败!请重试。");
                    //    return false;
                    //}
                    if (response.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        //var account = _workContext.CurrentUser.Id;
                        var test = JsonMapper.ToObject <RespDataOrderInfo>(result);
                        if (test != null)
                        {
                            OrderSearchResponse orderSearchResponse = test.resp_data;
                            if (orderSearchResponse != null)
                            {
                                List <OrderInfo> orderInfoList = orderSearchResponse.order_info_list;

                                List <OrderNotification> orderNotifications = new List <OrderNotification>();
                                if (orderInfoList.Count > 0 && orderInfoList != null)
                                {
                                    _orderSyncService.OrderSync(orderInfoList, sd_id, out orderNotifications);
                                }
                                if (orderNotifications.Count > 0 && orderNotifications != null)
                                {
                                    OrderNotification(orderNotifications);
                                }
                            }
                        }
                        return(true);
                    }
                    else
                    {
                        _logService.Error(string.Format("OMS抓取商城下单信息同步到订单表失败,状态码:{0},RequestMessage:{1}", response.StatusCode, response.RequestMessage));
                        return(false);
                    }
                }
            }
            catch (Exception ex)
            {
                _logService.Error(string.Format("OMS抓取商城下单信息同步到订表异常:{0}", ex.Message));
                return(false);
            }

            finally
            {
                Monitor.Exit(_MyLock); //释放排它锁
            }
        }
예제 #7
0
        /// <summary>
        ///  京东订单检索(360buy.order.search)
        ///  定时同步时使用
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="orderState"></param>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <param name="totalCount"></param>
        /// <param name="recursive"></param>
        /// <returns></returns>
        public string GetOrderList(string startDate, string endDate, string orderState, string page, string pageSize, out Int32 totalCount, bool recursive)
        {
            try
            {
                int count = 0;

                string             AppKey      = "0901C6C9E495BDB7FEEAE8EEA47D13F2";     //xMorderInfoApp.AppKey;
                string             AppSecret   = "1916857c7087437095775f29763f527b";     //xMorderInfoApp.AppSecret;
                string             CallbackUrl = "http://www.hozest.com";                //  xMorderInfoApp.CallbackUrl;
                string             AccessToken = "032ecc44-7ac6-46c3-a4b7-7e844f7ea1b4"; // xMorderInfoApp.AccessToken;
                Jd.Api.IJdClient   Client      = new DefaultJdClient("http://gw.api.360buy.com/routerjson", AppKey, AppSecret, AccessToken);
                OrderSearchRequest request     = new OrderSearchRequest();
                //
                request.startDate      = startDate.ToString(); //开始时间
                request.endDate        = endDate.ToString();   //结束时间
                request.orderState     = orderState;
                request.page           = page.ToString();
                request.pageSize       = pageSize.ToString();
                request.optionalFields = "order_id,vender_id,pay_type,order_total_price,order_payment,order_seller_price,freight_price,seller_discount,order_state,delivery_type,invoice_info,order_remark,order_start_time,order_end_time,modified,payment_confirm_time,pin,consignee_info,coupon_detail_list,item_info_list,logistics_id,waybill,vender_remark";
                OrderSearchResponse response = Client.Execute(request);

                string s              = "\"consignee_info\":\"\",";
                string ns             = "\"consignee_info\":null,";
                string str            = response.Body.Replace(s, ns);
                OrderSearchResponse m = JsonConvert.DeserializeObject <OrderSearchResponse>(str);

                if (m.orderSearch == null)
                {
                    for (int i = 1; i < 10; i++)
                    {
                        Client = new DefaultJdClient("http://gw.api.360buy.com/routerjson", AppKey, AppSecret, AccessToken);

                        OrderSearchRequest requestfor = new OrderSearchRequest();
                        requestfor.startDate      = startDate; //付款开始时间
                        requestfor.endDate        = endDate;   //付款结束时间
                        requestfor.orderState     = orderState;
                        requestfor.page           = page;
                        requestfor.pageSize       = pageSize;
                        requestfor.optionalFields = "order_id,vender_id,pay_type,order_total_price,order_payment,order_seller_price,freight_price,seller_discount,order_state,delivery_type,invoice_info,order_remark,order_start_time,order_end_time,modified,payment_confirm_time,pin,consignee_info,coupon_detail_list,item_info_list,logistics_id,waybill,vender_remark";
                        OrderSearchResponse responsefor = Client.Execute(requestfor);
                        string sfor              = "\"consignee_info\":\"\",";
                        string nsfor             = "\"consignee_info\":null,";
                        string strfor            = responsefor.Body.Replace(sfor, nsfor);
                        OrderSearchResponse mfor = JsonConvert.DeserializeObject <OrderSearchResponse>(strfor);

                        if (mfor.orderSearch != null)
                        {
                            if (!responsefor.IsError)
                            {
                                count      = mfor.orderSearch.Count();
                                totalCount = count;
                                return("");

                                ;
                            }
                            else
                            {
                                throw new Exception("错误代码:" + responsefor.ErrCode + "错误信息:" + responsefor.ErrMsg);
                            }
                        }
                    }
                }
                else
                {
                    if (!response.IsError)
                    {
                        //count = m.Child.OrderSearch.OrderTotal;
                        totalCount = count;
                        //return m.Child.OrderSearch.OrderInfoList;
                        return("");
                    }
                    else
                    {
                        throw new Exception("错误代码:" + response.ErrCode + "错误信息:" + response.ErrMsg);
                    }
                }
                totalCount = count;
            }
            catch (Exception ex)
            {
                //throw new Exception(ex.Message);
                //BusinessLogic.ErrorLog.RecordErrorLogs.WriteError(ex.Message.ToString(), CRMContext.Current.User.CustomerID.ToString());
                totalCount = 0;
                IoC.Resolve <IRecordErrorLogs>().WriteErrorLog("负责人:" + HozestERPContext.Current.User.CustomerID.ToString() + ";   方法名:GetOrderList;  异常提示:" + ex.Message.ToString() + ";   InnerException:" + ex.InnerException);
            }

            return(null);
        }
예제 #8
0
        public async Task <IActionResult> Search([FromBody] SearchRequest request)
        {
            SAPContext context = HttpContext.RequestServices.GetService(typeof(SAPContext)) as SAPContext;

            SAPbobsCOM.Recordset oRecSet = (SAPbobsCOM.Recordset)context.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
            List <string> where = new List <string>();

            if (request.columns[0].search.value != String.Empty)
            {
                where.Add($"LOWER(ord.\"DocNum\") Like LOWER('%{request.columns[0].search.value}%')");
            }
            if (request.columns[1].search.value != String.Empty)
            {
                where.Add($"LOWER(contact.\"CardFName\") Like LOWER('%{request.columns[1].search.value}%')");
            }
            if (request.columns[2].search.value != String.Empty)
            {
                where.Add($"LOWER(contact.\"CardName\") Like LOWER('%{request.columns[2].search.value}%')");
            }
            if (request.columns[3].search.value != String.Empty)
            {
                where.Add($"LOWER(warehouse.\"WhsName\") Like LOWER('%{request.columns[3].search.value}%')");
            }
            if (request.columns[4].search.value != String.Empty)
            {
                List <string> whereOR = new List <string>();
                if ("Abierto".Contains(request.columns[4].search.value, StringComparison.CurrentCultureIgnoreCase))
                {
                    whereOR.Add(@"ord.""DocStatus"" = 'O' ");
                }
                if ("Cerrado".Contains(request.columns[4].search.value, StringComparison.CurrentCultureIgnoreCase))
                {
                    whereOR.Add(@"ord.""DocStatus"" = 'C' ");
                }
                if ("Cancelado".Contains(request.columns[4].search.value, StringComparison.CurrentCultureIgnoreCase))
                {
                    whereOR.Add(@"ord.""CANCELED"" = 'Y' ");
                }

                string whereORClause = "(" + String.Join(" OR ", whereOR) + ")";
                where.Add(whereORClause);
            }
            if (request.columns[5].search.value != String.Empty)
            {
                where.Add($"to_char(to_date(SUBSTRING(ord.\"DocDate\", 0, 10), 'YYYY-MM-DD'), 'DD-MM-YYYY') Like '%{request.columns[5].search.value}%'");
            }

            string orderby = "";

            if (request.order[0].column == 0)
            {
                orderby = $" ORDER BY ord.\"DocNum\" {request.order[0].dir}";
            }
            else if (request.order[0].column == 1)
            {
                orderby = $" ORDER BY contact.\"CardFName\" {request.order[0].dir}";
            }
            else if (request.order[0].column == 2)
            {
                orderby = $" ORDER BY contact.\"CardName\" {request.order[0].dir}";
            }
            else if (request.order[0].column == 3)
            {
                orderby = $" ORDER BY warehouse.\"WhsName\" {request.order[0].dir}";
            }
            else if (request.order[0].column == 4)
            {
                orderby = $" ORDER BY ord.\"DocStatus\" {request.order[0].dir}";
            }
            else if (request.order[0].column == 5)
            {
                orderby = $" ORDER BY ord.\"DocDate\" {request.order[0].dir}";
            }
            else
            {
                orderby = $" ORDER BY ord.\"DocNum\" DESC";
            }

            string whereClause = String.Join(" AND ", where);

            string query = @"
                Select
                    ord.""DocEntry"",
                    ord.""DocNum"",

                    to_char(to_date(SUBSTRING(ord.""DocDate"", 0, 10), 'YYYY-MM-DD'), 'DD-MM-YYYY') as ""DocDate"",

                    (case when ord.""CANCELED"" = 'Y' then 'Cancelado'
                    when ord.""DocStatus"" = 'O' then 'Abierto'
                    when ord.""DocStatus"" = 'C' then 'Cerrado'
                    else ord.""DocStatus"" end)  AS  ""DocStatus"",

                    ord.""CardName"",
                    contact.""CardFName"",
                    warehouse.""WhsName""
                From ODLN ord
                LEFT JOIN NNM1 serie ON ord.""Series"" = serie.""Series""
                LEFT JOIN OWHS warehouse ON serie.""SeriesName"" = warehouse.""WhsCode""
                LEFT JOIN OCRD contact ON ord.""CardCode"" = contact.""CardCode"" ";

            if (where.Count != 0)
            {
                query += "Where " + whereClause;
            }

            query += orderby;

            query += " LIMIT " + request.length + " OFFSET " + request.start + "";

            oRecSet.DoQuery(query);
            var orders = context.XMLTOJSON(oRecSet.GetAsXML())["ODLN"].ToObject <List <OrderSearchDetail> >();

            string queryCount = @"
                Select
                    Count (*) as COUNT
                From ODLN ord
                LEFT JOIN NNM1 serie ON ord.""Series"" = serie.""Series""
                LEFT JOIN OWHS warehouse ON serie.""SeriesName"" = warehouse.""WhsCode""
                LEFT JOIN OCRD contact ON ord.""CardCode"" = contact.""CardCode"" ";

            if (where.Count != 0)
            {
                queryCount += "Where " + whereClause;
            }
            oRecSet.DoQuery(queryCount);
            int COUNT = context.XMLTOJSON(oRecSet.GetAsXML())["ODLN"][0]["COUNT"].ToObject <int>();

            OrderSearchResponse respose = new OrderSearchResponse {
                data            = orders,
                draw            = request.Draw,
                recordsFiltered = COUNT,
                recordsTotal    = COUNT,
            };

            return(Ok(respose));
        }