maia_modificado/.svn/pristine/b5/b5f73952b467dcf149f42fe91a0...

697 lines
24 KiB
Plaintext
Executable File

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<AbstractDataTransport> {
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<TgeneCatalogDetail> lGrados=new ArrayList<TgeneCatalogDetail>();
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<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
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<String, DtoSave> msave = new HashMap<String, DtoSave>();
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<String, Object> 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);
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<String, Object> 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<TgeneCatalogDetail> getlGrados() {
return lGrados;
}
public void setlGrados(List<TgeneCatalogDetail> 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;
}
}