package com.fp.frontend.controller.armas.solicitud; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.annotation.PostConstruct; 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 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.armas.parametros.TiposArmasExplosivosController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmDecomiso; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Controlar que permite el cambio de estado de los decomisosArma y tarmArma a RECL * @author Manuel Cepeda * */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class ReclamoDecomisoController extends AbstractController { private String personCode; @ManagedProperty(value="#{armasController}") private ArmasController armasController; public ReclamoDecomisoController() throws Exception { super(TarmDecomisoArma.class); // TODO Auto-generated constructor stub } @PostConstruct private void postconstruct() { TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); personCode = tsafeUserDetail.getPk().getPersoncode().toString(); this.init(); // Inicializa autoconsulta super.startQuery(); } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { recperpage = 10000; // Cambiar al # reg a mirar. lrecord = new ArrayList<>(); beanalias = "TARMDECOMISOARMA"; } catch (Exception 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(); } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { DtoQuery dto = super.getDtoQuery(true); dto.setOrderby("t.pk"); Filter decomisoFiltro= new Filter(); decomisoFiltro.setSql("t.estado = 'DEC' and t.carma in (select arm.pk from TarmArmas arm, TarmRegistroArmas regarm where arm.cregistro = regarm.pk and arm.estado = 'DEC' and regarm.personcode = " + personCode + ")"); dto.addFiltro(decomisoFiltro); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { lrecord = (List) resp.get(beanalias); for(TarmDecomisoArma decomisoArma:lrecord){ TarmArmas arma = ArmasController.findPorCodigo(decomisoArma.getCarma()); if(arma!=null){ TarmTipoArmaExplosivo tipoArmaExplosivo = TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); decomisoArma.getModifiedData().put("ntipo", arma.getModifiedData().get("tipo")); decomisoArma.getModifiedData().put("ncalibre", arma.getModifiedData().get("calibre")); decomisoArma.getModifiedData().put("nclase", arma.getModifiedData().get("clase")); decomisoArma.getModifiedData().put("ncantidad", arma.getCantidad()); decomisoArma.getModifiedData().put("nestado", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getEstado(), decomisoArma.getEstadocode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getEstado(), decomisoArma.getEstadocode()).getDescription():""); if(tipoArmaExplosivo.getLongitud()!=null){ decomisoArma.getModifiedData().put("nlongitud", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo()).getDescription():""); } else{ decomisoArma.getModifiedData().put("nlongitud", ""); } decomisoArma.getModifiedData().put("nmarca", CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo()).getDescription():""); decomisoArma.getModifiedData().put("nserie", arma.getSeriecanon()); decomisoArma.getModifiedData().put("nlote", arma.getLote()); decomisoArma.getModifiedData().put("nunidad", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode()).getDescription():""); decomisoArma.getModifiedData().put("nmotivodecomiso", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo()).getDescription():""); TarmDecomiso decomiso = DecomisoController.findByCodigo(decomisoArma.getCdecomiso().toString()); if(decomiso!=null && decomiso.getPersoncode()!=null){ decomisoArma.getModifiedData().put("nrodecomiso", decomiso.getNumerotransaccion()); } else{ decomisoArma.getModifiedData().put("nrodecomiso", ""); } decomisoArma.getModifiedData().put("seleccionado", false); } } super.postQuery(lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } // @SuppressWarnings("unchecked") // protected void consulta() { // try { // DtoQuery dto = super.getDtoQuery(true); // dto.setOrderby("t.pk"); // Filter filtro=new Filter(); // filtro.setSql("t.fdecomiso=(select max(te.fdecomiso) from TarmDecomisoArma te where te.ccustemp=t.ccustemp)"); // dto.addFiltro(filtro); // HashMap mtables = new HashMap(); // mtables.put(beanalias, dto); // permite adicionar mas de una tabla. // // Request request = callerhelper.getRequest(); // request.setQueryTables(mtables); // Response resp = callerhelper.executeQuery(request); // if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { // lrecord = new ArrayList(); // MessageHelper.setMessageError(resp); // } else { // lrecord = (List) resp.get(beanalias); // super.postQuery(lrecord); // querydatabase(); // } // // } catch (Throwable e) { // MessageHelper.setMessageError(e); // } // } // @Override public void save() { try { for(TarmDecomisoArma tarmDecomisoArma : lrecord){ if(tarmDecomisoArma.getModifiedData().get("seleccionado")!=null && tarmDecomisoArma.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ TarmArmas arma = ArmasController.findPorCodigo(tarmDecomisoArma.getCarma()); arma.setEstado("RECL"); armasController.update(arma); tarmDecomisoArma.setEstado("RECL"); update(tarmDecomisoArma); } } Request request = this.callerhelper.getRequest(); DtoSave dtosave = super.getDtoSave(); if(!dtosave.pendingProcess()){ return; } HashMap msave = new HashMap(); msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. DtoSave dtosaveArma = this.armasController.getDtoSave(); dtosaveArma.setReturnpk(true); dtosaveArma.setPosition(1); msave.put( this.armasController.getBeanalias(), dtosaveArma); request.setSaveTables(msave); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); querydatabase(); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void postCommit(Response response) throws Exception { super.postCommitGeneric(response, beanalias); } /** * 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; } for (TarmDecomisoArma tarmDecomisoArma : this.lrecord) { tarmDecomisoArma.getModifiedData().put("seleccionado", valorColocar); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } // public static TarmDecomisoArma findByCodigo(String cDecomisoArma) { // try { // ReclamoDecomisoController cc = new ReclamoDecomisoController(); // cc. init(); // cc.recperpage = 300; // cc.addFilter("pk", cDecomisoArma); // cc.querydatabase(); // if (cc.lrecord != null) { // return cc.lrecord.get(0); // } // return null; // } catch (Throwable e) { // MessageHelper.setMessageError(e); // return null; // } // } // // public static List findByCodigoDecomiso(String cDecomiso) { // try { // ReclamoDecomisoController cc = new ReclamoDecomisoController(); // cc. init(); // cc.recperpage = 300; // cc.addFilter("cdecomiso", cDecomiso); // cc.querydatabase(); // if (cc.lrecord != null) { // return cc.lrecord; // } // return null; // } catch (Throwable e) { // MessageHelper.setMessageError(e); // return null; // } // } // // public static TarmDecomisoArma findxCodigoCustTemporal(String ccustemp,String estado) { // try { // ReclamoDecomisoController cc = new ReclamoDecomisoController(); // cc. init(); // cc.recperpage = 300; // cc.addFilter("ccustemp", ccustemp); // cc.addFilter("estado", estado); // cc.consulta(); // if (cc.lrecord != null && cc.lrecord.size()>0) { // return cc.lrecord.get(0); // } // return null; // } catch (Throwable e) { // MessageHelper.setMessageError(e); // return null; // } // } public void update(TarmDecomisoArma bean) throws Exception { record=bean; super.update(); } // // public static List find(Long codigoenvio) { // try { // ReclamoDecomisoController cc = new ReclamoDecomisoController(); // cc. init(); // cc.recperpage = 300; // cc.addFilter("cdecarmtranrecepcion", codigoenvio.toString()); // cc.querydatabaseSimple(); // if (cc.lrecord != null) { // return cc.lrecord; // } // return null; // } catch (Throwable e) { // MessageHelper.setMessageError(e); // return null; // } // } // // public static List findEnvio(Long codigoenvio) { // try { // ReclamoDecomisoController cc = new ReclamoDecomisoController(); // cc. init(); // cc.recperpage = 300; // cc.addFilter("cdecomisoarmatransaccion", codigoenvio.toString()); // cc.querydatabaseSimple(); // if (cc.lrecord != null) { // return cc.lrecord; // } // return null; // } catch (Throwable e) { // MessageHelper.setMessageError(e); // return null; // } // } // @SuppressWarnings("unchecked") // protected void querydatabaseSimple() { // try { // DtoQuery dto = this.getDtoQuery(); // dto.setOrderby("t.pk"); // // HashMap mtables = new HashMap(); // mtables.put(beanalias, dto); // permite adicionar mas de una tabla. // // Request request = callerhelper.getRequest(); // request.setQueryTables(mtables); // // Response resp = callerhelper.executeQuery(request); // // if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { // lrecord = new ArrayList(); // MessageHelper.setMessageError(resp); // } else { // lrecord = (List) resp.get(beanalias); // super.postQuery(lrecord); // } // // } catch (Throwable e) { // MessageHelper.setMessageError(e); // } // } private DtoQuery getDtoQuery() throws Exception{ DtoQuery dto = super.getDtoQuery(true); 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 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 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 subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ncalibre","i.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)"); dto.addSubQuery(subqueryCalibre); 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); SubQuery subqueryIndentificacion= new SubQuery("TcustPersonDetail","identification","identification","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 subqueryRazonSocial= new SubQuery("TcustPersonDetail","name","nrazons","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); return dto; } /** * @return the armasController */ public ArmasController getArmasController() { return armasController; } /** * @param armasController the armasController to set */ public void setArmasController(ArmasController armasController) { this.armasController = armasController; } }