130 lines
4.9 KiB
Plaintext
Executable File
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;
|
|
}
|
|
}
|
|
} |