package com.fp.frontend.controller.armas.solicitud; import java.security.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import javax.annotation.PostConstruct; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.servlet.http.HttpSession; import org.hibernate.HibernateException; import org.primefaces.event.SelectEvent; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.query.Filter; import com.fp.dto.query.SubQuery; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.ReportController; import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; import com.fp.frontend.controller.armas.lov.ArmasLovController; import com.fp.frontend.controller.armas.lov.CertArmasLovController; import com.fp.frontend.controller.pcustomer.PersonDetailController; import com.fp.frontend.controller.pcustomer.lov.PersonLovController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.frontend.utility.Utilidades; import com.fp.persistence.commondb.exception.CommondbException; import com.fp.persistence.commondb.helper.FormatDates; import com.fp.persistence.parmas.fun.TarmRegistroArmas; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmCertificadoArmas; import com.fp.persistence.parmas.soli.TarmCertificadoArmasKey; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Controlador principal de la funcionalidad de consulta de armas * @author Christian Pazmino * */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class CertificadosArmasController extends AbstractController { @ManagedProperty(value = "#{registroArmController}") private RegistroArmController registroArmas; /** * Tipo documento */ private String tipoDoc; /** * Número documento */ private String numDoc; /** * Nombre/razón social */ private String nombreRazon; /** * Longitud arma */ private String longitud; /** * Calibre arma */ private String calibre; /** * Clase arma */ private String clase; /** * Tipo de arma */ private String tipoarma; /** * unidad medida peso */ private String unidadmedidapeso; /** * Bandera que indica que en realidad existe luego del ingreso de datos un tipo de arma explosivo válido */ private boolean existeTipoArmaExplosivo; /** * Bandera que escifica que se deba verificar que exista un arma explosivo válida */ private boolean verificaArmaExplosivo = Boolean.TRUE; /** * Bloquea la unidad de cantidad */ private boolean bloquearUnidadCantidad = Boolean.TRUE; /** * Bloquea la unidad de peso */ private boolean bloquearUnidadPeso = Boolean.TRUE; private Date fechaActual; private String razonSocial; private String numeroDocumento; private String filtroPersona; private TarmCentroControl centroControl; private String sessionID; private Timestamp fechaReporte; @ManagedProperty(value = "#{reportController}") private ReportController reportController; @ManagedProperty(value = "#{certificadoArmasController}") private CertificadoArmasController certificadoArmasController; private TcustPersonDetail tcustPersonDetail; public CertificadosArmasController() throws Exception { super(TarmArmas.class); } /** * Método que se ejecuta después del constructor */ @PostConstruct private void postconstruct() { this.init(); // querydatabase(); // super.startQuery(); } /** * Inicializa valores del controlador */ private void init() { try { fechaActual = new Date(); HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); sessionID = session.getId(); recperpage = 15; // Cambiar al # reg a mirar. lrecord = new ArrayList<>(); beanalias = "ARMAS"; filtroPersona = ""; // obtiene el centro de conrtrol centroControl=Utilidades.obtenerCentroControl(); TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); if(tsafeUserDetail!=null && tsafeUserDetail.getPk().getPersoncode()!=null){ tcustPersonDetail=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); } } catch (Exception e) { MessageHelper.setMessageError(e); } } protected void querydatabase() { try { // DtoQuery dto = this.getDtoQuery(); // dto.setOrderby("pk"); // Filter filtro = new Filter(); // String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP' " + filtroPersona; // filtro.setSql(sql); // dto.addFiltro(filtro); // // HashMap mtables = new HashMap(); // mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. // // Request request = this.callerhelper.getRequest(); // request.setQueryTables(mtables); // Response resp = this.callerhelper.executeQuery(request); // if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { // this.lrecord = new ArrayList(); // MessageHelper.setMessageError(resp); // } else { // this.lrecord = (List) resp.get(this.beanalias); // for(TarmArmas armasObj:lrecord){ // TarmRegistroArmas registroArmasObj = RegistroArmController.findByCodigo(armasObj.getCregistro().toString()); // if(registroArmasObj!=null && registroArmasObj.getPersoncode()!=null){ // TcustPersonDetail propietarioObj = PersonDetailController.find(registroArmasObj.getPersoncode().toString()); // armasObj.getModifiedData().put("tipoDocumento", CatalogDetailController.findxCodigoCodcatalogo(propietarioObj.getIdentificationcatalog(), propietarioObj.getIdentificationcatalogcode()).getDescription()); // armasObj.getModifiedData().put("noDocumento", propietarioObj.getIdentification()); // armasObj.getModifiedData().put("nombrerazonsocial", propietarioObj.getName()); // armasObj.getModifiedData().put("paisorigencode", registroArmasObj.getPaisorigen()); // if(armasObj.getModifiedData().get("cclase")!=null){ // armasObj.getModifiedData().put("clase", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("cclase").toString(), armasObj.getModifiedData().get("cclasecodigo").toString()).getDescription()); // } // if(armasObj.getModifiedData().get("ctipoarmaexplosivo")!=null){ // armasObj.getModifiedData().put("tipoarmaexplosivo", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ctipoarmaexplosivo").toString(), armasObj.getModifiedData().get("ctipoarmaexplosivocodigo").toString()).getDescription()); // } // if(armasObj.getModifiedData().get("ccalibre")!=null){ // armasObj.getModifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ccalibre").toString(), armasObj.getModifiedData().get("ccalibrecodigo").toString()).getDescription()); // } // } // } // super.postQuery(this.lrecord); // } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void next() throws Exception { super.next(); } /** * Retorna un {@link DtoQuery} con los atributos a presentarse * @return * @throws Exception */ private DtoQuery getDtoQuery() throws Exception{ DtoQuery dto = super.getDtoQuery(true); SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); dto.addSubQuery(subqueryMarca); SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); dto.addSubQuery(subqueryColor); SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); dto.addSubQuery(subqueryEstado); SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryClase); SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryClaseCodigo); SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryLongitud); SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryLongitudCodigo); SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryCalibre); SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryCalibreCodigo); SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryTipoArma); SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryTipoArmaCodigo); SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryUnidad); SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); dto.addSubQuery(subqueryUnidadCodigo); SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); dto.addSubQuery(subqueryUnidadMedida); SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); dto.addSubQuery(subquerycpersoncode); return dto; } @Override public void save() { } /** * Abre el lov de persona */ public void openPersonLov() { Map> params = new HashMap<>(); PersonLovController.openLov(params); } /** * Maneja la respuesta del Lov de Personas * @param event * @throws Exception */ public void onReturnPersonLov(SelectEvent event) throws Exception { filtroPersona = ""; TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); razonSocial=personaDetailSelecionada.getName(); numeroDocumento=personaDetailSelecionada.getIdentification(); filtroPersona=personaDetailSelecionada.getPk().getPersoncode().toString(); this.setLrecord(new ArrayList()); FacesContext context = FacesContext.getCurrentInstance(); context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickSeleccionarArmas"))); // List registroArmasList = RegistroArmController.findxPersoncode(personaDetailSelecionada.getPk().getPersoncode().toString()); // if(registroArmasList!=null && registroArmasList.size()>0){ // filtroPersona = " and t.cregistro in ("; // for(TarmRegistroArmas regArmaObj : registroArmasList){ // filtroPersona+=regArmaObj.getPk().toString() + ","; // } // filtroPersona=filtroPersona.substring(0, filtroPersona.length()-1); // filtroPersona+=")"; // }else{ // filtroPersona = " and t.cregistro = -10023"; // } //querydatabase(); } /* Abre el LOV de la clase del arma */ public void openLovArma() { Map> params = new HashMap>(); ListcodigosArma=new ArrayList<>(); String codigos=null; if(this.getLrecord()!=null && this.getLrecord().size()>0){ for(TarmArmas arma:this.getLrecord()){ if(codigos==null){ codigos=" t.pk !='"+arma.getPk()+"' "; }else{ codigos=codigos+" and t.pk !='"+arma.getPk()+"' "; } } } codigosArma.add(codigos); ListestadossArma=new ArrayList<>(); estadossArma.add(" t.estado !='CDP' and t.estado !='VEND' and t.estado!='TRAS' and t.estado!='MING' and t.estado!='DEST' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado!='ENTR'" + " and (t.peso>0 or t.cantidad>0) ");//t.estado !='DEST' and and t.estado !='DEC'//destruidas - cambiodepropietario - vendidas - decomisadas - suspendida - cancelada - incautada ListcodigoPersona=new ArrayList<>(); codigoPersona.add(filtroPersona); params.put("ccodigosarmas", codigosArma); params.put("estadosarmas", estadossArma); params.put("codigopersona", codigoPersona); CertArmasLovController.openLov(params); } /** * Regresa del LOV de armas * @param event */ @SuppressWarnings("unchecked") public void onReturnArma(SelectEvent event) { List tarmArmas = (List) event.getObject(); if(tarmArmas!=null && tarmArmas.size()>0){ for(TarmArmas arma:tarmArmas){ arma.getModifiedData().put("seleccionada",Boolean.TRUE); this.getLrecord().add(arma); } } //ordenamos la lista // Collections.sort(armasController.getLrecord(), new Comparator() { // public int compare(TarmArmas p1, TarmArmas p2) { // return new Integer(p1.getModifiedData().get("ordenarma").toString()).compareTo(new Integer(p2.getModifiedData().get("ordenarma").toString())); // } // }); } public void generarReporte() { String path = "armas/reports/certificadosArmas"; Boolean aux=Boolean.FALSE; java.util.Date today = new java.util.Date(); java.sql.Timestamp fechaReporte = new java.sql.Timestamp(today.getTime()); Random aleatorio = new Random(); int ticketGenerado = aleatorio.nextInt(); // String filtro=null; // ListcodArmas=new ArrayList(); int i=0; for(TarmArmas armasel:lrecord){ i++; if(armasel.getModifiedData().get("seleccionada")!=null && armasel.getModifiedData().get("seleccionada").equals(Boolean.TRUE)){ aux=Boolean.TRUE; guardarCertificadoReporte(armasel, i, ticketGenerado, fechaReporte); // codArmas.add(armasel.getPk()); } } if(!aux){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nohaseleccionadoarmas")); return; } certificadoArmasController.save(); try { //Fija parametros del report. HashMap parameters = new HashMap<>(); parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); parameters.put("codResponsable", centroControl.getPersoncode()); parameters.put("gradoresponsable","" ); //centroControl.getModifiedData().get("desgrado") parameters.put("nombreresponsable",centroControl.getModifiedData().get("desgrado")+" "+ centroControl.getModifiedData().get("nombre")); parameters.put("centrocontrol", String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); parameters.put("sessionID",sessionID); // parameters.put("fechaReporte",fechaReporte); parameters.put("ticket",ticketGenerado); parameters.put("personCodeLogin",(tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode():null); if(tcustPersonDetail!=null){ parameters.put("usuario", tcustPersonDetail.getName()); } // String[] selectedEstados = filtro.split(","); // parameters.put("filtro", codArmas); parameters.put("unidadmilitar", MsgControlArmas.getProperty("msg_inf_digitadordel")+" "+String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); String format="pdf"; String filename="Certificado"; this.reportController.execute(path, parameters, format, filename, this.getLoginController()); } catch (Exception ex) { MessageHelper.setMessageError(ex); } } private void guardarCertificadoReporte(TarmArmas armaObj,int orden,int ticket, java.sql.Timestamp fechaReporte){ TarmCertificadoArmas certificadoArmasObj = new TarmCertificadoArmas(); TarmCertificadoArmasKey pk = new TarmCertificadoArmasKey(); certificadoArmasObj.setPk(pk); try { certificadoArmasObj.getPk().setFechareporte(fechaReporte); certificadoArmasObj.getPk().setSessionid(sessionID); certificadoArmasObj.getPk().setOrden(orden); certificadoArmasObj.setIdentification(armaObj.getModifiedData().get("noDocumento")!=null?armaObj.getModifiedData().get("noDocumento").toString():null); certificadoArmasObj.setName(armaObj.getModifiedData().get("propietario")!=null?armaObj.getModifiedData().get("propietario").toString():null); certificadoArmasObj.setRegisterdate(armaObj.getFecharegistro()); certificadoArmasObj.setClase(armaObj.getModifiedData().get("clase")!=null?armaObj.getModifiedData().get("clase").toString():null); certificadoArmasObj.setTipoarmaexplosivo(armaObj.getModifiedData().get("tipoarmaexplosivo")!=null?armaObj.getModifiedData().get("tipoarmaexplosivo").toString():null); certificadoArmasObj.setMarca(armaObj.getModifiedData().get("marca")!=null?armaObj.getModifiedData().get("marca").toString():null); certificadoArmasObj.setCalibre(armaObj.getModifiedData().get("calibre")!=null?armaObj.getModifiedData().get("calibre").toString():null); certificadoArmasObj.setLote(armaObj.getLote()); certificadoArmasObj.setPaisfabricacion(armaObj.getModifiedData().get("paisorigen")!=null?armaObj.getModifiedData().get("paisorigen").toString():null); certificadoArmasObj.setEstado(armaObj.getModifiedData().get("estado")!=null?armaObj.getModifiedData().get("estado").toString():null); certificadoArmasObj.setUsercode((tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode().toString():null); certificadoArmasObj.setTicket(ticket); certificadoArmasObj.setIsnew(true); certificadoArmasController.update(certificadoArmasObj); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public RegistroArmController getRegistroArmas() { return registroArmas; } public void setRegistroArmas(RegistroArmController registroArmas) { this.registroArmas = registroArmas; } public String getTipoDoc() { return tipoDoc; } public void setTipoDoc(String tipoDoc) { this.tipoDoc = tipoDoc; } public String getNumDoc() { return numDoc; } public void setNumDoc(String numDoc) { this.numDoc = numDoc; } public String getNombreRazon() { return nombreRazon; } public void setNombreRazon(String nombreRazon) { this.nombreRazon = nombreRazon; } public String getLongitud() { return longitud; } public void setLongitud(String longitud) { this.longitud = longitud; } public String getCalibre() { return calibre; } public void setCalibre(String calibre) { this.calibre = calibre; } public String getClase() { return clase; } public void setClase(String clase) { this.clase = clase; } public String getTipoarma() { return tipoarma; } public void setTipoarma(String tipoarma) { this.tipoarma = tipoarma; } public String getUnidadmedidapeso() { return unidadmedidapeso; } public void setUnidadmedidapeso(String unidadmedidapeso) { this.unidadmedidapeso = unidadmedidapeso; } public boolean isExisteTipoArmaExplosivo() { return existeTipoArmaExplosivo; } public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; } public boolean isVerificaArmaExplosivo() { return verificaArmaExplosivo; } public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { this.verificaArmaExplosivo = verificaArmaExplosivo; } public boolean isBloquearUnidadCantidad() { return bloquearUnidadCantidad; } public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { this.bloquearUnidadCantidad = bloquearUnidadCantidad; } public boolean isBloquearUnidadPeso() { return bloquearUnidadPeso; } public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { this.bloquearUnidadPeso = bloquearUnidadPeso; } public Date getFechaActual() { return fechaActual; } public void setFechaActual(Date fechaActual) { this.fechaActual = fechaActual; } public String getRazonSocial() { return razonSocial; } public void setRazonSocial(String razonSocial) { this.razonSocial = razonSocial; } public String getNumeroDocumento() { return numeroDocumento; } public void setNumeroDocumento(String numeroDocumento) { this.numeroDocumento = numeroDocumento; } public ReportController getReportController() { return reportController; } public void setReportController(ReportController reportController) { this.reportController = reportController; } public CertificadoArmasController getCertificadoArmasController() { return certificadoArmasController; } public void setCertificadoArmasController( CertificadoArmasController certificadoArmasController) { this.certificadoArmasController = certificadoArmasController; } public String getSessionID() { return sessionID; } public void setSessionID(String sessionID) { this.sessionID = sessionID; } public Timestamp getFechaReporte() { return fechaReporte; } public void setFechaReporte(Timestamp fechaReporte) { this.fechaReporte = fechaReporte; } }