在映射具有重复产品名称的数据时对值求和并合并数据



我们正在映射数据,以便快速将 API 转储保存到数据库。

但是,有些项目被列出两次,那么我们如何将它们的价值相互添加?

例如,我们得到的头寸有两个"CASH"的股票代码,它们的值为 20 和 30。我们只想保存一次价值为 50 的"现金"。

 final_data = import_positions.map do |position|
  [
    portfolio_quovo_idnum(position.portfolio),
    position.id,
    get_asset(position),
    stock_ticker_symbol(position.ticker),
    position.cost_basis,
    position.cost_basis_type,
    position.fxrate,
    position.last_purchase_date,
    position.market_code,
    position.price * 100,
    position.quantity.to_d,
    position.sector,
    position.security_type,
    position.ticker_name,
    position.value * 100,
    get_portfolio_makeup(position),
    get_user_makeup(position)
  ]
end
value_sum = Hash.new(0)
import_positions.each do |position|
  value_sum[position.ticker_name] += position.value
end

这将为您提供总和值的哈希值。然后:

final_data = import_positions.uniq{|p| p.ticker_name}.map do |position|
  [
    portfolio_quovo_idnum(position.portfolio),
    position.id,
    ...
    position.ticker_name,
    value_sum[position.id] * 100,
    ...
  ]
end

最新更新