protected virtual void ProceedResults(PackResults results) { try { var query = new StringBuilder(); foreach (var result in results.IntegratePackResult) { if (result.IsSuccess) { query.AppendLine(String.Format("Update {1} Set Status = 1 Where ERPId = '{0}';", result.GetCorrectId(), _tableName)); } else { var errorMessage = String.IsNullOrEmpty(result.ErrorMessage) ? String.Empty : result.ErrorMessage.Replace("'", "''").Replace("{", "").Replace("}", ""); if (errorMessage.Length > 250) { errorMessage = errorMessage.Substring(0, 250); } query.AppendLine(String.Format("Update {2} Set Status = {3}, ErrorMessage = '{1}' Where ERPId = '{0}';", result.GetCorrectId(), errorMessage, _tableName, result.IsTimeout ? "4" : "2")); } } var sql = query.ToString(); if (!string.IsNullOrEmpty(sql)) { DBConnectionProvider.ExecuteNonQuery(sql); } } catch (Exception e) { Logger.LogError(JsonConvert.SerializeObject(results), e); } }
private bool SendToProcessing(List <BaseIntegrationObject> pack, out DateTime now, out PackResults results, IEnumerable <PackResult> successResults, bool isUsePA) { now = DateTime.Now; var processingResults = SendToProcessing(pack.Where(p => successResults.FirstOrDefault(r => r.Id == p.ERPId) != null).ToList(), isUsePA, _processingMethodName); Logger.LogInfo(string.Format("Запрос {0} к процессингу выполнен за {1}с", _tableName, (DateTime.Now - now).TotalSeconds.ToString("F1")), ""); results = new PackResults(); if (processingResults.IsSuccess) { results.IntegratePackResult = JsonConvert.DeserializeObject <List <PackResult> >(processingResults.ResponseStr); return(true); } else { SetProcessingErrors(pack, processingResults.ResponseStr, processingResults.IsTimeout); return(false); } }
public override void Execute() { Logger.LogInfo("Начался импорт", _tableName); var tasks = new List <Task>(); for (var j = 0; j < threadCount; j++) { var task = new Task(() => { var pack = ReadPack(); while (pack.Count > 0) { var results = new PackResults() { IntegratePackResult = new List <PackResult>() }; foreach (Purchase purchase in pack) { purchase.ProductsInPurchase = ReadProducts(purchase.ERPId); purchase.PaymentsInPurchase = ReadPayments(purchase.ERPId); int i = 0; var request = new PurchaseConfirmRequest() { //CashdeskCode = purchase.CashDeskCode, Client = new Client() { CardNumber = purchase.CardNumber, MobilePhone = purchase.Phone }, Date = purchase.PDate, Number = purchase.Number, PaymentForm = GetPaymentFormCode(purchase.PaymentForm), ShopCode = purchase.ShopCode, Payments = purchase.PaymentsInPurchase.Select(p => new Payment() { Amount = p.Amount, Type = p.Type }), Products = purchase.ProductsInPurchase.Select(p => new PCProduct() { Index = i++, Amount = p.Amount, Price = p.Price, ProductCode = p.ProductCode, Quantity = p.Quantity }), Id = Guid.NewGuid().ToString() }; var res = Request(request.ToJson()); Logger.LogInfo(i.ToString(), res.IsSuccess ? "success" : res.ResponseStr); if (res.IsSuccess) { var resRequest = JsonConvert.DeserializeObject <PackResult>(res.ResponseStr); resRequest.Id = purchase.ERPId; results.IntegratePackResult.Add(resRequest); } else { results.IntegratePackResult.Add(new PackResult() { Id = purchase.ERPId, IsSuccess = false, ErrorMessage = res.ResponseStr, IsTimeout = res.IsTimeout }); } } ProceedResults(results); pack = ReadPack(); } }); task.Start(); tasks.Add(task); } Task.WaitAll(tasks.ToArray()); Logger.LogInfo("Finished", _tableName); }