68 lines
2.3 KiB
Java
68 lines
2.3 KiB
Java
package de.arminwolf.financeanalyzer.service.usecases;
|
|
|
|
import de.arminwolf.financeanalyzer.dao.ReportDAO;
|
|
import de.arminwolf.financeanalyzer.dao.TransactionDAO;
|
|
import org.apache.commons.math3.util.Pair;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.TreeMap;
|
|
import java.util.stream.Collectors;
|
|
|
|
import static de.arminwolf.financeanalyzer.util.Constants.AUSGABEN;
|
|
import static de.arminwolf.financeanalyzer.util.Constants.EINNAHMEN;
|
|
|
|
@Service
|
|
public class CashFlowService {
|
|
|
|
public void setCashFlowChart(final ReportDAO reportDAO,
|
|
final List<TransactionDAO> filteredIncomeTransactions,
|
|
final List<TransactionDAO> filteredExpenseTransactions) {
|
|
Map<String, List<Float>> expenses = new TreeMap<>();
|
|
Map<String, List<Float>> income = new TreeMap<>();
|
|
|
|
filteredIncomeTransactions.stream()
|
|
.map(TransactionDAO::getAnalyseMonat)
|
|
.forEach(month -> {
|
|
income.put(month, new ArrayList<>());
|
|
filteredIncomeTransactions.stream()
|
|
.filter(t -> t.getAnalyseMonat().equals(month))
|
|
.filter(t -> t.getAnalyseBetrag().equals(EINNAHMEN))
|
|
.forEach(t -> income.get(month).add(t.getBetragAsFloat()));
|
|
|
|
});
|
|
|
|
filteredExpenseTransactions.stream()
|
|
.map(TransactionDAO::getAnalyseMonat)
|
|
.forEach(month -> {
|
|
expenses.put(month, new ArrayList<>());
|
|
filteredExpenseTransactions.stream()
|
|
.filter(t -> t.getAnalyseMonat().equals(month))
|
|
.filter(t -> t.getAnalyseBetrag().equals(AUSGABEN))
|
|
.forEach(t -> expenses.get(month).add(t.getBetragAsFloat()));
|
|
});
|
|
|
|
|
|
|
|
System.out.println("Number of Dataseries. Expenses: " + expenses.size() + ", Income: " + income.size());
|
|
income.values().forEach(System.out::println);
|
|
|
|
System.out.println("-------------------");
|
|
reportDAO.setCashFlowChart(expenses, income);
|
|
|
|
final List<TransactionDAO> allTransaction = new ArrayList<>();
|
|
allTransaction.addAll(filteredIncomeTransactions);
|
|
allTransaction.addAll(filteredExpenseTransactions);
|
|
|
|
// Line Chart
|
|
reportDAO.setAccountBalanceLineChart(allTransaction.stream()
|
|
.map(t -> Pair.create(t.getBuchungstag(), t.getKontostand()))
|
|
.collect(Collectors.toList()));
|
|
|
|
// Bubble Chart
|
|
reportDAO.setTransactionCategoriesBubbleChart(filteredExpenseTransactions);
|
|
}
|
|
}
|