package com.fp.frontend.controller.armas.solicitud; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; 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.faces.event.AjaxBehaviorEvent; import org.apache.commons.lang.StringUtils; import org.primefaces.context.RequestContext; 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.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.ReportController; import com.fp.frontend.controller.alfresco.AlfrescoController; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.pcustomer.PersonDetailController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.controller.pgeneral.gene.ParametersController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.frontend.utility.MsgGeneral; 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.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneParameters; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; @SuppressWarnings("serial") @ManagedBean @ViewScoped public class ReporteDestruccionArmasController extends AbstractController { private List lTipoReporte=new ArrayList(); private TcustPersonDetail usuario; // Filtros de busqueda private Date fechaCorte = new Date(); private String numeroSerie; /** * atributo para habilitar o desabilitar al boton * genera acta */ private Boolean btnGenerarActa; /** * atributo para habilitar o desabilitar al boton * de seleccion por registro */ private Boolean btnTabGrid; /** * numero de custodia del arma */ private String numeroDecomiso; private String institucionCentroControl=""; private String institucionUnidadControl=""; //Control destino private String centroControlDestino; private String unidadDestino; private Boolean isCentroDpto = Boolean.FALSE; /** * Codigo del centro de control */ private String codigoOrganismoControlDestino; /** * codigo de la unidad de control */ private String codigoUnidadControlDestino; private String centroControlActual; private String unidadActual; private List centroControlsDestinos; /** * Atributo para la lista de objetos TgeneCatalogDetail */ private List unidadesDestinos; private String format; private String tipoReporte; private TsafeUserDetail userDetail; private Integer diasParaDestruirArma; private TarmCentroControl centroControl = new TarmCentroControl(); private String numeroTransaccionEnvio=""; private String numeroTransaccionRecepcion=""; private String numeroTransaccion; private String numeroTransaccionEnvioConvertido=""; private String filtroData=""; private boolean transaccionVerificarArmas; private boolean transaccionAprobarActaEntrega; private String xpathflujo; private TcustPersonDetail responsableCentroControl= null; List listTarmDecomisoArma = new ArrayList<>(); private String envioFlujo;//recibe del flujo el numero de transaccion = "ENV-000000310" private String pathflujo;//recibe del flujo la ruta del archivo private String cprovincia; private Boolean btnFlujo; private Boolean btnGrabar; /** * codigo del decomiso del catalogo ESTADOARMA */ private String codigoDecomiso; /** * codigo de la incautacion del catalogo ESTADOARMA */ private String codigoIncautacion; /** * codigo de la entrega voluntaria del catalogo ESTADOARMA */ private String codigoEntVol; /** * codigo del abandono del catalogo ESTADOARMA */ private String codigoAbandono; /** * codigo del reclamo del catalogo ESTADOARMA */ private String codigoReclamo; /** * estado operacion del decomiso del catalogo ESTADOARMA */ private String estadoOperacion; /** * Deshabilita la pantalla después de grabar la solicitud */ private boolean btnSelTodos; /** * Deshabilita la pantalla para filtros después de grabar la solicitud */ private boolean btnFiltros; @ManagedProperty(value = "#{reportController}") private ReportController reportController; @ManagedProperty(value="#{alfrescoController}") private AlfrescoController alfrescoController; @ManagedProperty(value = "#{transaccionArmaBodegaController}") private TransaccionArmaBodegaController transaccionArmaBodegaController; @ManagedProperty(value = "#{bodegaController}") private BodegaController bodegaController; @ManagedProperty(value = "#{decomisoArmaTransaccionController}") private DecomisoArmaTransaccionController decomisoArmaTransaccionController; public ReporteDestruccionArmasController() throws Exception { super(TarmDecomisoArma.class); // TODO Auto-generated constructor stub } @PostConstruct private void postconstruct() { startQuery(); this.init(); // Inicializa autoconsulta super.startQuery(); } public void startQuery() { try { this.pasteBpmScreenParameters(); xpathflujo=super.getMfilters().get("xpath");//"cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// String numerotransaccion=super.getMfilters().get("numerotransaccion"); TarmDecomisoArmaTransaccion decomisoArmaTransaccion =decomisoArmaTransaccionController.find(numerotransaccion); envioFlujo=decomisoArmaTransaccion.getNumerotransaccion(); super.getMfilters().clear(); } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { format = "pdf"; userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); diasParaDestruirArma = ParametersController.find("DIASENBODEGA.DESTRUIRARMAS", "1").getNumbervalue().intValue(); lTipoReporte = CatalogDetailController.find("TIPOREPORTE"); this.unidadesDestinos = new ArrayList<>(); this.unidadDestino = ""; this.centroControlsDestinos = CatalogDetailController.find("INSTITUCION"); //Tenia antes 10000 recperpage = 10000; lrecord = new ArrayList<>(); beanalias = "RPRTEDESTRUCCIONDEARMAS"; obtenerCentroControl(); TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); centroControlActual = tsafeUserDetail.getModifiedData().get("centrocontrol").toString(); unidadActual = tsafeUserDetail.getModifiedData().get("unidad").toString(); //codigoOrganismoControl = tsafeUserDetail.getCcentrocontrol(); //codigoUnidadControl = tsafeUserDetail.getCcentrocontrol(); //querydatabase(); this.responsableCentroControl = new TcustPersonDetail(); this.obtenerResponsableCentroControl(); this.numeroTransaccion=null; this.btnFlujo=Boolean.FALSE; //boton desabilitado this.btnGrabar=Boolean.TRUE; this.btnGenerarActa=Boolean.TRUE; this.btnTabGrid=Boolean.TRUE; this.btnSelTodos = Boolean.TRUE; this.btnFiltros = Boolean.FALSE; this.estadoOperacion = "RECEPCION"; this.codigoDecomiso=codigos("CODIGO.DECOMISADA");//DECOMISO this.codigoIncautacion=codigos("CODIGO.INCAUTADA");//INCAUTACION this.codigoEntVol=codigos("CODIGO.ENTV");//ENTREGA VOLUNTARIA this.codigoAbandono=codigos("CODIGO.ABAN");//ABANDONO this.codigoReclamo=codigos("CODIGO.RECL");//RECLAMO } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Metodo para obtener los codigos */ private String codigos(String parametro){ TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); return tgeneParameters.getTextvalue(); } /** * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas * @throws Exception */ private void obtenerCentroControl() throws Exception { if(this.getLoginController()!=null && 53 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ transaccionVerificarArmas = true; TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); centroControl= CentroControlArmasController.findPorCodigo(tsafeUserDetail.getCcentrocontrol()); institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getInstitucion(), centroControl.getInstituciontipo()).getDescription(); institucionUnidadControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); cprovincia=centroControl.getProvincecode(); } /** * Obtiene el responsable del Centro de Control */ if(this.getLoginController()!=null && 58 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ transaccionAprobarActaEntrega=true; numeroTransaccionEnvio = envioFlujo; listTarmDecomisoArma = DecomisoArmaTransaccionController.findPorEnvio(numeroTransaccionEnvio,false); centroControl= CentroControlArmasController.findPorCodigo(listTarmDecomisoArma.get(0).getCcentrocontrol()); institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getInstitucion(), centroControl.getInstituciontipo()).getDescription(); institucionUnidadControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); fechaCorte = listTarmDecomisoArma.get(0).getFcorte(); querydatabase(); } } public void obtenerResponsableCentroControl(){ Integer responsable = this.centroControl.getPersoncode(); this.responsableCentroControl = PersonDetailController.find(responsable.toString()); } /** * Carga las unidades de control por el centro de control */ public void seleccionaCentroControlDestino(){ if(centroControlDestino!=null){ unidadesDestinos = CentroControlArmasController.findxInstitucion(centroControlDestino); }else{ unidadesDestinos=new ArrayList<>(); } } /** * Seleccionado todos los registros de la tabla */ public void seleccionarTodos(AjaxBehaviorEvent event) { try { Boolean valorColocar = Boolean.FALSE; if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ valorColocar = Boolean.TRUE; } btnGrabar=Boolean.TRUE; for (TarmDecomisoArma decomisoArma : lrecord) { decomisoArma.getModifiedData().put("seleccion", valorColocar); if(decomisoArma.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ btnGrabar=Boolean.FALSE; //itemsUnidadBolean=Boolean.TRUE; } } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Generar Acta */ public void generarActa(){ String gradoUsuario =""; if(fechaCorte!=null){ Calendar fechaActualCldr = Calendar.getInstance(); List listTarmDecomisoArma = DecomisoArmaTransaccionController.findPorEnvio(numeroTransaccionEnvioConvertido,false); TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); if(grado != null){ gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); }else{ gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); } String codigoreporte=listTarmDecomisoArma.get(0).getPk().toString(); String path = "armas/reports/entregaArmasacta"; String filename=numeroTransaccionEnvioConvertido; //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("fechaCorte", (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCorte).toString()); parameters.put("codResponsable",this.responsableCentroControl.getPk().getPersoncode()); parameters.put("gradoUsuario",gradoUsuario.trim()); try { //Usuario logueado en la aplicacion String nombreUsuario; if(userDetail.getPk().getPersoncode()!=null){ nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); parameters.put("personcode", userDetail.getPk().getPersoncode()); } else{ nombreUsuario = ""; } parameters.put("usuario", nombreUsuario.trim()); parameters.put("centrocontrolorigen", institucionCentroControl.trim()); parameters.put("unidadcontrolorigen", institucionUnidadControl.trim()); TarmCentroControl centroControlDestino = CentroControlArmasController.findPorCodigo(unidadDestino); String centroControlDestinoStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlDestino.getInstitucion(), centroControlDestino.getInstituciontipo()).getDescription(); String unidadControlDestinoStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlDestino.getNombreinstitucion(), centroControlDestino.getNombreinstitucioncodigo()).getDescription(); parameters.put("centrocontroldestino", centroControlDestinoStr.trim()); parameters.put("unidadcontroldestino", unidadControlDestinoStr.trim()); parameters.put("tecnicoAlmacenamiento",MsgControlArmas.getProperty("tecnicoAlmacenamiento")+" "+institucionCentroControl); parameters.put("jefe",MsgControlArmas.getProperty("jefe")+" "+institucionCentroControl); parameters.put("codigodecomisoarma",codigoreporte); parameters.put("tramite", numeroTransaccionEnvioConvertido); //Fecha actual StringBuilder fechaActualSB = new StringBuilder(); fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); parameters.put("lugarFecha", fechaActualSB.toString()); //parameters.put("transaccion",numeroTransaccionEnvioConvertido); //format = CatalogDetailController.findxCodigoCodcatalogo(tipoReporte, "TIPOREPORTE").getLegalcode(); format = "pdf"; InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); xpathflujo = generarXpath(); alfrescoController.uploadFile(file,numeroTransaccionEnvioConvertido+".pdf",xpathflujo); //="cm:Decomiso/cm:A-2016/cm:M-01/cm:CENTRO CONTROL/cm:ABANDONO/cm:ENV/cm:ENV-000000319.pdf" } catch (Exception ex) { MessageHelper.setMessageError(ex); } } } /** * Método para habilitar o desabilitar el btn * Arma a decomisar * @throws Exception */ public void onChange(TarmDecomisoArma decomisoArma ) throws Exception { btnGrabar=Boolean.TRUE; //itemsUnidadBolean=Boolean.FALSE; for(TarmDecomisoArma t:lrecord){ if(t.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ btnGrabar=Boolean.FALSE; //itemsUnidadBolean=Boolean.TRUE; } } } /** * Metodo para generar la ruta del alfresco * @return */ public String generarXpath(){ Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); StringBuilder ruta=new StringBuilder("cm:Decomiso"); ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); String centrocontrol=institucionUnidadControl.replaceAll("\\s+", "_"); ruta = ruta.append("/cm:").append(centrocontrol); ruta = ruta.append("/cm:"+"ENV"); return ruta.toString(); } /** * Método para devolver la descripcion * * @param list * @param codigo * @return */ public String catalogoDescripcion(List list, String codigo) { for (TgeneCatalogDetail item : list) { if (codigo.equals(item.getPk().getCatalog())) { return item.getDescription(); } } return null; } /** * Ejecuta un reporte de armas a destruir * Método para el inicio de flujo */ public void iniciarFlujo() { try { if(xpathflujo==null || numeroTransaccion==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); return; } if(cprovincia==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); return; } String xpath=xpathflujo+"/cm:"+numeroTransaccionEnvioConvertido+ ".pdf"; Request request = callerhelper.getRequest(); super.cleanRequest(request); //codigo de la tabla TarmDecomisoArmaTransaccion request.modifiedData().put("numerotransaccion", numeroTransaccion); //codigo de la provincia request.modifiedData().put("cprovincia", cprovincia); //ruta del archivo para la firma //TODO Falta crear la variable en maia 2-8 request.modifiedData().put("xpath", xpath); request.modifiedData().put("numerosolicitud", numeroTransaccionEnvioConvertido); request.modifiedData().put("isnew", "Y"); request.setLogsolicitude(numeroTransaccionEnvioConvertido); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.setShowRow(true); MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " NUMERO TRANSACCION: " +numeroTransaccion); xpathflujo=null; numeroTransaccion=null; this.btnGrabar = Boolean.TRUE; this.btnFlujo = Boolean.FALSE; this.btnSelTodos = Boolean.TRUE; this.btnGenerarActa=Boolean.TRUE; numeroTransaccionEnvioConvertido=null; } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. * * @throws Exception */ @Override public void create() throws Exception { super.create(); } /** * Metodo para filtrar por el numero de transaccion despues de la realizacion del guardado * @throws Exception */ protected void querydata() throws Exception { filtroData = numeroTransaccionEnvio; query(); setFiltroData(""); } /** * Se ejecuta cuando seleccionamos forzar consulta cuando hay data en el grid */ @Override public void forcedQuery() throws Exception { centroControlDestino = null; this.init(); super.forcedQuery(); } @SuppressWarnings("unchecked") @Override protected void querydatabase() { //clearAll(); /*this.btnGrabar=Boolean.TRUE; this.btnGenerarActa=Boolean.TRUE; this.btnSelTodos = Boolean.TRUE;*/ //Verificar si tiene o no contenido seleccionado if (lrecord != null && !lrecord.isEmpty() && btnTabGrid) { for (TarmDecomisoArma decomisoArma : lrecord) { if (decomisoArma.getModifiedData().get("seleccion") .equals(Boolean.TRUE)) { RequestContext.getCurrentInstance().execute( "PF('queryConfirmDialog').show()"); return; } } } try { numeroTransaccionEnvio=filtroData; if(fechaCorte!=null && !fechaCorte.after(new Date())){ DtoQuery dto = this.getDtoQuery(); dto.setOrderby("t.fdecomiso"); Request request = this.callerhelper.getRequest(); if((transaccionVerificarArmas || transaccionAprobarActaEntrega) && centroControl==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_centrocontrol")); return; } if(numeroTransaccionRecepcion!=null && !numeroTransaccionRecepcion.isEmpty() && !numeroTransaccionRecepcion.substring(0, 3).equalsIgnoreCase("REC")){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numero_recepcion")); return; } if(transaccionVerificarArmas){ try { //Valores para el filtro request.put("centroControl", centroControl.getPk()); request.put("numeroDecomiso", numeroDecomiso); request.put("numeroserie", numeroSerie); request.put("fechacorte", fechaCorte.toString()); //QueryRule VerificarArmasQuery request.put("queryalias", "TRANSVERIFICARARMAS"); } catch (Exception e) { MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_decomisos")); return; } }else if (transaccionAprobarActaEntrega){ try { dto = filtroAprobarActaEntrega(dto); } catch (Exception e) { MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_decomisos")); return; } } else{ Filter fechaFiltro= new Filter(); fechaFiltro.setSql("t.fdecomiso < " + "TO_DATE('" + fechaCorte.toString() + "','yyyy-mm-dd')"); dto.addFiltro(fechaFiltro); } HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. request.setQueryTables(mtables); Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { lrecord = new ArrayList(); btnSelTodos = Boolean.TRUE; MessageHelper.setMessageError(resp); } else { lrecord = (List) resp.get(beanalias); if(lrecord!=null && !lrecord.isEmpty()){ btnSelTodos = Boolean.FALSE; List listaNoenviada=new ArrayList(); for(TarmDecomisoArma decomisoArma:lrecord){ if(!filtroData.isEmpty()){ decomisoArma.getModifiedData().put("seleccion", Boolean.TRUE); } else{ decomisoArma.getModifiedData().put("seleccion", Boolean.FALSE); } if(decomisoArma.getModifiedData().get("estadoflujo")!=null && decomisoArma.getModifiedData().get("estadoflujo").equals("NOENV")){ listaNoenviada.add(decomisoArma); } } for(TarmDecomisoArma decomisoArma:listaNoenviada){ lrecord.remove(decomisoArma); } super.postQuery(lrecord); }else{ MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_info_consultarArmasDecomidas")); } } } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } private DtoQuery getDtoQuery() throws Exception{ DtoQuery dto = super.getDtoQuery(true); SubQuery subqueryCarma= new SubQuery("TarmArmas","pk","ncodigoarma","i.pk=t.carma"); dto.addSubQuery(subqueryCarma); SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","ntipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o " + " where o.pk= (select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))" + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); dto.addSubQuery(subqueryTipoArmaExplosivo); SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","nclase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o " + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); dto.addSubQuery(subqueryClasecatalogo); SubQuery subqueryRazonSocial= new SubQuery("TcustPersonDetail","name","razonsPropietario","i.pk.personcode=(select p.personcode from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); dto.addSubQuery(subqueryRazonSocial); SubQuery subqueryIndentificacion= new SubQuery("TcustPersonDetail","identification","documentoPropietario","i.pk.personcode=(select p from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); dto.addSubQuery(subqueryIndentificacion); SubQuery subquerylonguitud= new SubQuery("TgeneCatalogDetail","description","nlongitud","i.pk.catalog= (select o.longitud from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " + " i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o " + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); dto.addSubQuery(subquerylonguitud); SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ncalibre","i.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)"); dto.addSubQuery(subqueryCalibre); SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","nmarca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.carma)" + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.carma)"); dto.addSubQuery(subqueryMarca); SubQuery subqueryLote= new SubQuery("TarmArmas","lote","nserie","i.pk=t.carma"); dto.addSubQuery(subqueryLote); SubQuery subqueryNRecivo= new SubQuery("TarmDecomiso","numerorecibo","nrecibo","i.pk=t.cdecomiso"); dto.addSubQuery(subqueryNRecivo); SubQuery subqueryNTransaccion= new SubQuery("TarmDecomiso","numerotransaccion","numerotransaccion","i.pk=t.cdecomiso"); dto.addSubQuery(subqueryNTransaccion); SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","nunidad","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o" + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); dto.addSubQuery(subqueryUnidadTipo); SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog= (select o.color from TarmArmas o where o.pk=t.carma)" + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.carma)"); dto.addSubQuery(subqueryColor); SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog= (select o.estado from TarmArmas o where o.pk=t.carma) " + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.carma)"); dto.addSubQuery(subqueryEstado); //tarmdecomiso SubQuery subquerynrecibo= new SubQuery("TarmDecomiso","numerorecibo","nrecibo","i.pk=t.cdecomiso"); dto.addSubQuery(subquerynrecibo); SubQuery subquerynrazon= new SubQuery("TarmDecomiso","nombrerazonsocial","nrazons","i.pk=t.cdecomiso"); dto.addSubQuery(subquerynrazon); SubQuery subquerydocumento= new SubQuery("TarmDecomiso","numerodocumento","documento","i.pk=t.cdecomiso"); dto.addSubQuery(subquerydocumento); SubQuery subqueryestadoflujo= new SubQuery("TarmDecomisoArmaTransaccion","estadoflujo","estadoflujo","i.pk=t.cdecomisoarmatransaccion"); dto.addSubQuery(subqueryestadoflujo); return dto; } /* (non-Javadoc) * @see com.fp.frontend.controller.AbstractController#save() */ @Override public void save() { try { if(unidadDestino==null || unidadDestino.isEmpty() || centroControlDestino==null || centroControlDestino.isEmpty()){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_verificarcentcontdestino")); return; } if(this.getLoginController()!=null && 53 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ List listaSeleccionada = new ArrayList(); Boolean seleccion = Boolean.FALSE; for(TarmDecomisoArma decomisoArma:this.lrecord){ record = decomisoArma; if(record.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ seleccion = true; record.setCdecomisoarmatransaccion(0l);//valor cualquiera seteado para que el transaction rule lo tome como actualizacion record.setCoperaciontransaccion("ENVIO"); transaccionArmaBodegaController.create(); transaccionArmaBodegaController.getRecord().setCarma(record.getCarma()); transaccionArmaBodegaController.getRecord().setCcentrocontrolorigen(centroControl.getPk()); //Nuevo le doy destino de envio transaccionArmaBodegaController.getRecord().setCcentrocontroldestino(unidadDestino); transaccionArmaBodegaController.update(); bodegaController.create(); bodegaController.getRecord().setCarma(record.getCarma()); bodegaController.getRecord().setCcentrocontrol(centroControl.getPk()); bodegaController.update(); listaSeleccionada.add(record); } this.update(); } if(!seleccion){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_verificararmas")); return; } Request request = callerhelper.getRequest(); HashMap msave = new HashMap(); Calendar cal=Calendar.getInstance(); cal.setTime(fechaCorte); java.sql.Date fechaCorteRegistro=new java.sql.Date(cal.getTimeInMillis()); this.decomisoArmaTransaccionController.create(); this.decomisoArmaTransaccionController.getRecord().setFtransaccion(null); this.decomisoArmaTransaccionController.getRecord().setFcorte(fechaCorteRegistro); this.decomisoArmaTransaccionController.getRecord().setCcentrocontrol(centroControl.getPk()); if(!"1".equals(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getInstitucion(), centroControl.getInstituciontipo()).getPk().getCatalog())){ this.decomisoArmaTransaccionController.getRecord().setEstadofirma("Y"); this.decomisoArmaTransaccionController.getRecord().setEstadoflujo("ENV"); isCentroDpto = Boolean.FALSE; }else{ this.decomisoArmaTransaccionController.getRecord().setEstadofirma("N"); this.decomisoArmaTransaccionController.getRecord().setEstadoflujo("NOENV"); isCentroDpto = Boolean.TRUE; } this.decomisoArmaTransaccionController.update(); DtoSave dtosaveDecomisoTran = this.decomisoArmaTransaccionController.getDtoSave(true); dtosaveDecomisoTran.setReturnpk(true); dtosaveDecomisoTran.setPosition(1); msave.put(decomisoArmaTransaccionController.getBeanalias(), dtosaveDecomisoTran); DtoSave dtosaveDecomiso = this.getDtoSave(true); dtosaveDecomiso.setReturnpk(true); dtosaveDecomiso.setPosition(2); msave.put(getBeanalias(), dtosaveDecomiso); DtoSave dtosaveBodegaTransaccion = this.transaccionArmaBodegaController.getDtoSave(); dtosaveBodegaTransaccion.setReturnpk(true); dtosaveBodegaTransaccion.setPosition(3); msave.put( this.transaccionArmaBodegaController.getBeanalias(), dtosaveBodegaTransaccion); DtoSave dtosaveBodega = this.bodegaController.getDtoSave(); dtosaveBodega.setReturnpk(true); dtosaveBodega.setPosition(4); msave.put( this.bodegaController.getBeanalias(), dtosaveBodega); request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.decomisoArmaTransaccionController.postCommit(resp); this.transaccionArmaBodegaController.postCommit(resp); this.bodegaController.postCommit(resp); numeroTransaccionEnvio = String.valueOf(((TarmDecomisoArmaTransaccion)(dtosaveDecomisoTran.getLinsert().get(0))).getPk()); numeroTransaccion=numeroTransaccionEnvio; setNumeroTransaccionEnvioConvertido("ENV"+"-"+StringUtils.leftPad(numeroTransaccionEnvio, 9, '0')); this.btnGrabar = Boolean.TRUE; this.btnFlujo = Boolean.TRUE; this.btnSelTodos = Boolean.TRUE; this.btnFiltros = Boolean.TRUE; this.btnTabGrid=Boolean.FALSE; this.postCommit(resp); lrecord = listaSeleccionada; MessageHelper.setMessageInfo(resp); FacesContext context = FacesContext.getCurrentInstance(); context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickGenerarActa"))); context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite"))); } else { MessageHelper.setMessageError(resp); } } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Para realizar el filtro por acta de aprobación * @param dto Dto de los datos consultados * @return * @throws Exception */ private DtoQuery filtroAprobarActaEntrega(DtoQuery dto) throws Exception { fechaCorte=new Date(); numeroTransaccionEnvio=envioFlujo; Filter decomisoFiltro= new Filter(); decomisoFiltro.setSql(" t.cdecomisoarmatransaccion= '" + listTarmDecomisoArma.get(0).getPk() + "'"); dto.addFiltro(decomisoFiltro); return dto; } @Override public void postCommit(Response response) throws Exception { super.postCommitGeneric(response, beanalias); } /** * Genera un reporte de armas a destruir * */ public void generateReport() { if(fechaCorte!=null){ Calendar fechaActualCldr = Calendar.getInstance(); Calendar fechaCorteCldr = Calendar.getInstance(); fechaCorteCldr.setTime(fechaCorte); if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){ String path = "armas/reports/destruccionArmas"; String filename="armas"; //Fija parametros del report. HashMap parameters = new HashMap<>(); parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); try { //Usuario logueado en la aplicacion String nombreUsuario; if(userDetail.getPk().getPersoncode()!=null){ nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); } else{ nombreUsuario = ""; } parameters.put("usuario", nombreUsuario); //Fecha de corte StringBuilder fechaCorteSB= new StringBuilder(); fechaCorteSB = fechaCorteSB.append((fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCorteCldr.get(Calendar.DAY_OF_MONTH))); fechaCorteSB = fechaCorteSB.append("-").append((fechaCorteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.MONTH) + 1) : (fechaCorteCldr.get(Calendar.MONTH)+1)); fechaCorteSB = fechaCorteSB.append("-").append(fechaCorteCldr.get(Calendar.YEAR)); parameters.put("fechaCorte", fechaCorteSB.toString()); //Fecha actual StringBuilder fechaActualSB = new StringBuilder(); fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); parameters.put("lugarFecha", fechaActualSB.toString()); //Fecha de referencia Calendar fechaReferenciaReporteCldr = Calendar.getInstance(); fechaReferenciaReporteCldr.setTime(fechaCorte); fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma); StringBuilder fechaReferenciaSB = new StringBuilder(); fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH))); fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1)); fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR)); parameters.put("fechaReferenciaReporte", fechaReferenciaSB.toString()); //format = CatalogDetailController.findxCodigoCodcatalogo(tipoReporte, "TIPOREPORTE").getLegalcode(); format = "pdf"; this.reportController.execute(path, parameters, format, filename, this.getLoginController()); } catch (Exception ex) { MessageHelper.setMessageError(ex); } } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); } } } /** * Metodo para finalizar la tarea del flujo */ public void completarTarea() { try { Request request = callerhelper.getRequest(); // limpiar request para finalizar la tarea. super.cleanRequest(request); request.modifiedData().put("numerotransaccion", envioFlujo); request.modifiedData().put("xpath", pathflujo); request.modifiedData().put("TID", tid); request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { MessageHelper.setMessageInfo(resp); RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public List getlTipoReporte() { return lTipoReporte; } public void setlTipoReporte(List lTipoReporte) { this.lTipoReporte = lTipoReporte; } public TcustPersonDetail getUsuario() { return usuario; } public void setUsuario(TcustPersonDetail usuario) { this.usuario = usuario; } public Date getFechaCorte() { return fechaCorte; } public void setFechaCorte(Date fechaCorte) { this.fechaCorte = fechaCorte; } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } public ReportController getReportController() { return reportController; } public void setReportController(ReportController reportController) { this.reportController = reportController; } public String getTipoReporte() { return tipoReporte; } public void setTipoReporte(String tipoReporte) { this.tipoReporte = tipoReporte; } public TsafeUserDetail getUserDetail() { return userDetail; } public void setUserDetail(TsafeUserDetail userDetail) { this.userDetail = userDetail; } public Integer getDiasParaDestruirArma() { return diasParaDestruirArma; } public void setDiasParaDestruirArma(Integer diasParaDestruirArma) { this.diasParaDestruirArma = diasParaDestruirArma; } public TarmCentroControl getCentroControl() { return centroControl; } public void setCentroControl(TarmCentroControl centroControl) { this.centroControl = centroControl; } public String getInstitucionCentroControl() { return institucionCentroControl; } public void setInstitucionCentroControl(String institucionCentroControl) { this.institucionCentroControl = institucionCentroControl; } public boolean isTransaccionVerificarArmas() { return transaccionVerificarArmas; } public void setTransaccionVerificarArmas(boolean transaccionVerificarArmas) { this.transaccionVerificarArmas = transaccionVerificarArmas; } public DecomisoArmaTransaccionController getDecomisoArmaTransaccionController() { return decomisoArmaTransaccionController; } public void setDecomisoArmaTransaccionController( DecomisoArmaTransaccionController decomisoArmaTransaccionController) { this.decomisoArmaTransaccionController = decomisoArmaTransaccionController; } public TransaccionArmaBodegaController getTransaccionArmaBodegaController() { return transaccionArmaBodegaController; } public void setTransaccionArmaBodegaController( TransaccionArmaBodegaController transaccionArmaBodegaController) { this.transaccionArmaBodegaController = transaccionArmaBodegaController; } public String getNumeroTransaccionEnvio() { return numeroTransaccionEnvio; } public void setNumeroTransaccionEnvio(String numeroTransaccionEnvio) { this.numeroTransaccionEnvio = numeroTransaccionEnvio; } public String getNumeroTransaccionEnvioConvertido() { return numeroTransaccionEnvioConvertido; } public void setNumeroTransaccionEnvioConvertido( String numeroTransaccionEnvioConvertido) { this.numeroTransaccionEnvioConvertido = numeroTransaccionEnvioConvertido; } public String getFiltroData() { return filtroData; } public void setFiltroData(String filtroData) { this.filtroData = filtroData; } public AlfrescoController getAlfrescoController() { return alfrescoController; } public void setAlfrescoController(AlfrescoController alfrescoController) { this.alfrescoController = alfrescoController; } public String getXpathflujo() { return xpathflujo; } public void setXpathflujo(String xpathflujo) { this.xpathflujo = xpathflujo; } public String getNumeroTransaccion() { return numeroTransaccion; } public void setNumeroTransaccion(String numeroTransaccion) { this.numeroTransaccion = numeroTransaccion; } public Boolean getBtnFlujo() { return btnFlujo; } public void setBtnFlujo(Boolean btnFlujo) { this.btnFlujo = btnFlujo; } public Boolean getBtnGrabar() { return btnGrabar; } public void setBtnGrabar(Boolean btnGrabar) { this.btnGrabar = btnGrabar; } public BodegaController getBodegaController() { return bodegaController; } public void setBodegaController(BodegaController bodegaController) { this.bodegaController = bodegaController; } public String getInstitucionUnidadControl() { return institucionUnidadControl; } public void setInstitucionUnidadControl(String institucionUnidadControl) { this.institucionUnidadControl = institucionUnidadControl; } public String getNumeroSerie() { return numeroSerie; } public void setNumeroSerie(String numeroSerie) { this.numeroSerie = numeroSerie; } public String getNumeroDecomiso() { return numeroDecomiso; } public void setNumeroDecomiso(String numeroDecomiso) { this.numeroDecomiso = numeroDecomiso; } public String getCentroControlDestino() { return centroControlDestino; } public void setCentroControlDestino(String centroControlDestino) { this.centroControlDestino = centroControlDestino; } public String getUnidadDestino() { return unidadDestino; } public void setUnidadDestino(String unidadDestino) { this.unidadDestino = unidadDestino; } public List getCentroControlsDestinos() { return centroControlsDestinos; } public void setCentroControlsDestinos(List centroControlsDestinos) { this.centroControlsDestinos = centroControlsDestinos; } public List getUnidadesDestinos() { return unidadesDestinos; } public void setUnidadesDestinos(List unidadesDestinos) { this.unidadesDestinos = unidadesDestinos; } public Boolean getBtnGenerarActa() { return btnGenerarActa; } public void setBtnGenerarActa(Boolean btnGenerarActa) { this.btnGenerarActa = btnGenerarActa; } public String getCodigoOrganismoControlDestino() { return codigoOrganismoControlDestino; } public void setCodigoOrganismoControlDestino( String codigoOrganismoControlDestino) { this.codigoOrganismoControlDestino = codigoOrganismoControlDestino; } public String getCodigoUnidadControlDestino() { return codigoUnidadControlDestino; } public void setCodigoUnidadControlDestino(String codigoUnidadControlDestino) { this.codigoUnidadControlDestino = codigoUnidadControlDestino; } /** * @return the centroControlActual */ public String getCentroControlActual() { return centroControlActual; } /** * @param centroControlActual the centroControlActual to set */ public void setCentroControlActual(String centroControlActual) { this.centroControlActual = centroControlActual; } /** * @return the unidadActual */ public String getUnidadActual() { return unidadActual; } /** * @param unidadActual the unidadActual to set */ public void setUnidadActual(String unidadActual) { this.unidadActual = unidadActual; } public boolean isBtnSelTodos() { return btnSelTodos; } public void setBtnSelTodos(boolean btnSelTodos) { this.btnSelTodos = btnSelTodos; } /** * @return the numeroTransaccionRecepcion */ public String getNumeroTransaccionRecepcion() { return numeroTransaccionRecepcion; } /** * @param numeroTransaccionRecepcion the numeroTransaccionRecepcion to set */ public void setNumeroTransaccionRecepcion(String numeroTransaccionRecepcion) { this.numeroTransaccionRecepcion = numeroTransaccionRecepcion; } /** * @return the btnTabGrid */ public Boolean getBtnTabGrid() { return btnTabGrid; } /** * @param btnTabGrid the btnTabGrid to set */ public void setBtnTabGrid(Boolean btnTabGrid) { this.btnTabGrid = btnTabGrid; } /** * @return the btnFiltros */ public boolean isBtnFiltros() { return btnFiltros; } /** * @param btnFiltros the btnFiltros to set */ public void setBtnFiltros(boolean btnFiltros) { this.btnFiltros = btnFiltros; } public Boolean getIsCentroDpto() { return isCentroDpto; } public void setIsCentroDpto(Boolean isCentroDpto) { this.isCentroDpto = isCentroDpto; } }