maia_modificado/.svn/pristine/50/5067032065ee8a81ba84ec2cc76...

409 lines
17 KiB
Plaintext
Executable File
Raw Blame History

package com.fp.frontend.controller.armas.funcionalidad;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
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.solicitud.DocumentoHabilitanteController;
import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController;
import com.fp.frontend.controller.armas.solicitud.TarmSolicitudArmasController;
import com.fp.frontend.controller.armas.solicitud.TarmSolicitudTramiteController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.persistence.parmas.eval.TarmDetallePreguntas;
import com.fp.persistence.parmas.fun.TarmRegistroArmas;
import com.fp.persistence.parmas.ins.TarmPlanificacionTramite;
import com.fp.persistence.parmas.soli.TarmArmas;
import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante;
import com.fp.persistence.parmas.soli.TarmSolicitudArmas;
import com.fp.persistence.parmas.soli.TarmSolicitudTramite;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class DesaduanizacionOldController extends AbstractController<TarmArmas> {
private static final long serialVersionUID = 1L;
@ManagedProperty(value = "#{solicitudTramiteController}")
private SolicitudTramiteController tarmSolicitudTramiteController;
private Date fechaDesaduanizacion;
private List<TarmSolicitudTramite> tramites;
//private TarmTramite tramiteSeleccionado;
private String noSolicitud;
//private List<TarmArmas> larmas=new ArrayList<TarmArmas>();
private Boolean salvarDeshabilitado=false;
private TsafeUserDetail tsafeUserDetailUsuario = null;
/*@ManagedProperty(value = "#{tarmSolicitudArmasController}")
private TarmSolicitudArmasController tarmSolicitudArmasController;*/
public DesaduanizacionOldController() throws Exception {
super(TarmArmas.class);
}
/**
* Metodo invocado despues de instanciar el controlador
*/
@PostConstruct
private void postconstruct() {
this.init();
// Inicializa autoconsulta
// super.startQuery();
}
/**
* Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador.
*/
private void init() {
try {
this.recperpage = 15; // Cambiar al # reg a mirar.
// this.lrecord = new ArrayList<>();
// this.record=new TarmArmas();
this.beanalias = "DESADUANIZACION";
// this.create();
//Fecha de desaduanizacion
this.fechaDesaduanizacion=Calendar.getInstance().getTime();
//Cargando los tramites
caragarTramiteSolicitud();
this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
this.salvarDeshabilitado = true;
tarmSolicitudTramiteController.create();
} catch (Exception e) {
MessageHelper.setMessageError(e);
}
}
public void caragarTramiteSolicitud(){
this.tramites=TarmSolicitudTramiteController.findTramites();
}
/**
* 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);
SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and "
+ " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)");
dto.addSubQuery(subqueryTipo);
SubQuery subqueryCalibreD= new SubQuery("TgeneCatalogDetail","description","calibreD","i.pk.catalog= (select o.calibre from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and "
+ " i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)");
dto.addSubQuery(subqueryCalibreD);
SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and "
+ " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)");
dto.addSubQuery(subqueryTipoArmaExplosivo);
SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and "
+ " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)");
dto.addSubQuery(subqueryClasecatalogo);
return dto;
}
@SuppressWarnings("unchecked")
@Override
public void querydatabase() {
try {
DtoQuery dto = this.getDtoQuery();
Filter filtro = new Filter();
if(this.getMfilelds().get("cregistro") != null){
filtro.setSql(this.getMfilelds().get("cregistro").toString() +" and t.estado = 'IMPO' and t.lote is null "
+ " and t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)"
+ " and t.pk in (select tar.codigoarma from TarmArmas tar where tar.pk in( select ar.pk.carma from TarmSolicitudArmas ar where ar.pk.csolicitud= '"+this.noSolicitud+"'))"
+ " and (t.peso>0 or t.cantidad>0)");
dto.addFiltro(filtro);
}
HashMap<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
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) {
this.lrecord = new ArrayList<TarmArmas>();
MessageHelper.setMessageError(resp);
} else {
this.lrecord = (List<TarmArmas>) resp.get(this.beanalias);
super.postQuery(this.lrecord);
// for(int i = 0; i<lrecord.size(); i++){
// TarmArmas arm = lrecord.get(i);
// arm.setLote("L"+i);
// }
}
// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) {
// lrecord = new ArrayList<TarmArmas>();
// MessageHelper.setMessageError(resp);
// } else {
// lrecord = (List<TarmArmas>) resp.get(beanalias);
// if(!lrecord.isEmpty()){
// record=lrecord.get(0);
// }
// super.postQuery(lrecord);
// Collections.sort(lrecord,new Comparator<TarmArmas>(){
// public int compare(TarmArmas f1, TarmArmas f2)
// {
// return f1.getModifiedData().get("tipo").toString().compareTo(f1.getModifiedData().get("tipo").toString());
// }
// });
// }
} catch (Throwable e) {
MessageHelper.setMessageError(e);
}
}
public boolean validarSerieDuplicadas(){
Set<String> lista= new HashSet<String>();
for(TarmArmas ar:this.lrecord){
lista.add(ar.getLote());
}
if(this.lrecord.size()>lista.size()){
return true;
}
return false;
}
@Override
public void save() {
try {
for(TarmArmas armas:this.lrecord){
this.record = armas;
this.record.setEstado("REG");
Calendar calendario=Calendar.getInstance();
calendario.setTime(this.fechaDesaduanizacion);
this.record.setFdesaduanizacion(new java.sql.Date(calendario.getTimeInMillis()));
if(this.record.getLote() != null){
if(this.validarSerieDuplicadas()){
MessageHelper.setMessageError("LOS ART<52>CULOS NO PUEDEN TENER SERIES IGUALES");
return;
}
update();
}else {
StringBuilder err=new StringBuilder("EL CAMPO SERIE NO PUEDE ESTAR VAC<41>O");
//err.append(this.record.getPk());
MessageHelper.setMessageError(err.toString());
return;
}
}
HashMap<String, DtoSave> msave = new HashMap<String, DtoSave>();
Request request = callerhelper.getRequest();
DtoSave dtosave = super.getDtoSave();
dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos.
msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla.
for(TarmSolicitudTramite tramite:tramites){
if(this.noSolicitud.equals(tramite.getPk().getCsolicitud())){
tarmSolicitudTramiteController.setRecord(tramite);
break;
}
}
// tarmSolicitudTramiteController.getRecord().setEstadotramite("FIN");
// tarmSolicitudTramiteController.update();
// DtoSave dtosaveTramite = tarmSolicitudTramiteController.getDtoSave();
// msave.put(tarmSolicitudTramiteController.getBeanalias(), dtosaveTramite); // adicionar metadata de mantenimiento para cada tabla.
request.getModifiedData().put("noSolicitud", noSolicitud);
request.setSaveTables(msave);
Response resp = callerhelper.executeSave(request);
if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
this.postCommit(resp);
// tarmSolicitudTramiteController.postCommit(resp);
MessageHelper.setMessageInfo(resp);
this.salvarDeshabilitado=true;
caragarTramiteSolicitud();
this.query();
} else {
MessageHelper.setMessageError(resp);
}
} catch (Throwable e) {
MessageHelper.setMessageError(e);
}
}
/**
* Obtiene un arma por su codigo
* @param codigopersona
* @return
*/
public static TarmArmas findByCode(String carma) {
try {
DesaduanizacionOldController cc = new DesaduanizacionOldController();
cc.init();
cc.recperpage = 300000;
cc.addFilter("pk", carma);
cc.querydatabase();
if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) {
return cc.lrecord.get(0);
}
return null;
} catch (Throwable e) {
MessageHelper.setMessageError(e);
return null;
}
}
public Date getFechaDesaduanizacion() {
return fechaDesaduanizacion;
}
public void setFechaDesaduanizacion(Date fechaDesaduanizacion) {
this.fechaDesaduanizacion = fechaDesaduanizacion;
}
public void setDatos(final AjaxBehaviorEvent event){
try {
TarmSolicitudTramite soltra = TarmSolicitudTramiteController.findPorCSolicitud(this.noSolicitud);
this.record=new TarmArmas();
this.record.modifiedData().put("tipotramitedesc", soltra.modifiedData().get("tipotramitedesc"));
this.record.modifiedData().put("categoriadesc", soltra.modifiedData().get("categoriadesc"));
this.record.modifiedData().put("usodesc", soltra.modifiedData().get("usodesc"));
this.record.modifiedData().put("cedula", soltra.modifiedData().get("cedula"));
this.record.modifiedData().put("nombre", soltra.modifiedData().get("nombre"));
this.record.modifiedData().put("personcode", soltra.modifiedData().get("personcode"));
TarmDocumentoHabilitante dochab = DocumentoHabilitanteController.findPorSolicitud(this.noSolicitud);
if(dochab != null){
this.record.modifiedData().put("fechaemision", dochab.getFechaemision());
}
//cregistro propietario
// List<TarmRegistroArmas> regArmas = RegistroArmController.findxPersoncode(soltra.modifiedData().get("personcode").toString());
// StringBuilder sql = new StringBuilder("cregistro in");
// Integer aux=0;
// for(TarmRegistroArmas t :regArmas){
// if(aux==0){
// sql.append("("+t.getPk());
// aux++;
// }else{
// sql.append(","+t.getPk());
// }
// }
// sql.append(")");
//armas codigoarma que debe filtar
String sql = "cregistro in (Select r.pk from TarmRegistroArmas r where personcode="+soltra.modifiedData().get("personcode").toString()+")";
addField("cregistro", sql);
this.salvarDeshabilitado = true;
} catch (Exception e) {
// TODO: handle exception
}
}
public void habilitaGrabar(final AjaxBehaviorEvent event){
Integer aux=0;
for(TarmArmas armas:this.lrecord){
if(!this.lrecord.isEmpty() && armas.getLote() != null){
aux++;
}
}
if(aux.compareTo(this.lrecord.size()) == 0){
this.salvarDeshabilitado = false;
}
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public List<TarmSolicitudTramite> getTramites() {
return tramites;
}
public void setTramites(List<TarmSolicitudTramite> tramites) {
this.tramites = tramites;
}
public String getNoSolicitud() {
return noSolicitud;
}
public void setNoSolicitud(String noSolicitud) {
this.noSolicitud = noSolicitud;
}
public Boolean getSalvarDeshabilitado() {
return salvarDeshabilitado;
}
public void setSalvarDeshabilitado(Boolean salvarDeshabilitado) {
this.salvarDeshabilitado = salvarDeshabilitado;
}
public SolicitudTramiteController getTarmSolicitudTramiteController() {
return tarmSolicitudTramiteController;
}
public void setTarmSolicitudTramiteController(
SolicitudTramiteController tarmSolicitudTramiteController) {
this.tarmSolicitudTramiteController = tarmSolicitudTramiteController;
}
}