package com.fp.armas.task; 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.param.TarmCentroControl; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; import com.fp.simple.action.TaskAction; /** * Clase que se encarga de fijar el valor de deposito para la solicitud * @author Christian Pazmino * @version 2.1 */ public class AplicarSancion 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 { System.out.println("Rutina que determina si es un CENTRO DE CONTROL y hay al menos un arma en estado RECLAMADO"); HashMap m = (HashMap) pParam; Map mrequest = (Map) m.get("request"); if (mrequest.get("numerotransaccion") == null) { return; } // DETERMINA SI SE DEBE O NO APLICAR LA SANCION Boolean aplicarSancionBLN = Boolean.FALSE; EntityManager em = PersistenceHelper.getEntityManager(); TarmDecomisoArmaTransaccion decomisoArmaTransaccionObj = TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), Long.parseLong(mrequest.get("numerotransaccion").toString())); if(decomisoArmaTransaccionObj!=null){ TarmCentroControl centroControlObj = TarmCentroControl.find(em, decomisoArmaTransaccionObj.getCcentrocontrol()); if(centroControlObj!=null){ TgeneCatalogDetailKey pk = new TgeneCatalogDetailKey(centroControlObj.getNombreinstitucion(), centroControlObj.getNombreinstitucioncodigo()); TgeneCatalogDetail unidadCD = TgeneCatalogDetail.find(em, pk); // SI ES UN DEPARTAMENTO DE CONTROL DE ARMAS, Y ES UN CENTRO DE CONTROL DE ARMAS if(centroControlObj.getInstitucion().equals("1")&& unidadCD.getDescription().contains("CENTRO CONTROL DE ARMAS")){ Long numeroTransacion=Long.parseLong(mrequest.get("numerotransaccion").toString()); //lista de las armas decomisadas por el codigo de recepcion List lArmasRecibidas= em.createQuery("select o from TarmDecomisoArma o where o.cdecarmtranrecepcion=:cdecarmtranrecepcion") .setParameter("cdecarmtranrecepcion", numeroTransacion).getResultList(); for(TarmDecomisoArma decomisoArma:lArmasRecibidas){ if("RECL".equals(decomisoArma.getEstado())){ aplicarSancionBLN = Boolean.TRUE; break; } } } } } if(aplicarSancionBLN){ m.put("BPMStatus","A"); } else{ m.put("BPMStatus","D"); } } }