maia/.svn/pristine/c8/c8168a5245c46978f310f59d272...

130 lines
4.9 KiB
Plaintext
Executable File

package com.fp.armas.rules.save.solicitudimportacion;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import com.fp.armas.rules.exception.ControlArmasException;
import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.parmas.fun.TarmRegistroArmas;
import com.fp.persistence.parmas.fun.TarmTotalPersona;
import com.fp.persistence.parmas.param.TarmComercianteCupo;
import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo;
import com.fp.persistence.parmas.soli.TarmArmas;
import com.fp.persistence.parmas.soli.TarmSolicitudArmas;
import com.fp.persistence.parmas.soli.TarmSolicitudTramite;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
import com.fp.sessionbeans.helper.Sequence;
/**
* Ingresa un registro y actualiza la tabla de cupos
* @author Andres Cevallos
*
*/
public class CompletarDesaduanizacion extends TransactionRule {
private static final long serialVersionUID = 1L;
private static final String JPQL_ARMASDELTRAMITESINLOTE = "FROM TarmArmas ARM WHERE "
+ "ARM.pk IN (select SA.pk.carma from TarmSolicitudArmas SA WHERE SA.pk.csolicitud = :csolicitud) AND ARM.lote IS NULL";
private static final String JPQL_TRAMITEACTUAL = "FROM TarmSolicitudTramite t WHERE t.pk.csolicitud = :noSolicitud";
private static final String JPQL_LOTEDUPLICADO = "FROM TarmArmas ARM WHERE ARM.pk IN "
+ "(select SA.pk.carma from TarmSolicitudArmas SA WHERE SA.pk.csolicitud = :csolicitud) AND ARM.lote = :lote";
/* (non-Javadoc)
* @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest)
*/
@Override
@SuppressWarnings("unchecked")
public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
// try {
Boolean requiereDesgloce = (Boolean) pSaveRequest.get("REQUIEREDESGLOCE");
if(!requiereDesgloce){
System.out.println("*****COMPLETAR LA DESADUANIZACION*****");
EntityManager em=PersistenceHelper.getEntityManager();
List<Object>armasLst=(List<Object>)pSaveRequest.getSaveBeanModifiedRecords("DESADUANIZACION");
String noSolicitud=pSaveRequest.get("noSolicitud").toString();
TarmSolicitudTramite solicitudTramiteObj = consultaTramiteActual(em, noSolicitud);
Boolean validaDuplicados = Boolean.FALSE;
for(Object armaTmp:armasLst){
TarmArmas arma=(TarmArmas)armaTmp;
TarmArmas armaDuplicada = consultaLoteDuplicado(em, noSolicitud, arma.getLote());
if(armaDuplicada!=null){
throw new ControlArmasException("ARM-0001", "EL LOTE {0} SE ENCUENTRA DUPLICADO.", armaDuplicada.getLote());
}
}
for(Object armaTmp:armasLst){
TarmArmas arma=(TarmArmas)armaTmp;
em.merge(arma);
}
em.flush();
if(solicitudTramiteObj!=null){
if(!existeArmasConLotePendienteIngreso(em, solicitudTramiteObj.getPk().getCsolicitud())){
solicitudTramiteObj.setEstadotramite("FIN");
em.merge(solicitudTramiteObj);
em.flush();
}
}
}
// } catch (Exception e) {
// return pSaveRequest;
// // TODO: handle exception
// }
return pSaveRequest;
}
@Override
public SaveRequest reverseProcess(SaveRequest arg0) throws Exception {
return arg0;
}
public Boolean existeArmasConLotePendienteIngreso(EntityManager pEntityManager,String csolicitud){
Boolean resultado = Boolean.FALSE;
Query qry = pEntityManager.createQuery(CompletarDesaduanizacion.JPQL_ARMASDELTRAMITESINLOTE);
qry.setParameter("csolicitud", csolicitud);
List<TarmArmas>armasPendientesLst = qry.getResultList();
if(armasPendientesLst!=null && !armasPendientesLst.isEmpty()){
resultado = Boolean.TRUE;
}
return resultado;
}
public TarmSolicitudTramite consultaTramiteActual(EntityManager pEntityManager,String noSolicitud){
Query qry = pEntityManager.createQuery(CompletarDesaduanizacion.JPQL_TRAMITEACTUAL);
qry.setParameter("noSolicitud", noSolicitud);
List<TarmSolicitudTramite>solicitudTramiteLst = qry.getResultList();
if(solicitudTramiteLst!=null && !solicitudTramiteLst.isEmpty()){
return solicitudTramiteLst.get(0);
}
else{
return null;
}
}
public TarmArmas consultaLoteDuplicado(EntityManager pEntityManager,String csolicitud, String lote){
Query qry = pEntityManager.createQuery(CompletarDesaduanizacion.JPQL_LOTEDUPLICADO);
qry.setParameter("csolicitud", csolicitud);
qry.setParameter("lote", lote);
List<TarmArmas>armasConLoteDuplicadoLst = qry.getResultList();
if(armasConLoteDuplicadoLst!=null && !armasConLoteDuplicadoLst.isEmpty()){
return armasConLoteDuplicadoLst.get(0);
}
else{
return null;
}
}
}