Прямо сейчас я пишу функцию, чтобы получить количество рабочих дней самостоятельно. Вместо этого гораздо лучше использовать данные Spring и позволить базе данных производить вычисления.
Итак, как мне написать вторую функцию в данных Spring.
Это должно быть что-то вроде , Посчитать по дате Отличить группу по дате от WorkingDay. WorkingDayObject может происходить более одного раза в день, если кто-то работал над разными проектами. Таким образом я использую хэш-набор в своей функции, чтобы получать только дни.
private double calculateOvertimeHours(WorkingMonth month)
{
double workedHours = Util.convertTimeToDoubleDecimal(month.getWorkedHours());
//Here I use a Spring data method as you can see
List<WorkingDay> lstWorkingDays = workingDayDao.findByWorkingMonthOrderByDateAsc(month);
return workedHours - calcNumberWorkDays(lstWorkingDays) * 8;
}
private int calcNumberWorkDays(List<WorkingDay> lstWorkingDays)
{
Set<Integer> hashSetDays = new HashSet<Integer>();
Calendar cal = Calendar.getInstance();
for(WorkingDay workingDay : lstWorkingDays)
{
cal.setTime(workingDay.getDate());
hashSetDays.add(cal.get(Calendar.DAY_OF_MONTH));
}
return hashSetDays.size();
}