package com.fp.armas.task; import java.sql.Timestamp; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.persistence.EntityManager; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmBodega; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; import com.fp.sessionbeans.helper.Sequence; import com.fp.simple.action.TaskAction; /** * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar * una tarea. * * @version 2.1 */ public class ActualizarInventBajaDestrucc extends TaskAction { /* * (non-Javadoc) * * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) */ @SuppressWarnings("unchecked") @Override public void assignOwner(Object pParam) throws Exception { EntityManager em=PersistenceHelper.getEntityManager(); System.out.println("Rutina que actualiza el inventario despues de que se ha autorizado destruir armas"); HashMap m = (HashMap) pParam; Map mrequest = (Map) m.get("request"); if (mrequest.get("creporte") == null) { return; } Integer creporte=Integer.parseInt(mrequest.get("creporte").toString()); //lista de las armas decomisadas que se encuentran en el reporte List tarmDetRepDestruirArmasList= em. createQuery("select t from TarmDetRepDestruirArmas t where t.creporte=:creporte") .setParameter("creporte", creporte) .getResultList(); //Se recorre la lista de las armas del reporte de destruccion for(TarmDetRepDestruirArmas detArmaObj:tarmDetRepDestruirArmasList){ //Actualizo el estado del registro tarmDecomisoArma TarmDecomisoArma decomisoArmaObj = (TarmDecomisoArma) em.createQuery("select t from TarmDecomisoArma t where t.pk=:pk") .setParameter("pk", detArmaObj.getCdecomisoarma()) .getResultList().get(0); decomisoArmaObj.setEstado("DEST"); em.merge(decomisoArmaObj); //Actualizo el estado del registro tarmArma TarmArmas armaObjAnterior = (TarmArmas) em.createQuery("select t from TarmArmas t where t.pk=:pk") .setParameter("pk", decomisoArmaObj.getCarma()) .getResultList().get(0); TarmArmas armaObj = new TarmArmas(); armaObj.setCantidad(armaObjAnterior.getCantidad()); armaObj.setCantoncode(armaObjAnterior.getCantoncode()); armaObj.setCitycode(armaObjAnterior.getCitycode()); armaObj.setCodigoarma(armaObjAnterior.getCodigoarma()); armaObj.setColor(armaObjAnterior.getColor()); armaObj.setColorcodigo(armaObjAnterior.getColorcodigo()); armaObj.setCountrycode(armaObjAnterior.getCountrycode()); armaObj.setCpaisorigen(armaObjAnterior.getCpaisorigen()); armaObj.setCregistro(armaObjAnterior.getCregistro()); armaObj.setCtipoarmaexplosivo(armaObjAnterior.getCtipoarmaexplosivo()); armaObj.setDireccion(armaObjAnterior.getDireccion()); armaObj.setEstado("DEST"); armaObj.setEstadocodigo("ESTADOARMA"); // Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); // armaObj.setFecharegistro(timeStamp); armaObj.setFemisionpermiso(armaObjAnterior.getFemisionpermiso()); armaObj.setLote(armaObjAnterior.getLote()); armaObj.setMarca(armaObjAnterior.getMarca()); armaObj.setMarcacodigo(armaObjAnterior.getMarcacodigo()); armaObj.setModelo(armaObjAnterior.getModelo()); armaObj.setNemonicoarma(armaObjAnterior.getNemonicoarma()); armaObj.setParroquiacode(armaObjAnterior.getParroquiacode()); armaObj.setPeso(armaObjAnterior.getPeso()); armaObj.setPesoAux(armaObjAnterior.getPesoAux()); armaObj.setProvincecode(armaObjAnterior.getProvincecode()); armaObj.setSeriecanon(armaObjAnterior.getSeriecanon()); armaObj.setTipofabricacion(armaObjAnterior.getTipofabricacion()); armaObj.setTipofabricacioncodigo(armaObjAnterior.getTipofabricacioncodigo()); armaObj.setUnidadmedidacantidad(armaObjAnterior.getUnidadmedidacantidad()); armaObj.setUnidadmedidacantidadcodigo(armaObjAnterior.getUnidadmedidacantidadcodigo()); armaObj.setValorAux(armaObjAnterior.getValorAux()); armaObj.setPk(getCodigoArma().toString()); em.persist(armaObj); // Actualizar en TARMBODEGA el centro de control para el arma destruida TarmBodega bodegaArmaObj = (TarmBodega) em.createQuery("select t from TarmBodega t where t.carma=:carma") .setParameter("carma", decomisoArmaObj.getCarma()) .getResultList().get(0); if(bodegaArmaObj!=null){ bodegaArmaObj.setCcentrocontrol(null); em.merge(decomisoArmaObj); }else{ TarmBodega bodegaObj = new TarmBodega(); bodegaObj.setPk(getCodigoBodega()); bodegaObj.setCarma(decomisoArmaObj.getCarma()); em.persist(bodegaObj); } // Inserta registro en transaccion Arma Bodega TarmTransaccionArmaBodega tranArmaBodegaObj = new TarmTransaccionArmaBodega(); tranArmaBodegaObj.setPk(getCTransArmaBodega()); tranArmaBodegaObj.setCarma(decomisoArmaObj.getCarma()); tranArmaBodegaObj.setOperacion("DESTRUCCION"); tranArmaBodegaObj.setOperacioncode("OPERACIONDECOMISO"); tranArmaBodegaObj.setCcentrocontrolorigen("DPTOARMASPICH"); tranArmaBodegaObj.setFecha(new Timestamp(new Date().getTime())); em.persist(tranArmaBodegaObj); } em.flush(); } private String getCodigoArma() throws Exception{ Sequence sequence = new Sequence(); String carma = sequence.getNextValue("CARMA").toString(); return carma; } private Long getCodigoBodega() throws Exception{ Sequence sequence = new Sequence(); Integer cbodega = sequence.getNextValue("CBODEGA").intValue(); return new Long(cbodega); } private Long getCTransArmaBodega() throws Exception{ Sequence sequence = new Sequence(); Integer cTransArmaBodega = sequence.getNextValue("CTRANARMBODEGA").intValue(); return new Long(cTransArmaBodega); } }