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.ViewScoped; 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.funcionalidad.RegistroArmController; import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; import com.fp.frontend.controller.pcustomer.PersonDetailController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.persistence.parmas.fun.TarmRegistroArmas; import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmDecomisoArma; @SuppressWarnings("serial") @ManagedBean @ViewScoped public class DecomisoArmaController extends AbstractController { public DecomisoArmaController() throws Exception { super(TarmDecomisoArma.class); // TODO Auto-generated constructor stub } @PostConstruct private void postconstruct() { this.init(); // Inicializa autoconsulta super.startQuery(); } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { recperpage = 10; // 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"); 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")); 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():""); TarmRegistroArmas registroArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); if(registroArma!=null && registroArma.getPersoncode()!=null){ Integer personCodePropietario = registroArma.getPersoncode(); decomisoArma.getModifiedData().put("npropietario", PersonDetailController.find(personCodePropietario.toString()).getName()); } else{ decomisoArma.getModifiedData().put("npropietario", ""); } } } 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); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void save() { try { 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. request.setSaveTables(msave); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void postCommit(Response response) throws Exception { super.postCommitGeneric(response, beanalias); } public static TarmDecomisoArma findByCodigo(String cDecomisoArma) { try { DecomisoArmaController cc = new DecomisoArmaController(); 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 { DecomisoArmaController cc = new DecomisoArmaController(); 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 { DecomisoArmaController cc = new DecomisoArmaController(); 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; update(); } public static List find(Long codigoenvio) { try { DecomisoArmaController cc = new DecomisoArmaController(); 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 findArmasPorSancionar(Long codigoenvio) { try { DecomisoArmaController cc = new DecomisoArmaController(); cc. init(); cc.recperpage = 300; cc.addFilter("cdecarmtranrecepcion", codigoenvio.toString()); cc.addFilter("estado", "RECL"); 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 { DecomisoArmaController cc = new DecomisoArmaController(); 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; } }