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.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.pgeneral.gene.TgeneCatalogDetail; import com.fp.sessionbeans.helper.Sequence; /** * Ingresa un registro y actualiza la tabla de cupos * @author Andres Cevallos * */ public class SolicitudImportacion extends TransactionRule { private static final long serialVersionUID = 1L; private static final String JPQL_TIPOARMAEXPLOSIVO = "from TarmTipoArmaExplosivo tae" + " where tae.pk = :pk"; private static final String JPQL_COMERCIANTECUPO = "from TarmComercianteCupo tcc" + " where tcc.personcodigo = :personcodigo and tcc.clase = :clasecodigo and tcc.tipoarmaexplosivo=:tipoarmaexplosivo and tcc.tiporegistro=:tiporegistro"; private static final String JPQL_CATALOG = "from TgeneCatalogDetail tgd"+" where tgd.pk.catalog= :catalog and tgd.pk.catalogcode= :catalogcode"; /* (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 { System.out.println("INGRESA A SOLICITUD IMPORTACION"); //EntityManager em=PersistenceHelper.getEntityManager(); List listaArmas=(ArrayList)pSaveRequest.get("LISTAARMAS"); List listaTotales=(ArrayList)pSaveRequest.get("LISTATOTALES"); TarmRegistroArmas registro=(TarmRegistroArmas)pSaveRequest.get("REGISTRO"); List registroarmasL=(List) pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS"); List tarmArmasL=(List) pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); List tarmTotalPersonaL=(List) pSaveRequest.getSaveBeanModifiedRecords("TOTALCONTROLLER"); if(registroarmasL==null){ registroarmasL= new ArrayList<>(); } if(tarmArmasL==null){ tarmArmasL= new ArrayList<>(); } if(tarmTotalPersonaL==null){ tarmTotalPersonaL= new ArrayList<>(); } //Persistiendo el registro String cregistro = null; Sequence sequence = new Sequence(); Integer valorRegistro=Integer.valueOf(sequence.getNextValue("CREGISTRO").toString()); if(valorRegistro!=null){ cregistro=valorRegistro.toString(); registro.setPk(Long.parseLong(cregistro)); registroarmasL.add(registro); //em.persist(registro); } //Persistiendo la lista de armas for (TarmArmas arma : listaArmas) { arma.setCregistro(Long.parseLong(cregistro)); if(arma.isnew){ String carma = null; sequence = new Sequence(); String valor=sequence.getNextValue("CARMA").toString(); if(valor!=null){ carma=valor.toString(); arma.setPk(carma); arma.setCodigoarma(arma.getPk()); //arma.setUnidadmedidacantidad("Unidad"); tarmArmasL.add(arma); //em.persist(arma); } }else{ TarmArmas armaBD=new TarmArmas(); armaBD=PersistenceHelper.getEntityManager().find(TarmArmas.class, arma.getPk()); armaBD.setCantidad(arma.getCantidad()); armaBD.setCantoncode(arma.getCantoncode()); armaBD.setCitycode(arma.getCitycode()); armaBD.setCodigoarma(arma.getCodigoarma()); armaBD.setColor(arma.getColor()); armaBD.setColorcodigo(arma.getColorcodigo()); armaBD.setCountrycode(arma.getCountrycode()); armaBD.setCpaisorigen(arma.getCpaisorigen()); armaBD.setCregistro(arma.getCregistro()); armaBD.setCtipoarmaexplosivo(arma.getCtipoarmaexplosivo()); armaBD.setDireccion(arma.getDireccion()); armaBD.setEstado(arma.getEstado()); armaBD.setEstadocodigo(arma.getEstadocodigo()); armaBD.setFecharegistro(arma.getFecharegistro()); armaBD.setFemisionpermiso(arma.getFemisionpermiso()); armaBD.setLote(arma.getLote()); armaBD.setMarca(arma.getMarca()); armaBD.setMarcacodigo(arma.getMarcacodigo()); armaBD.setModelo(arma.getModelo()); armaBD.setNemonicoarma(arma.getNemonicoarma()); armaBD.setParroquiacode(arma.getParroquiacode()); armaBD.setPeso(arma.getPeso()); armaBD.setPesoAux(arma.getPesoAux()); armaBD.setPk(arma.getPk()); armaBD.setProvincecode(arma.getProvincecode()); armaBD.setRecordversion(arma.getRecordversion()); armaBD.setSeriecanon(arma.getSeriecanon()); armaBD.setTipofabricacion(arma.getTipofabricacion()); armaBD.setUnidadmedidacantidad(arma.getUnidadmedidacantidad()); armaBD.setUnidadmedidacantidadcodigo(arma.getUnidadmedidacantidadcodigo()); armaBD.setValorAux(arma.getValorAux()); armaBD.setCodigoarma(arma.getPk()); //em.persist(armaBD); tarmArmasL.add(arma); } } //Persistiendo la lista de totales for (TarmTotalPersona total : listaTotales) { if(total.isnew){ String ctotal = null; sequence = new Sequence(); Integer valor=Integer.valueOf(sequence.getNextValue("CTOTAL").toString()); if(valor!=null){ ctotal=valor.toString(); total.setPk(ctotal); //total.setUnidadmedidapeso("Unidad"); System.out.println(total); tarmTotalPersonaL.add(total); // em.persist(total); // em.flush(); } }else{ TarmTotalPersona totalBD=new TarmTotalPersona(); totalBD=PersistenceHelper.getEntityManager().find(TarmTotalPersona.class, total.getPk()); totalBD.setClase(total.getClase()); totalBD.setClasecodigo(total.getClasecodigo()); totalBD.setCarma(total.getCarma()); totalBD.setFecha(total.getFecha()); totalBD.setPersoncodigo(total.getPersoncodigo()); totalBD.setPk(total.getPk()); totalBD.setRecordversion(total.getRecordversion()); totalBD.setSaldoanterior(total.getSaldoanterior()); totalBD.setTipoarmaexplosivo(total.getTipoarmaexplosivo()); totalBD.setTipoarmaexplosivocodigo(total.getTipoarmaexplosivocodigo()); totalBD.setTotal(total.getTotal()); totalBD.setUnidadmedidapeso(total.getUnidadmedidapeso()); totalBD.setUnidadmedidapesocodigo(total.getUnidadmedidapesocodigo()); tarmTotalPersonaL.add(total); //em.persist(totalBD); } } // em.flush(); } catch (Exception e) { return pSaveRequest; // TODO: handle exception } return pSaveRequest; } @Override public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { return arg0; } /** * Actualiza la tabla de totales * @param tipoarmaexplosivo * @param valor * @param personcode * @return */ public TarmTotalPersona cargarDatos(TarmTipoArmaExplosivo tipoarmaexplosivo,BigDecimal valor,Integer personcode) { TarmTotalPersona totalArma = new TarmTotalPersona(); totalArma.setClase(tipoarmaexplosivo.getClase()); totalArma.setClasecodigo(tipoarmaexplosivo.getClasecodigo()); totalArma.setFecha(new Timestamp(new Date().getTime())); totalArma.setTipoarmaexplosivo(tipoarmaexplosivo.getTipoarmaexplosivo()); totalArma.setTipoarmaexplosivocodigo(tipoarmaexplosivo.getTipoarmaexplosivocodigo()); totalArma.setPersoncodigo(personcode); totalArma.setSaldoanterior(BigDecimal.ZERO); totalArma.setTotal(valor); totalArma.setUnidadmedidapeso(tipoarmaexplosivo.getUnidadmedidapeso()); totalArma.setUnidadmedidapesocodigo(tipoarmaexplosivo.getUnidadmedidapesocodigo()); return totalArma; } /** * Actualiza la tabla de totales cuando existen datos anteriores * @param tipoarmaexplosivo * @param valor * @param personcode * @param saldo * @return */ public TarmTotalPersona cargarDatosAnterior(TarmTipoArmaExplosivo tipoarmaexplosivo,BigDecimal valor,Integer personcode,BigDecimal saldo) { BigDecimal total = new BigDecimal(0); total = total.add(valor); total = total.add(saldo); TarmTotalPersona totalArma = new TarmTotalPersona(); totalArma.setClase(tipoarmaexplosivo.getClase()); totalArma.setClasecodigo(tipoarmaexplosivo.getClasecodigo()); totalArma.setFecha(new Timestamp(new Date().getTime())); totalArma.setTipoarmaexplosivo(tipoarmaexplosivo.getTipoarmaexplosivo()); totalArma.setTipoarmaexplosivocodigo(tipoarmaexplosivo.getTipoarmaexplosivocodigo()); totalArma.setPersoncodigo(personcode); totalArma.setSaldoanterior(saldo); totalArma.setTotal(total); totalArma.setUnidadmedidapeso(tipoarmaexplosivo.getUnidadmedidapeso()); totalArma.setUnidadmedidapesocodigo(tipoarmaexplosivo.getUnidadmedidapesocodigo()); return totalArma; } /** * Encuentra el cupo por cliente * @param pEntityManager * @param personcodigo * @param clasecodigo * @param tipoarmaexplosivo * @param tiporegistro * @return * @throws Exception */ public static List findCupo(EntityManager pEntityManager, Integer personcodigo, String clasecodigo, String tipoarmaexplosivo, String tiporegistro) throws Exception { Query qry = pEntityManager.createQuery(SolicitudImportacion.JPQL_COMERCIANTECUPO); qry.setParameter("personcodigo", personcodigo); qry.setParameter("clasecodigo", clasecodigo); qry.setParameter("tipoarmaexplosivo", tipoarmaexplosivo); qry.setParameter("tiporegistro", tiporegistro); return qry.getResultList(); } /** * Encuentra una lista de tipo de armas y explosivos * @param pEntityManager * @param pk * @return * @throws Exception */ public static List findByClase(EntityManager pEntityManager, String pk) throws Exception { Query qry = pEntityManager.createQuery(SolicitudImportacion.JPQL_TIPOARMAEXPLOSIVO); qry.setParameter("pk", pk); return qry.getResultList(); } public static List find(EntityManager pEntityManager, String catalog, String catalogcode) throws Exception { Query qry = pEntityManager.createQuery(SolicitudImportacion.JPQL_CATALOG); qry.setParameter("catalog", catalog); qry.setParameter("catalogcode", catalogcode); return qry.getResultList(); } /** * Método que devuelve la secuencia de un cliente. * * @return Codigo del nuevo cliente. * @throws Exception */ private Long getCodigoSolicitud() throws Exception { Sequence sequence = new Sequence(); Long codigo = sequence.getNextValue("CREGISTRO").longValue(); return codigo; } /** * Método que devuelve el codigo de un arma * @return * @throws Exception */ private String getCodigoArmas() throws Exception { Sequence sequence = new Sequence(); String codigoArma = sequence.getNextValue("CARMA").toString(); return codigoArma; } }