public async Task <ProductStats> GetProductStatsAsync() { var functionName = "getProductStats"; var func = _contract.GetFunction(functionName); var dto = new ProductStatsDto(); try { dto = await func.CallDeserializingToObjectAsync <ProductStatsDto>(); } catch (ArgumentNullException e) // catching this error because after successful transaction is time frame while blockchain data is not updated and returns unknown result. We are getting: Value cannot be null. Parameter name: value { _logger.Warn($"Cant deserialize contract response. functionName: {functionName}", e); } var result = new ProductStats(); result.Paused = dto.Paused == 1; result.TokenBalance = Web3.Convert.FromWei(dto.TokenBalance); result.PoliciesLength = (int)dto.PoliciesLength; result.TotalCalculatedPayouts = Web3.Convert.FromWei(dto.PoliciesTotalCalculatedPayouts); result.PayoutsCount = (int)dto.PoliciesPayoutsCount; result.TotalPayouts = Web3.Convert.FromWei(dto.PoliciesTotalPayouts); return(result); }
public ProductStats GetProductStatsSync(ProductType productType) { ProductStats res = null; try { res = Task.Run(async() => { return(await this.ProductsService.GetProductStatsAsync(productType)); }).Result; } catch (Exception ex) { ex = null; } return(res); }
public IHttpActionResult Forecast([FromUri] string productId, [FromUri] int year, [FromUri] int month) { var inputExample = new ProductStats { ProductId = productId, Year = year, Month = month }; var client = new RestClient(_mlServerUrl); var request = new RestRequest(_productForecastUrl, Method.POST); request.AddJsonBody(inputExample); var response = client.Execute <float>(request); return(Ok(response.Data)); }
/// <summary> /// 执行事件 /// </summary> /// <param name="eventInfo">事件信息</param> public void Execute(object eventInfo) { EventInfo e = (EventInfo)eventInfo; //同步商品的访问量 DataTable dt = ProductStats.GetProductTotalVisitCountList(); foreach (DataRow row in dt.Rows) { int pid = TypeHelper.ObjectToInt(row["pid"]); int visitCount = TypeHelper.ObjectToInt(row["count"]); if (visitCount != Products.GetProductShadowVisitCountById(pid)) { Products.UpdateProductShadowVisitCount(pid, visitCount); } } EventLogs.CreateEventLog(e.Key, e.Title, Environment.MachineName, DateTime.Now); }
public float ProductForecast(ProductStats data) { return(ForecastEngine.ProductForecast(data)); }
public async Task <List <OrderStats> > GetHourlyStats(DateTimeOffset periodStart, DateTimeOffset periodEnd, StatsKind kind, int?terminalId, int?pointOfSaleId) { var connection = _db.Database.GetDbConnection(); var param = new { periodStart, periodEnd, kind, terminalId, pointOfSaleId }; var orderStats = await connection.QueryAsync <OrderStats>( sql : await SqlScript.GetAsync("GetOrderStats.sql"), param : param); var paymentStats = await connection.QueryAsync <PaymentStats>( sql : await SqlScript.GetAsync("GetPaymentStats.sql"), param : param); var productSaleStats = await connection.QueryAsync <ProductSaleStats>( sql : await SqlScript.GetAsync("GetProductSaleStats.sql"), param : param); var productServingStats = await connection.QueryAsync <ProductServingStats>( sql : await SqlScript.GetAsync("GetProductServingStats.sql"), param : param); var periodStarts = orderStats.Select(x => x.PeriodStart) .Union(productServingStats.Select(x => x.PeriodStart)) .OrderBy(x => x) .ToList(); var result = new List <OrderStats>(periodStarts.Count); foreach (var startOfPeriod in periodStarts) { var order = orderStats.FirstOrDefault(x => x.PeriodStart == startOfPeriod) ?? new OrderStats() { PeriodStart = startOfPeriod }; var productStats = new Dictionary <int, ProductStats>(); foreach (var sale in productSaleStats.Where(x => x.PeriodStart == order.PeriodStart)) { var stats = new ProductStats() { ProductId = sale.ProductId, ProductName = sale.ProductName, OrderCount = sale.OrderCount, SaleQuantity = sale.ProductQuantity, SaleTotal = sale.Total, }; productStats.Add(sale.ProductId, stats); } foreach (var serving in productServingStats.Where(x => x.PeriodStart == order.PeriodStart)) { if (!productStats.TryGetValue(serving.ProductId, out var stats)) { stats = productStats[serving.ProductId] = new ProductStats() { ProductId = serving.ProductId, ProductName = serving.ProductName }; } stats.ServingCount = serving.ServingCount; stats.ServingQuantity = serving.ProductQuantity; } order.Payments = paymentStats.Where(x => x.PeriodStart == order.PeriodStart).ToList(); order.Products = productStats.Values.OrderBy(x => x.ProductName).ToList(); result.Add(order); } return(result); }