maia/.svn/pristine/de/de82d70a71dd9bdcb555b8dbbbf...

625 lines
23 KiB
Plaintext
Executable File

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<TarmArmas> {
@ManagedProperty(value = "#{registroArmController}")
private RegistroArmController registroArmas;
/**
* Tipo documento
*/
private String tipoDoc;
/**
* N&uacute;mero documento
*/
private String numDoc;
/**
* Nombre/raz&oacute;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&aacute;lido
*/
private boolean existeTipoArmaExplosivo;
/**
* Bandera que escifica que se deba verificar que exista un arma explosivo v&aacute;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&eacute;todo que se ejecuta despu&eacute;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<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
// 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<TarmArmas>();
// MessageHelper.setMessageError(resp);
// } else {
// this.lrecord = (List<TarmArmas>) 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<String, List<String>> 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<TarmArmas>());
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickSeleccionarArmas")));
// List<TarmRegistroArmas> 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<String, List<String>> params = new HashMap<String, List<String>>();
List<String>codigosArma=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);
List<String>estadossArma=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
List<String>codigoPersona=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> tarmArmas = (List<TarmArmas>) 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<TarmArmas>() {
// 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;
// List<String>codArmas=new ArrayList<String>();
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<String, Object> 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;
}
}