написание формулы в виде функции и применять для каждого значения - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть несколько MembershipTypes в моих приложениях следующим образом:

sealed class MembershipType(val label: String) {
    abstract val interestOptions: List<BigDecimal>
    abstract val price: BigDecimal

    object GOLD : MembershipType("Gold") {
        override val price: BigDecimal = BigDecimal(1)
        override val interestOptions: List<BigDecimal> = listOf(BigDecimal(100), BigDecimal(200), BigDecimal(300))
    }

    object SILVER : MembershipType("Silver") {
        override val price: BigDecimal = BigDecimal(0.8)
        override val interestOptions: List<BigDecimal> = listOf(BigDecimal(300), BigDecimal(400), BigDecimal(500))
    }
}

Их свойства - одна цена и список интереса .

Я хочу вычислить все значение (В) / проценты (I) расчетных комбинаций и вернуть список котировок List<Quote>, используяследующие формула :

(R^max/R) × V × (1 - I/V) × 0.0015 × P
where 1 <= R <= R^max is the risk score with R^max = 3500, V > 0 is the value, I is the interest, 
and P is price. 

Существуют и другие типы MembershipType объектов, однако типы GOLD и SILVER имеют наборпредопределенных значений, поэтому я определяю их в QuoteMaker классе:

class QuoteMaker {

    private val membershipToValue: MutableMap<MembershipType, List<BigDecimal>> = mutableMapOf()

    init {
        membershipToValue.put(MembershipType.GOLD, listOf(BigDecimal(2500), BigDecimal(5000)))
        membershipToValue.put(MembershipType.SILVER, listOf(BigDecimal(1000), BigDecimal(2000)))
    }


    fun generateQuotes(request1: Request) {

        val risk = request1.riskRate
        val membershipChosen = request1.membershipChosen   //list of MemberShipType selected

        generateMembershipQuote(riskRate, membershipChosen)

    }

    private fun generateMembershipQuote(riskRate: Int, membershipChosen: List<MembershipType>) : List<Quote> {
            //return membershipChosen.stream()
            //.forEach {  }...
    }

}

Я получаю R (риск) и выбранный список типов членства в объекте Request.

В generateMembershipQuote() мне нужно перебрать все выбранные членства, а затем перебрать значения в membershipToValue для этого типа, вычислить все комбинации для значения / процента и вернуть результат.

Я хочу создать формулу в виде функции , а затем применить для каждого значения / процента и вернуть результат для этого MembershipType.Как я мог реализовать это?

A Quote должен иметь информацию об общей цене, стоимости и процентах, используемых для расчета итогов и для какого членства

data class Quote(
    val risk: Int, //r
    val value: BigDecimal, //v
    val interest: BigDecimal, //i
    val rate: BigDecimal, //0.0015
    val price: BigDecimal //p

) {

fun sum(): BigDecimal {
   //sum total
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...