EN · DE · RU · FR · ES

#157: LiquidityEntryDao.java

plugins/org.projectforge.plugins.liquidityplanning/src/main/java/org/projectforge/plugins/liquidityplanning/LiquidityEntryDao.java Tipo: Java · Rol: Objeto de Acceso a Datos · Fuente: plugins/org.projectforge.plugins.liquidityplanning/src/main/java/org/projectforge/plugins/liquidityplanning/LiquidityEntryDao.java 111 líneas · 76 código · 28 comentarios · 7 en blanco
Objeto de Acceso a Datos para entidades LiquidityEntry. Extiende BaseDao para proporcionar operaciones CRUD, consultas Hibernate Search y acceso a datos a nivel de lógica de negocio.

Estructura del Código

Paquete: org.projectforge.plugins.liquidityplanning

Clases: LiquidityEntryDao

Extiende: BaseDao

Métodos (3): buildStatistics, select, newInstance

Importaciones: 10 paquetes

Código Fuente (resumido)

package org.projectforge.plugins.liquidityplanning;

import org.projectforge.business.fibu.AmountType;
import org.projectforge.business.fibu.PaymentStatus;
import org.projectforge.framework.persistence.api.BaseDao;
import org.projectforge.framework.persistence.api.BaseSearchFilter;
import org.projectforge.framework.persistence.api.QueryFilter;
import org.projectforge.framework.time.PFDay;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
@Service
public class LiquidityEntryDao extends BaseDao<LiquidityEntryDO> {
  public LiquidityEntryDao() {
    super(LiquidityEntryDO.class);
    userRightId = LiquidityplanningPluginUserRightId.PLUGIN_LIQUIDITY_PLANNING;
  }

  public LiquidityEntriesStatistics buildStatistics(final List<LiquidityEntryDO> list) {
    final LiquidityEntriesStatistics stats = new LiquidityEntriesStatistics();
    if (list == null) {
      return stats;
    }
    for (final LiquidityEntryDO entry : list) {
      stats.add(entry);
    }
    return stats;
  }

  @Override
  public List<LiquidityEntryDO> select(final BaseSearchFilter filter) {
    final LiquidityFilter myFilter;
    if (filter instanceof LiquidityFilter) {
      myFilter = (LiquidityFilter) filter;
    } else {
      myFilter = new LiquidityFilter(filter);
    }
    final QueryFilter queryFilter = new QueryFilter(myFilter);
    final List<LiquidityEntryDO> list = select(queryFilter);
    if (myFilter.getPaymentStatus() == PaymentStatus.ALL
            && myFilter.getAmountType() == AmountType.ALL
            && myFilter.getNextDays() <= 0
            || myFilter.getDeleted()) {
      return list;
    }
    final List<LiquidityEntryDO> result = new ArrayList<>();
    final PFDay baseDate = PFDay.fromOrNow(myFilter.getBaseDate());
    for (final LiquidityEntryDO entry : list) {
      if (myFilter.getPaymentStatus() == PaymentStatus.PAID && !entry.getPaid()) {
        continue;
      }
      if (myFilter.getPaymentStatus() == PaymentStatus.UNPAID && entry.getPaid()) {
        continue;
      }
      if (myFilter.getNextDays() > 0) {
        LocalDate dateOfPayment = entry.getDateOfPayment();
        if (dateOfPayment == null) {
          dateOfPayment = baseDate.getLocalDate();
        }
        if (dateOfPayment.isBefore(baseDate.getLocalDate())) {
          // Entrada es anterior a hoy:
          if (myFilter.getPaymentStatus() == PaymentStatus.PAID || entry.getPaid()) {
            // Ignorar entradas pasadas si fueron pagadas. También ignorar entradas pasadas no pagadas si el usuario desea filtrar solo pagadas.
            continue;
          }
        } else {
          if (baseDate.daysBetween(entry.getDateOfPayment()) > myFilter.getNextDays()) {
            continue;
          }
        }
      }
      result.add(entry);
    }
    return result;
  }

  @Override
  public LiquidityEntryDO newInstance() {
    return new LiquidityEntryDO();
  }
}

Historial Git

868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024-> 2025.
b71b5073d Migración en progreso... (todas las pruebas de todos los paquetes: OK).
1b50060c3 BaseDao: renombrado: get -> find, save -> insert, getList -> select, load -> select
5bafe7941 @Repository -> @Service. @Transactional-Annotations eliminadas.