EN · DE · RU · FR · ES

#3034: ReportObjectivesPage.java

projectforge-wicket/src/main/java/org/projectforge/web/fibu/ReportObjectivesPage.java Тип: Java · Роль: Финансовый учёт · Источник: projectforge-wicket/src/main/java/org/projectforge/web/fibu/ReportObjectivesPage.java 139 строк · 97 кода · 25 комментариев · 17 пустых
Реализация страницы Wicket для ReportObjectives. Составляет панели, формы и навигацию.

Структура кода

Пакет: org.projectforge.web.fibu

Классы: ReportObjectivesPage

Расширяет: AbstractStandardFormPage

Методы (6): importReportObjectivs, createReport, clear, getReportStorage, checkAccess, getTitle

Поля (3): serialVersionUID, KEY_REPORT_STORAGE, form

Импорты: 11 пакетов

Исходный код (сокращённый)

package org.projectforge.web.fibu;

import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.projectforge.business.fibu.kost.reporting.Report;
import org.projectforge.business.fibu.kost.reporting.ReportDao;
import org.projectforge.business.fibu.kost.reporting.ReportStorage;
import org.projectforge.business.user.ProjectForgeGroup;
import org.projectforge.framework.time.PFDay;
import org.projectforge.web.WicketSupport;
import org.projectforge.web.wicket.AbstractStandardFormPage;

import java.io.InputStream;

public class ReportObjectivesPage extends AbstractStandardFormPage
{
  private static final long serialVersionUID = 5880523229854750164L;

  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ReportObjectivesPage.class);

  public static final String KEY_REPORT_STORAGE = "ReportObjectivesPage:storage";

  private final ReportObjectivesForm form;

  protected transient ReportStorage reportStorage;

  public ReportObjectivesPage(final PageParameters parameters)
  {
    super(parameters);
    form = new ReportObjectivesForm(this);
    body.add(form);
    form.init();
  }

  protected void importReportObjectivs()
  {
    checkAccess();
    log.info("импорт целей отчёта.");
    final FileUpload fileUpload = form.fileUploadField.getFileUpload();
    if (fileUpload != null) {
      try {
        final String clientFileName = fileUpload.getClientFileName();
        final InputStream is = fileUpload.getInputStream();
        final Report report = WicketSupport.get(ReportDao.class).createReport(is);

        if (report == null) {
          error("Произошла ошибка во время импорта (подробности см. в файлах журнала).");
          return;
        }

        reportStorage = new ReportStorage(report);
        reportStorage.setFileName(clientFileName);
        putUserPrefEntry(KEY_REPORT_STORAGE, reportStorage, false);
      } catch (final Exception ex) {
        log.error(ex.getMessage(), ex);
        error("Произошла ошибка (подробности см. в файлах журнала): " + ex.getMessage());
      }
    }
  }

  protected void createReport()
  {
    checkAccess();
    final ReportObjectivesFilter filter = form.getFilter();
    if (filter.getFromDate() == null) {
      return;
    }
    log.info("загрузить отчёт: " + filter);
    final ReportStorage storage = getReportStorage();
    final Report report = storage.getRoot();
    final String currentReportId = storage.getCurrentReport().getId(); // Сохранить идентификатор текущего отчёта.
    final PFDay day = PFDay.from(filter.getFromDate()); // не null
    report.setFrom(day.getYear(), day.getMonthValue());
    PFDay untilDay;
    if (filter.getToDate() != null) {
      untilDay = PFDay.from(filter.getToDate()); // не null
    } else {
      untilDay = day.getEndOfMonth();
    }
    report.setTo(untilDay.getYear(), untilDay.getMonthValue());
    WicketSupport.get(ReportDao.class).loadReport(report);
    storage.setCurrentReport(currentReportId); // Выбрать предыдущий текущий отчёт.
  }

  protected void clear()
  {
    checkAccess();
    log.info("очистить отчёт.");
    removeUserPrefEntry(KEY_REPORT_STORAGE);
    this.reportStorage = null;
  }

  /**
   * @return Любое существующее хранилище пользователя или null, если не существует (ни в классе, ни в сессии пользователя).
   */
  protected ReportStorage getReportStorage()
  {
    if (reportStorage != null) {
      return reportStorage;
    }
    return (ReportStorage) getUserPrefEntry(KEY_REPORT_STORAGE);
  }

  private void checkAccess()
  {
    getAccessChecker().isLoggedInUserMemberOfGroup(ProjectForgeGroup.FINANCE_GROUP, ProjectForgeGroup.CONTROLLING_GROUP);
    getAccessChecker().checkRestrictedOrDemoUser();
  }

  @Override
  protected String getTitle()
  {
    return getString("fibu.kost.reporting");
  }
}

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
a73905c14 Исправление опечаток в каталогах projectforge*/ Найдено с помощью codespell См. c3b0602a893
4efcbd0fb Работа по миграции в процессе...
b6092df09 Авторское право 2023 -> 2024