package com.fp.frontend.controller.armas.solicitud; 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.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import org.primefaces.context.RequestContext; import org.apache.taglibs.standard.tag.common.fmt.BundleSupport; import com.fp.dto.AbstractDataTransport; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.ReportController; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.pcustomer.PersonAddressController; import com.fp.frontend.controller.pcustomer.PersonDetailController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.param.TarmTramite; import com.fp.persistence.parmas.soli.TarmOrdenTrabajo; import com.fp.persistence.parmas.soli.TarmOrdenTrabajoCustodios; import com.fp.persistence.parmas.soli.TarmSolicitud; import com.fp.persistence.parmas.soli.TarmSolicitudTramite; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; @SuppressWarnings("serial") @ManagedBean @ViewScoped public class GenerarOrdenTrabajoCustodiosController extends AbstractController { private static final long serialVersionUID = 1L; private Date fechaHoy; private Date inicio; private Date fin; private java.sql.Date fechaInicio; private java.sql.Date fechaFin; private TarmSolicitud solicitud=new TarmSolicitud(); private TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); private TarmTramite tramite=new TarmTramite(); private String usoActividad; private Long numeroOrden; private String documentoReferencia; private String empresa; private String lugarDireccion; private String ruta; private String tiempoEstimado; private String observaciones; private Boolean aceptarHabilitado=true; TcustPersonDetail detallesPersona=new TcustPersonDetail(); //Grados List lGrados=new ArrayList(); TcustPersonDetail usuario; TcustPersonDetail jefeCentroControl; TarmCentroControl centroControl; String nombreInstitucion=""; String gradoFuncionario=""; private String csolicitud; private Boolean btnEnviar; @ManagedProperty(value = "#{ordenTrabajoController}") private OrdenTrabajoController ordenTrabajoController; @ManagedProperty(value = "#{custodiosController}") private CustodiosController custodiosController; @ManagedProperty(value = "#{reportController}") private ReportController reportController; public GenerarOrdenTrabajoCustodiosController() throws Exception { super(AbstractDataTransport.class); } @PostConstruct private void postconstruct() { startQuery(); this.init(); // Inicializa autoconsulta // super.startQuery(); } public void startQuery() { try { this.pasteBpmScreenParameters(); csolicitud=super.getMfilters().get("csolicitud"); 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 { fechaHoy=Calendar.getInstance().getTime(); this.ordenTrabajoController.create(); this.custodiosController.create(); this.lrecord = new ArrayList<>(); this.beanalias="GENERARORDENCUSTODIOSCONTROLLER"; //ordenTrabajoController.setRecord(new TarmOrdenTrabajo()); //Obteniendo los datos del usuario logueado TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); btnEnviar=Boolean.FALSE; querydatabase(); } 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(); } @Override public void query() throws Exception { // TODO Auto-generated method stub MessageHelper.setMessageError("msg_notQuery"); super.query(); } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { //Obteniendo la solicitud solicitud= ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(csolicitud); if(solicitud!=null && solicitud.getPk()!=null){ //Datos de la persona detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); this.ordenTrabajoController.getRecord().setCsolicitud(solicitud.getPk()); this.ordenTrabajoController.getRecord().setFsolicitud(solicitud.getFregistro()); solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); if(tramite!=null && tramite.getPk()!=null){ this.ordenTrabajoController.getRecord().setCtramite(tramite.getPk()); //Uso actividad TgeneCatalogDetail catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); if(catalogDetailTramite!=null && tramite.getUsoactividad()!=null && tramite.getUsoactividadcodigo()!=null){ usoActividad=catalogDetailTramite.getDescription(); } } } //Obteniendo el centro de control centroControl=CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); if(centroControl!=null && centroControl.getNombreinstitucion()!=null && !centroControl.getNombreinstitucion().isEmpty() && centroControl.getNombreinstitucioncodigo()!=null && !centroControl.getNombreinstitucioncodigo().isEmpty()){ TgeneCatalogDetail catalogoInstitucion=CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); this.nombreInstitucion=catalogoInstitucion.getDescription(); } //Obteniendo el jefe del centro de control this.jefeCentroControl=PersonDetailController.find(this.centroControl.getPersoncode().toString()); //Obteniendo el grado del jefe del centro de control TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.jefeCentroControl.getMilitarygrade(), this.jefeCentroControl.getMilitarygradecode()); if(grado!=null){ gradoFuncionario=grado.getDescription()+" - "; } } //Obteniendo la lista de grados militares lGrados=CatalogDetailController.find("GRADOS"); DtoQuery dto = super.getDtoQuery(true); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = callerhelper.getRequest(); request.setQueryTables(mtables); request.put("querytype", "T"); Response resp = callerhelper.executeQuery(request); //Obteniendo el numero de orden this.numeroOrden=Long.parseLong(resp.get("SECUENCIALSOLORDENTRABAJO").toString()); this.ordenTrabajoController.getRecord().setPk(numeroOrden); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { MessageHelper.setMessageError(resp); } else { super.postQuery(lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void save() { try { if(custodiosController.getLrecord().isEmpty()){ MessageHelper.setMessageError("LA ORDEN DE TRABAJO NO TIENE CUSTODIOS ASIGNADOS.", null); }else{ //Asignando los campos a la orden de trabajo this.ordenTrabajoController.getRecord().setDocumentoreferencia(this.solicitudTramite.getNumerotramite()); this.ordenTrabajoController.getRecord().setEmpresasolicita(this.detallesPersona.getName()); this.ordenTrabajoController.getRecord().setDireccioncomision(this.lugarDireccion); this.ordenTrabajoController.getRecord().setRuta(this.ruta); this.ordenTrabajoController.getRecord().setTiempoestimado(this.tiempoEstimado); Calendar c=Calendar.getInstance(); c.setTime(inicio); fechaInicio=new java.sql.Date(c.getTimeInMillis()); this.ordenTrabajoController.getRecord().setFinicio(this.fechaInicio); c=Calendar.getInstance(); c.setTime(fin); fechaFin=new java.sql.Date(c.getTimeInMillis()); this.ordenTrabajoController.getRecord().setFfinalizacion(this.fechaFin); this.ordenTrabajoController.getRecord().setObservaciones(this.observaciones); this.ordenTrabajoController.update(); this.ordenTrabajoController.getLrecord().add(this.ordenTrabajoController.getRecord()); this.ordenTrabajoController.update(this.ordenTrabajoController.getLrecord().get(0)); this.custodiosController.setSalva(true); for (TarmOrdenTrabajoCustodios custodio : this.custodiosController.getLrecord()) { //Asignando el codigo del grado custodio.setCordentrabajo(this.numeroOrden); this.custodiosController.update(custodio); } Request request = callerhelper.getRequest(); HashMap msave = new HashMap(); DtoSave dtosaveOrdenTrabajo = this.ordenTrabajoController.getDtoSave(true); dtosaveOrdenTrabajo.setPosition(1); msave.put(this.ordenTrabajoController.getBeanalias(), dtosaveOrdenTrabajo); DtoSave dtosaveCustodios = this.custodiosController.getDtoSave(true); dtosaveCustodios.setPosition(2); msave.put(this.custodiosController.getBeanalias(), dtosaveCustodios); request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.aceptarHabilitado=false; this.ordenTrabajoController.postCommit(resp); this.custodiosController.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void postCommit(Response response) throws Exception { this.ordenTrabajoController.postCommit(response); this.custodiosController.postCommit(response); } public void cancelar(){ this.ordenTrabajoController.setRecord(new TarmOrdenTrabajo()); this.custodiosController.getLrecord().clear(); } /** */ @SuppressWarnings("finally") public String grado(String grado, String gradoCodigo){ String descripcionGrado=""; try { TgeneCatalogDetail catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(grado, gradoCodigo); if(catalogDetailTramite!=null && grado!=null && gradoCodigo!=null){ descripcionGrado=catalogDetailTramite.getDescription(); } } catch (Throwable e) { MessageHelper.setMessageError(e); }finally{ return descripcionGrado; } } /** * Ejecuta un reporte de custodios * @param name Nombre del reporte a generar. */ public void generateReport() { String path = "armas/reports/ordenTrabajoCustodios"; String filename=MsgControlArmas.getProperty("lbl_ordenTrabajoCustodios"); //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("codigoOrden", this.numeroOrden.toString()); //Centro de control parameters.put("nombreCentro", this.nombreInstitucion); //Numero de orden de trabajo parameters.put("numeroOrdenTrabajo", this.numeroOrden); //Documento de referencia parameters.put("documentoReferencia", this.solicitudTramite.getNumerotramite()); //Fecha SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); parameters.put("fecha", sdf.format(this.fechaHoy)); //Comision actividad parameters.put("comisionActividad", "Custodia Militar"); //Empresa solicita parameters.put("empresaSolicita", this.detallesPersona.getName()); //Tiempo estimado parameters.put("tiempoEstimado", this.tiempoEstimado); //Fecha inicio parameters.put("fechaInicio", sdf.format(this.inicio)); //Fecha fin parameters.put("fechaFin", sdf.format(this.fin)); //Lugar parameters.put("lugar", this.lugarDireccion); //Ruta parameters.put("ruta", this.ruta); //Funcionario parameters.put("gradoNombreFuncionario",gradoFuncionario+this.jefeCentroControl.getName()); parameters.put("personcode",this.jefeCentroControl.getPk().getPersoncode()); parameters.put("centroControl","JEFE DEL "+this.nombreInstitucion); //Usuario parameters.put("usuario",this.usuario.getName()); sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String fechaHora=sdf.format(Calendar.getInstance().getTime()); parameters.put("fechaHora",fechaHora); parameters.put("codigoQR",csolicitud+" "+ fechaHora+" "+" "+sdf.format(this.fin)+" "+gradoFuncionario+this.jefeCentroControl.getName()); String format = "pdf"; try { this.reportController.execute(path, parameters, format, filename, this.getLoginController()); btnEnviar=Boolean.TRUE; } catch (Exception ex) { MessageHelper.setMessageError(ex); } } public void probarReporte() { try { TarmOrdenTrabajo orden=ordenTrabajoController.find("128"); String path = "armas/reports/ordenTrabajoCustodios"; String filename=MsgControlArmas.getProperty("lbl_ordenTrabajoCustodios"); //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("codigoOrden", "128"); //Centro de control parameters.put("nombreCentro", this.nombreInstitucion); //Numero de orden de trabajo parameters.put("numeroOrdenTrabajo", 128L); //Documento de referencia parameters.put("documentoReferencia", this.solicitudTramite.getNumerotramite()); //Fecha SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); parameters.put("fecha", sdf.format(this.fechaHoy)); //Comision actividad parameters.put("comisionActividad", "Custodia Militar"); //Empresa solicita parameters.put("empresaSolicita", this.detallesPersona.getName()); //Tiempo estimado parameters.put("tiempoEstimado", orden.getTiempoestimado()); //Fecha inicio parameters.put("fechaInicio", sdf.format(orden.getFinicio())); //Fecha fin parameters.put("fechaFin", sdf.format(orden.getFfinalizacion())); //Lugar parameters.put("lugar", orden.getDireccioncomision()); //Ruta parameters.put("ruta", orden.getRuta()); //Funcionario parameters.put("gradoNombreFuncionario",gradoFuncionario+this.jefeCentroControl.getName()); parameters.put("personcode",this.jefeCentroControl.getPk().getPersoncode()); parameters.put("centroControl","JEFE DEL "+this.nombreInstitucion); //Usuario parameters.put("usuario",this.usuario.getName()); sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String fechaHora=sdf.format(Calendar.getInstance().getTime()); parameters.put("fechaHora",fechaHora); String format = "pdf"; this.reportController.execute(path, parameters, format, filename, this.getLoginController()); } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Metodo para finalizar la tarea del flujo */ public void completarTarea() { try { if(!btnEnviar){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_avanzar_flujo")); return; } Request request = callerhelper.getRequest(); // limpiar request para finalizar la tarea. super.cleanRequest(request); request.modifiedData().put("csolicitud", csolicitud); 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); btnEnviar=Boolean.FALSE; RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public OrdenTrabajoController getOrdenTrabajoController() { return ordenTrabajoController; } public void setOrdenTrabajoController( OrdenTrabajoController ordenTrabajoController) { this.ordenTrabajoController = ordenTrabajoController; } public CustodiosController getCustodiosController() { return custodiosController; } public void setCustodiosController(CustodiosController custodiosController) { this.custodiosController = custodiosController; } public Date getFechaHoy() { return fechaHoy; } public void setFechaHoy(Date fechaHoy) { this.fechaHoy = fechaHoy; } public Date getFechaInicio() { return fechaInicio; } public void setFechaInicio(java.sql.Date fechaInicio) { this.fechaInicio = fechaInicio; } public Date getFechaFin() { return fechaFin; } public void setFechaFin(java.sql.Date fechaFin) { this.fechaFin = fechaFin; } public TarmSolicitud getSolicitud() { return solicitud; } public void setSolicitud(TarmSolicitud solicitud) { this.solicitud = solicitud; } public TarmSolicitudTramite getSolicitudTramite() { return solicitudTramite; } public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { this.solicitudTramite = solicitudTramite; } public TarmTramite getTramite() { return tramite; } public void setTramite(TarmTramite tramite) { this.tramite = tramite; } public String getUsoActividad() { return usoActividad; } public void setUsoActividad(String usoActividad) { this.usoActividad = usoActividad; } public List getlGrados() { return lGrados; } public void setlGrados(List lGrados) { this.lGrados = lGrados; } public Long getNumeroOrden() { return numeroOrden; } public void setNumeroOrden(Long numeroOrden) { this.numeroOrden = numeroOrden; } public String getDocumentoReferencia() { return documentoReferencia; } public void setDocumentoReferencia(String documentoReferencia) { this.documentoReferencia = documentoReferencia; } public String getEmpresa() { return empresa; } public void setEmpresa(String empresa) { this.empresa = empresa; } public String getLugarDireccion() { return lugarDireccion; } public void setLugarDireccion(String lugarDireccion) { this.lugarDireccion = lugarDireccion; } public String getRuta() { return ruta; } public void setRuta(String ruta) { this.ruta = ruta; } public String getObservaciones() { return observaciones; } public void setObservaciones(String observaciones) { this.observaciones = observaciones; } public String getTiempoEstimado() { return tiempoEstimado; } public void setTiempoEstimado(String tiempoEstimado) { this.tiempoEstimado = tiempoEstimado; } public Date getInicio() { return inicio; } public void setInicio(Date inicio) { this.inicio = inicio; } public Date getFin() { return fin; } public void setFin(Date fin) { this.fin = fin; } public Boolean getAceptarHabilitado() { return aceptarHabilitado; } public void setAceptarHabilitado(Boolean aceptarHabilitado) { this.aceptarHabilitado = aceptarHabilitado; } public TcustPersonDetail getDetallesPersona() { return detallesPersona; } public void setDetallesPersona(TcustPersonDetail detallesPersona) { this.detallesPersona = detallesPersona; } public ReportController getReportController() { return reportController; } public void setReportController(ReportController reportController) { this.reportController = reportController; } public Boolean getBtnEnviar() { return btnEnviar; } public void setBtnEnviar(Boolean btnEnviar) { this.btnEnviar = btnEnviar; } }