From 4911d834d7a62f7a90c4401bcd1f29a39062c703 Mon Sep 17 00:00:00 2001 From: Klaus Richarz Date: Mon, 19 Aug 2024 17:54:34 +0200 Subject: [PATCH] #405 add workingdaytype to matrix data --- .../tb/dailyreport/viewhelper/TrainingHelper.java | 8 ++++---- .../viewhelper/matrix/MatrixDayTotal.java | 6 +++++- .../viewhelper/matrix/MatrixHelper.java | 14 +++++++++----- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/tb/dailyreport/viewhelper/TrainingHelper.java b/src/main/java/org/tb/dailyreport/viewhelper/TrainingHelper.java index e2b257da6..dfcf8b996 100644 --- a/src/main/java/org/tb/dailyreport/viewhelper/TrainingHelper.java +++ b/src/main/java/org/tb/dailyreport/viewhelper/TrainingHelper.java @@ -50,11 +50,11 @@ public static String fromDBtimeToString(Employeecontract ec, int hours, int minu public static String hoursMinToString(int[] time) { - int trainingHours = time[0]; - int trainingMinutes = time[1]; + long trainingHours = time[0]; + long trainingMinutes = time[1]; - trainingHours += trainingMinutes / 60; - trainingMinutes = trainingMinutes % 60; + trainingHours += trainingMinutes / MINUTES_PER_HOUR; + trainingMinutes = trainingMinutes % MINUTES_PER_HOUR; StringBuilder trainingString = new StringBuilder(); diff --git a/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixDayTotal.java b/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixDayTotal.java index 2c47dbb69..7b71ac91f 100644 --- a/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixDayTotal.java +++ b/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixDayTotal.java @@ -5,6 +5,7 @@ import lombok.Data; import org.tb.common.util.DurationUtils; +import org.tb.dailyreport.domain.Workingday.WorkingDayType; import static org.tb.common.util.TimeFormatUtils.timeFormatMinutes; @@ -22,11 +23,14 @@ public class MatrixDayTotal { private boolean invalidStartOfWork; private Long breakMinutes; private boolean invalidBreakTime; + private WorkingDayType workingDayType; + private Duration contractWorkingTime; - public MatrixDayTotal(LocalDate date, int day, Duration workingTime) { + public MatrixDayTotal(LocalDate date, int day, Duration workingTime, Duration contractWorkingTime) { this.date = date; this.day = day; this.workingTime = workingTime; + this.contractWorkingTime = contractWorkingTime; } public String getWorkingTimeString() { diff --git a/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixHelper.java b/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixHelper.java index 9fe849bb0..cd1f95860 100644 --- a/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixHelper.java +++ b/src/main/java/org/tb/dailyreport/viewhelper/matrix/MatrixHelper.java @@ -215,13 +215,13 @@ private List initializeDayTotals(long employeeContractId, boolean fillStartAndBreakTime) { // initialize MatrixDayTotals for each dates between dateFirst and dateLast - + var contract = employeecontractDAO.getEmployeeContractById(employeeContractId); List dayTotals = new ArrayList<>(); - + Map workingDays = queryWorkingDays(dateFirst, dateLast, employeeContractId); var dates = dateFirst.datesUntil(dateLast.plusDays(1)).toList(); // to include the last date too int day = 1; for(var date: dates) { - var dayTotal = new MatrixDayTotal(date, day, Duration.ZERO); + var dayTotal = new MatrixDayTotal(date, day, Duration.ZERO, contract.getDailyWorkingTime()); // mark weekends var dayOfWeek = dayTotal.getDate().getDayOfWeek(); @@ -236,6 +236,11 @@ private List initializeDayTotals(long employeeContractId, dayTotal.setPublicHolidayName(publicHolidayMap.get(date).getName()); } + var workingDay = workingDays.get(date); + if(workingDay != null) { + dayTotal.setWorkingDayType(workingDay.getType()); + } + dayTotals.add(dayTotal); day++; } @@ -243,13 +248,12 @@ private List initializeDayTotals(long employeeContractId, if (fillStartAndBreakTime) { var invalidBreakTimes = timereportService.validateBreakTimes(employeeContractId, dateFirst, dateLast); var invalidStartOfWorkDays = timereportService.validateBeginOfWorkingDays(employeeContractId, dateFirst, dateLast); - Map workingDays = queryWorkingDays(dateFirst, dateLast, employeeContractId); for(var dayTotal : dayTotals) { var date = dayTotal.getDate(); var workingDay = workingDays.get(date); if (workingDay != null) { dayTotal.setBreakMinutes(workingDay.getBreakminutes() + workingDay.getBreakhours() * MINUTES_PER_HOUR); - dayTotal.setStartOfWorkMinute(workingDay.getStarttimeminute() + workingDay.getStarttimehour() * 60L); + dayTotal.setStartOfWorkMinute(workingDay.getStarttimeminute() + workingDay.getStarttimehour() * MINUTES_PER_HOUR); } boolean invalidStartOfWork = invalidStartOfWorkDays.containsKey(date) && invalidStartOfWorkDays.get(date) != NONE; boolean invalidBreakTime = invalidBreakTimes.containsKey(date) && invalidBreakTimes.get(date) != NONE;