maia_modificado/.svn/pristine/3d/3df34856b36f09a67b1ee8fd3db...

434 lines
17 KiB
Plaintext
Executable File

package com.fp.frontend.controller.armas.solicitud;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
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 javax.faces.event.AjaxBehaviorEvent;
import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox;
import org.primefaces.event.SelectEvent;
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.save.DtoSave;
import com.fp.frontend.controller.AbstractController;
import com.fp.frontend.controller.ReportController;
import com.fp.frontend.controller.alfresco.AlfrescoController;
import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController;
import com.fp.frontend.controller.armas.parametros.CentroControlArmasController;
import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController;
import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController;
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.controller.pgeneral.gene.ParametersController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.frontend.utility.MsgControlArmas;
import com.fp.persistence.parmas.fun.TarmRegistroArmas;
import com.fp.persistence.parmas.param.TarmCentroControl;
import com.fp.persistence.parmas.param.TarmCentroControlJur;
import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo;
import com.fp.persistence.parmas.soli.TarmArmas;
import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas;
import com.fp.persistence.parmas.soli.TarmDecomiso;
import com.fp.persistence.parmas.soli.TarmDecomisoArma;
import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas;
import com.fp.persistence.pcustomer.gene.TcustPersonAddress;
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
/**
* Clase controladora de reporte de liquidacion economica
*
* @author Christian Pazmino.
* @version 2.1
*/
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class ReporteInspeccionesRealizadasController extends AbstractController<TarmDecomisoArma> {
/**
* Fecha a partir de la cual se sacan datos para el reporte
* */
private Date fechaInicio;
/**
* Fecha a partir de la cual se sacan datos para el reporte
* */
private Date fechaFin;
/**
* Formato de reporte que se va a generar
* */
private String format = "pdf";
/**
* Usuario actual logueado en el sistema
* */
private TsafeUserDetail userDetail;
/**
* Nombre del reporte generado en el Alfresco
* */
private String nombreReporte;
/**
* Id del centro de control seleccionado por el usuario
* */
private String idCentroControl;
/**
* Lista de centros de control de armas
*/
private List<TarmCentroControl> centroControlList;
// private List<TgeneCatalogDetail> lTipoReporte=new ArrayList<TgeneCatalogDetail>();
private TsafeUserDetail tsafeUserDetailUsuario = null;
private TarmCentroControl centroControl = new TarmCentroControl();
private TcustPersonDetail responsableCentroControl= null;
/**
* Clase controladora de reportes
*/
@ManagedProperty(value = "#{reportController}")
private ReportController reportController;
public ReporteInspeccionesRealizadasController() 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 {
userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
recperpage = 10000; // Cambiar al # reg a mirar.
lrecord = new ArrayList<TarmDecomisoArma>();
beanalias = "RPRTELIQUIDACIONECONOMICA";
centroControlList = CentroControlArmasController.findEstado("Y");
this.tsafeUserDetailUsuario = new TsafeUserDetail();
this.responsableCentroControl = new TcustPersonDetail();
} catch (Exception e) {
MessageHelper.setMessageError(e);
}
}
// /**
// * Crea una instancia y marca el registro como nuevo.
// *
// * @throws Exception
// */
// @Override
// public void create() throws Exception {
// super.create();
// }
/**
* 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 decomisoArmaObj : lrecord) {
decomisoArmaObj.getModifiedData().put("isSelect", valorColocar);
}
} catch (Throwable e) {
MessageHelper.setMessageError(e);
}
}
@SuppressWarnings("unchecked")
@Override
protected void querydatabase() {
}
/**
* Metodo para reconsultar en base a una nueva fecha de corte seleccionada
*/
public void cambioFechaDeCorte(SelectEvent event){
querydatabase();
}
@Override
public void postCommit(Response response) throws Exception {
super.postCommitGeneric(response, beanalias);
}
/**
* Obtiene el centro de control segun usurio logeado.
* @throws Exception
*
*/
private String obtenerCentroControl() throws Exception {
this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
PersonAddressController personAddressController = new PersonAddressController();
TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString());
if(tcustPersonAddres == null){
return null;
}
TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode());
centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol());
return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription();
}
/**
* Obtiene el responsable del Centro de Control
*/
public void obtenerResponsableCentroControl(){
Integer responsable = this.centroControl.getPersoncode();
this.responsableCentroControl = PersonDetailController.find(responsable.toString());
}
/**
* Genera un reporte de armas a destruir
*
*/
public void generateReport2() {
String filtro = "";
if(this.fechaInicio.getTime() > this.fechaFin.getTime()){
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin"));
return;
}
if(this.fechaInicio.getTime() > new Date().getTime()){
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual"));
return;
}
if(this.fechaFin.getTime() > new Date().getTime()){
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual"));
return;
}
try {
String path = "armas/reports/inspeccionesRealizadas";
String filename="inspeccionesRealizadas";
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto");
parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas");
//usuario
TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
TcustPersonDetail person = PersonDetailController.find(tsafeUserDetailUsuario.getPk().getPersoncode().toString());
parameters.put("usuario", person.getName());
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
parameters.put("fechaInicio", sdf.format(this.fechaInicio));
parameters.put("fechaFin", sdf.format(this.fechaFin));
parameters.put("fechaReporte", sdf.format(new Date()));
if(this.idCentroControl.equals("TODOS")){
parameters.put("filtro", "");
}else {
filtro = " and c.ccentrocontrol = '"+this.idCentroControl+"' ";
parameters.put("filtro", filtro);
}
this.reportController.executeXls(path, parameters, format, filename, this.getLoginController());
} catch (Exception e) {
// TODO: handle exception
}
}
/**
* Genera un reporte de armas a destruir
*
*/
public void generateReport() {
Calendar fechaActualCldr = Calendar.getInstance();
Calendar fechaInicioCldr = Calendar.getInstance();
Calendar fechaFinCldr = Calendar.getInstance();
fechaInicioCldr.setTime(fechaInicio);
fechaFinCldr.setTime(fechaFin);
if(fechaActualCldr.compareTo(fechaInicioCldr)>=0){
if(fechaActualCldr.compareTo(fechaFinCldr)>=0){
if(fechaFinCldr.compareTo(fechaInicioCldr)>=0){
String filename="inspeccionesRealizadas";
// 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");
try {
//Usuario logueado en la aplicacion
String nombreUsuario;
if(userDetail.getPk().getPersoncode()!=null){
nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName();
}
else{
nombreUsuario = "";
}
parameters.put("usuario", nombreUsuario);
parameters.put("fechaInicio", armarFormatoFechaSinHora(fechaInicioCldr));
fechaFinCldr.add(Calendar.DAY_OF_MONTH, 1);
parameters.put("fechaFin", armarFormatoFechaSinHora(fechaFinCldr));
parameters.put("fechaReporte", armarFormatoFechaConHora(fechaActualCldr));
String path;
if(!idCentroControl.equalsIgnoreCase("TODOS")){
path = "armas/reports/inspeccionesRealizadas";
parameters.put("idCentroControl", idCentroControl);
// Datos del CENTRO DE CONTROL
TarmCentroControl centroControlObj = CentroControlArmasController.findPorCodigo(idCentroControl);
String nombreCentroControl = CatalogDetailController.findxCodigoCodcatalogo(centroControlObj.getNombreinstitucion(),centroControlObj.getNombreinstitucioncodigo()).getDescription();
parameters.put("nombreCentroControl", nombreCentroControl);
// Datos del jefe del centro
if(centroControlObj.getPersoncode()!=null){
TcustPersonDetail supervisorMilitarObj = PersonDetailController.find(centroControlObj.getPersoncode().toString());
String gradoSupMilitar = supervisorMilitarObj.getMilitarygrade()==null?"": supervisorMilitarObj.getMilitarygrade() + " - ";
parameters.put("nombreJefCentro", gradoSupMilitar + supervisorMilitarObj.getName()==null?"":supervisorMilitarObj.getName());
parameters.put("personCodeJefCentro", supervisorMilitarObj.getPk().getPersoncode()==null?"1001":supervisorMilitarObj.getPk().getPersoncode());
}
}else{
path = "armas/reports/inspeccionesRealizadas";
filename="inspeccionesRealizadasCCA";
parameters.put("idCentroControl", null);
parameters.put("nombreCentroControl", "TODOS");
parameters.put("nombreJefCentro", "Juan Todos");
parameters.put("personCodeJefCentro", 1001);
}
this.reportController.executeXls(path, parameters, format, filename, this.getLoginController());
} catch (Exception ex) {
MessageHelper.setMessageError(ex);
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin"));
}
}else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual"));
}
}else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual"));
}
}
// parameters.put("fechaCorte", fechaCorteSB.toString());
// parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas());
public StringBuilder armarFormatoFechaSinHora(Calendar fechaCldr){
StringBuilder fechaStr= new StringBuilder();
fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH)));
fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1));
fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR));
return fechaStr;
}
public StringBuilder armarFormatoFechaConHora(Calendar fechaCldr){
StringBuilder fechaStr= new StringBuilder();
fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH)));
fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1));
fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR));
fechaStr = fechaStr.append(" ").append(fechaCldr.get(Calendar.HOUR_OF_DAY));
fechaStr = fechaStr.append(":").append((fechaCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaCldr.get(Calendar.MINUTE)) : (fechaCldr.get(Calendar.MINUTE)));
return fechaStr;
}
/**
* M&eacute;todo para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo
*/
@Override
public void save(){
}
public Date getFechaInicio() {
return fechaInicio;
}
public void setFechaInicio(Date fechaInicio) {
this.fechaInicio = fechaInicio;
}
public Date getFechaFin() {
return fechaFin;
}
public void setFechaFin(Date fechaFin) {
this.fechaFin = fechaFin;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
public TsafeUserDetail getUserDetail() {
return userDetail;
}
public void setUserDetail(TsafeUserDetail userDetail) {
this.userDetail = userDetail;
}
public String getNombreReporte() {
return nombreReporte;
}
public void setNombreReporte(String nombreReporte) {
this.nombreReporte = nombreReporte;
}
public String getIdCentroControl() {
return idCentroControl;
}
public void setIdCentroControl(String idCentroControl) {
this.idCentroControl = idCentroControl;
}
public List<TarmCentroControl> getCentroControlList() {
return centroControlList;
}
public void setCentroControlList(List<TarmCentroControl> centroControlList) {
this.centroControlList = centroControlList;
}
public ReportController getReportController() {
return reportController;
}
public void setReportController(ReportController reportController) {
this.reportController = reportController;
}
}