Estou a fazer um sistema de controlo financeiro. Por exemplo: a cada mês recebo o ordenado. A questão é como fazer para verificar se já passou um mes desde o ultimo ordenado. Aqui está o que tenho até agora:
private void checkMensal(Set<Movimento> set) {
set.forEach((mov) -> {
List<Movimento> collect = set
.stream()
.filter(s -> s.getFrequencia() == FrequenciaEnum.MENSAL && s.getNomeItem().equalsIgnoreCase(mov.getNomeItem()))
.collect(Collectors.toList());
if (collect.size() <= 0) {
return;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(collect.get(collect.size() - 1).getData());
int dia = calendar.get(Calendar.DAY_OF_YEAR);
int diasMes = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
if ((dia + diasMes) >= Calendar.getInstance().get(Calendar.DAY_OF_YEAR)) {
System.out.println("Dia do ano: " + Calendar.getInstance().get(Calendar.DAY_OF_YEAR) + ", Dia: "
+ dia + ", Dia do Mes: " + diasMes+ ", Soma: " + (dia + diasMes));
mov.setData(new Date());
dao.inserir(mov);
}
});
}