JsonObjectNodeBuilder_List(JsonObjectNodeBuilder p_i3238_1_) {
    this.field_74598_a = p_i3238_1_;
    Iterator var2 = JsonObjectNodeBuilder.func_74607_a(this.field_74598_a).iterator();

    while (var2.hasNext()) {
      JsonFieldBuilder var3 = (JsonFieldBuilder) var2.next();
      this.put(var3.func_74724_b(), var3.func_74725_c());
    }
  }
Ejemplo n.º 2
0
  public String getExitToWorkAndCountVacationDayJson(
      String beginDateString, String endDateString, Integer employeeId, Integer vacationTypeId) {
    final JsonObjectNodeBuilder builder = anObjectBuilder();
    try {
      Employee employee = employeeService.find(employeeId);
      final Timestamp beginDate =
          DateTimeUtil.stringToTimestamp(beginDateString, CreateVacationForm.DATE_FORMAT);
      final Timestamp endDate =
          DateTimeUtil.stringToTimestamp(endDateString, CreateVacationForm.DATE_FORMAT);

      // Получаем день выхода на работу
      com.aplana.timesheet.dao.entity.Calendar endDateCalendar = calendarService.find(endDate);
      com.aplana.timesheet.dao.entity.Calendar nextWorkDay =
          calendarService.getNextWorkDay(endDateCalendar, employee.getRegion());
      String format =
          DateFormatUtils.format(nextWorkDay.getCalDate(), CreateVacationForm.DATE_FORMAT);
      builder.withField("exitDate", aStringBuilder(format));

      // Получаем кол-во дней в отпуске за исключением неучитываемых праздников
      Integer vacationDayCountExCons =
          calendarService.getCountDaysForPeriodForRegionExConsiderHolidays(
              beginDate, endDate, employee.getRegion());
      // Получаем кол-во рабочих дней в отпуске
      Integer vacationWorkCount =
          calendarService.getCountWorkDaysForPeriodForRegion(
              beginDate, endDate, employee.getRegion());

      builder.withField("vacationWorkDayCount", aStringBuilder(vacationWorkCount.toString()));
      builder.withField(
          "vacationDayCount",
          aStringBuilder((vacationDayCountExCons <= 0) ? "0" : vacationDayCountExCons.toString()));

      /*  проверка на необходимость вывода информ сообщения
          о необходимости оформления отпуска по вск
          для отпуска с сохранением содержания
      */
      Calendar calendar = java.util.Calendar.getInstance();

      calendar.setTime(beginDate);
      int beginWeekYear = calendar.get(Calendar.WEEK_OF_YEAR);

      calendar.setTime(endDate);
      int endWeekYear = calendar.get(Calendar.WEEK_OF_YEAR);

      calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
      Date beginWeekDate = calendar.getTime();

      int endDay = calendar.get(Calendar.DAY_OF_WEEK);
      int leftDays = Calendar.SATURDAY - endDay;
      calendar.add(Calendar.DATE, ++leftDays);
      Date sunday = calendar.getTime();

      // Количество рабочих дней в отпуске, если конец отпуска приходится
      // на следующую неделю то считается с понедельника след недели по дату конца отпуска
      Integer countWorkDaysVacationPeriod =
          calendarService.getCountWorkDaysForPeriodForRegion(
              beginWeekYear != endWeekYear ? beginWeekDate : beginDate,
              endDate,
              employee.getRegion());

      // Количество рабочих дней в неделе приходящихся на конец отпуска
      Integer countWorkDaysWeek =
          calendarService.getCountWorkDaysForPeriodForRegion(
              beginWeekDate, DateUtils.addDays(beginWeekDate, 6), employee.getRegion());

      // Количество учитываемых дней в период с понедельника последней недели отпуска по конец
      // отпуска
      Integer countVacConsiderDaysOnEndWeek =
          calendarService.getCountDaysForPeriodForRegionExConsiderHolidays(
              beginWeekYear != endWeekYear ? beginWeekDate : beginDate,
              endDate,
              employee.getRegion());

      // Количество учитываемых дней в неделе
      Integer countConsiderDaysOnEndWeek =
          calendarService.getCountDaysForPeriodForRegionExConsiderHolidays(
              beginWeekYear != endWeekYear ? beginWeekDate : beginDate,
              sunday,
              employee.getRegion());

      if (vacationTypeId != null
          && vacationTypeId == VacationTypesEnum.WITH_PAY.getId()
          &&
          // проверка что в отпуск попала не вся учитываемая неделя
          !countVacConsiderDaysOnEndWeek.equals(countConsiderDaysOnEndWeek)
          &&
          // и в этот период попадают все рабочие дни
          countWorkDaysVacationPeriod.equals(countWorkDaysWeek)) {
        builder.withField("vacationFridayInform", aStringBuilder("true"));
      }

      return JsonUtil.format(builder);
    } catch (Exception th) {
      logger.error(CANT_GET_EXIT_TO_WORK_EXCEPTION_MESSAGE, th);
      return CANT_GET_EXIT_TO_WORK_EXCEPTION_MESSAGE;
    }
  }