AdmMono/src/com/rjconsultores/ventaboletos/dao/hibernate/NotaCreditoVendaPacoteHiber...

93 lines
3.7 KiB
Java

package com.rjconsultores.ventaboletos.dao.hibernate;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.NotaCreditoVendaPacoteDAO;
import com.rjconsultores.ventaboletos.entidad.CajaDiversos;
import com.rjconsultores.ventaboletos.entidad.CajaDiversosPago;
import com.rjconsultores.ventaboletos.entidad.CajaTarjeta;
import com.rjconsultores.ventaboletos.entidad.NotaCreditoVendaPacote;
import com.rjconsultores.ventaboletos.enums.SituacaoVendaPacote;
import com.rjconsultores.ventaboletos.vo.reembolsoocdnotacredito.ReembolsoOcdNotaCreditoVO;
@Repository("notaCreditoVendaPacoteDAO")
public class NotaCreditoVendaPacoteHibernateDAO extends GenericHibernateDAO<NotaCreditoVendaPacote, Integer>
implements NotaCreditoVendaPacoteDAO {
@Autowired
public NotaCreditoVendaPacoteHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@SuppressWarnings("unchecked")
@Override
public List<ReembolsoOcdNotaCreditoVO> busquedaDatosReembolsoOcdNotaCreditoRS(Date fecInicial, Date fecFinal, Date fecPagamentoInicial, Date fecPagamentoFinal, Boolean indPago) {
Map<String, Object> params = new HashMap<String,Object>();
StringBuilder queryString = new StringBuilder("SELECT n FROM NotaCreditoVendaPacote n ");
queryString.append("LEFT JOIN FETCH n.ocdDatosPagamentoList ")
.append("LEFT JOIN FETCH n.vendapacotecancelamento vpc ")
.append("WHERE 1=1 ");
if (fecInicial != null) {
queryString.append("AND n.datanotacredito >= :fecInicial ");
params.put("fecInicial", fecInicial);
}
if (fecFinal != null) {
queryString.append("AND n.datanotacredito <= :fecFinal ");
params.put("fecFinal", fecFinal);
}
if (fecPagamentoInicial != null) {
queryString.append("AND n.datapagamento >= :fecPagamentoInicial ");
params.put("fecPagamentoInicial", fecPagamentoInicial);
}
if (fecPagamentoFinal != null) {
queryString.append("AND n.datapagamento <= :fecPagamentoFinal ");
params.put("fecPagamentoFinal", fecPagamentoFinal);
}
if (indPago != null) {
if (indPago) {
queryString.append("AND n.situacao = :indPago ");
} else {
queryString.append("AND (n.situacao != :indPago OR n.situacao IS NULL) ");
}
params.put("indPago", SituacaoVendaPacote.PAGO.getShortValue());
}
Query query = getSession().createQuery(queryString.toString());
for (String p : query.getNamedParameters()) {
query.setParameter(p, params.get(p));
}
List<ReembolsoOcdNotaCreditoVO> result = new ArrayList<ReembolsoOcdNotaCreditoVO>();
List<NotaCreditoVendaPacote> listNotaCredito = query.list();
for (NotaCreditoVendaPacote notaCredito :listNotaCredito) {
List<CajaTarjeta> cajaTarjetaList = new ArrayList<CajaTarjeta>();
List<CajaDiversos> listCajaDiversos = notaCredito.getCajaDiversosList();
for (CajaDiversos cajaDiversos : listCajaDiversos) {
List<CajaDiversosPago> listCajaDiversosPago = cajaDiversos.getCajaDiversosPagosList();
for (CajaDiversosPago cajaDiversosPago : listCajaDiversosPago) {
cajaTarjetaList.add(cajaDiversosPago.getCajaTarjeta());
}
}
ReembolsoOcdNotaCreditoVO vo = ReembolsoOcdNotaCreditoVO.builder().notaCredito(notaCredito)
.datosPagamento(notaCredito.getOcdDatosPagamentoList()).cajaTarjeta(cajaTarjetaList).build();
result.add(vo);
}
return result;
}
}