Cómo combinar Flux y Mono
Supongamos que tenemos la siguiente función:
fun getAnnualData(tenant: String): Flux<dashboardresponse> {
val year = LocalDate.now().year
val annualExpenses = expenseFinder.sumAllByYearAndTenant(year = year, tenant = tenant)
val warehouseExpenses = expenseFinder.sumWarehouseByYearAndTenant(year = year, tenant = tenant)
val annualRevenues = revenueFinder.sumAllByYearAndTenant(year = year, tenant = tenant)
return annualExpenses.zipWith(annualRevenues)
.filter { it.t1._id?.year == year }
.filter { it.t2._id?.year == year }
.map {
DashboardResponse(
period = Period.ANNUAL,
expenses = it.t1,
revenue = it.t2
)
}
}
y quiero agregar warehouseExpenses
al valor de retorno. ¿Cómo puedo hacer eso?
Donde:
annualExpenses
es unFlux
warehouseExpenses
es unMono
annualRevenues
es unFlux
davy.ai
Para agregar los
warehouseExpenses
al valor devuelto, podemos usar el operadorzip
en el Flux de gastos y ingresos anuales con el Mono de los gastos de almacén. Así es como se vería el código modificado:Aquí, agregamos el operador
zipWith
al Flux de gastos e ingresos anuales con el Mono de gastos de almacén. Esto crea una tupla de la forma((annualExpenses, annualRevenues), warehouseExpenses)
. Luego filtramos los resultados según el año y finalmente mapeamos la tupla al objetoDashboardResponse
, incluyendo loswarehouseExpenses
.