LiquidityEntryDao.javaПакет: org.projectforge.plugins.liquidityplanning
Классы: LiquidityEntryDao
Расширяет: BaseDao
Методы (3): buildStatistics, select, newInstance
Импорты: 10 пакетов
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())) {
// Запись до сегодняшнего дня:
if (myFilter.getPaymentStatus() == PaymentStatus.PAID || entry.getPaid()) {
// Игнорируем записи из прошлого, если они оплачены. Также игнорируем неоплаченные записи из прошлого, если пользователь хочет отфильтровать только оплаченные.
continue;
}
} else {
if (baseDate.daysBetween(entry.getDateOfPayment()) > myFilter.getNextDays()) {
continue;
}
}
}
result.add(entry);
}
return result;
}
@Override
public LiquidityEntryDO newInstance() {
return new LiquidityEntryDO();
}
}
868d6abb7 2025 → 2026 63081666f Заголовки исходных файлов: 2024 → 2025. b71b5073d Миграция в процессе... (все тесты всех пакетов: OK). 1b50060c3 BaseDao: переименовано: get → find, save → insert, getList → select, load → select 5bafe7941 @Repository → @Service. @Transactional-аннотации удалены.