private void addEmployeePlans( List<EmployeePlan> employeePlans, Integer year, Integer month, Employee employee, JsonNode jsonNode) { final Map<JsonStringNode, JsonNode> fields = jsonNode.getFields(); JsonStringNode field; for (Map.Entry<JsonStringNode, TSEnum> entry : PLAN_TYPE_MAP.entrySet()) { field = entry.getKey(); final EmployeePlan employeePlan = createEmployeePlanIfNeed( year, month, employee, dictionaryItemService.find(entry.getValue().getId())); if (fields.containsKey(field)) { employeePlan.setValue(JsonUtil.getFloatNumberValue(jsonNode, field.getText())); employeePlans.add(employeePlan); } } // KSS APLANATS-850 Удалять будем только существующие записи с value=0. // Удаление будет вызвано в методе // com.aplana.timesheet.service.EmployeePlanService.mergeProjectPlans }
public Map<Vacation, Integer> getCalDays(List<Vacation> vacations) { Map<Vacation, Integer> calDays = new HashMap<Vacation, Integer>(vacations.size()); for (Vacation vacation : vacations) { Integer diffInDays = DateTimeUtil.getDiffInDays(vacation.getBeginDate(), vacation.getEndDate()); calDays.put(vacation, diffInDays); } return calDays; }
// возвращает список отпусков за год определенного типа с указанием количества календарных или // рабочих дней // в зависимости от того, какой список был передан private Map<Vacation, Integer> getDaysForYearByType( Map<Vacation, Integer> days, int year, DictionaryItem type) { Map<Vacation, Integer> daysForYearByType = new HashMap<Vacation, Integer>(); for (Map.Entry<Vacation, Integer> entry : days.entrySet()) { Vacation vacation = entry.getKey(); Integer calDaysInVacation = entry.getValue(); if (vacationStatusInThisYear(vacation, year) && type.getId().equals(vacation.getType().getId())) { daysForYearByType.put(vacation, calDaysInVacation); } } return daysForYearByType; }
public Map<Vacation, Integer> getWorkDays( Map<Vacation, Integer> calDays, List<Holiday> holidays) { Map<Vacation, Integer> workDays = new HashMap<Vacation, Integer>(calDays.size()); for (Map.Entry<Vacation, Integer> entry : calDays.entrySet()) { Vacation vacation = entry.getKey(); Integer calDaysInVacation = entry.getValue(); Region emplRegion = vacation.getEmployee().getRegion(); final int holidaysCount = getHolidaysCount(holidays, emplRegion, vacation.getBeginDate(), vacation.getEndDate()); final int workDaysCount = calDaysInVacation - holidaysCount; workDays.put(vacation, workDaysCount); } return workDays; }
// возвращает количество дней в списке отпусков (в зависимости от того какой список был передан) private int getSummaryDaysCount(Map<Vacation, Integer> days) { int summaryDays = 0; for (Map.Entry<Vacation, Integer> entry : days.entrySet()) { Vacation vacation = entry.getKey(); Integer daysInVacation = entry.getValue(); if (VacationStatusEnum.APPROVED.getId() == vacation.getStatus().getId() || VacationTypesEnum.PLANNED.getId() == vacation.getType().getId()) { summaryDays += daysInVacation; } } return summaryDays; }