DeclarationInvoiceRepositoryImpl.java
package com.tradecloud.repository.impl;
import com.tradecloud.domain.document.Document;
import com.tradecloud.domain.document.invoice.ActualOrder;
import com.tradecloud.domain.document.invoice.DeclarationInvoice;
import com.tradecloud.domain.shipment.clearing.CustomsDeclaration;
import com.tradecloud.dto.invoice.SupplyPaymentSearch;
import com.tradecloud.repository.DeclarationInvoiceRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List;
@Repository(value = "declarationInvoiceRepositoryImpl")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class DeclarationInvoiceRepositoryImpl extends CostsInvoiceRepositoryImpl<DeclarationInvoice> implements
DeclarationInvoiceRepository {
@Override
public List<DeclarationInvoice> findAllByReference(String reference) {
return findAllByReference("declarationInvoice.byReference", reference);
}
@Override
public List<ActualOrder> findActualOrdersByInvoice(DeclarationInvoice invoice) {
return null;
}
@Override
public long supplyPaymentReportCount(SupplyPaymentSearch search) {
return 0;
}
@Override
public List<Document> supplyPaymentReportSearch(SupplyPaymentSearch search) {
return null;
}
@Override
public List<DeclarationInvoice> findByDeclaration(CustomsDeclaration declaration) {
return findByDeclaration(declaration, null);
}
public List<DeclarationInvoice> findByDeclaration(CustomsDeclaration declaration, Integer limitTo) {
CriteriaBuilder criteriaBuilder = getSession().getCriteriaBuilder();
CriteriaQuery<DeclarationInvoice> criteriaQuery = criteriaBuilder.createQuery(DeclarationInvoice.class);
Root<DeclarationInvoice> c = criteriaQuery.from(DeclarationInvoice.class);
criteriaQuery = criteriaQuery.select(c).where(criteriaBuilder.equal(c.get("customsDeclaration"), declaration));
org.hibernate.query.Query<DeclarationInvoice> q = getSession().createQuery(criteriaQuery);
if (limitTo != null)
q.stream().limit(limitTo);
return q.list();
}
}