/**
   * Método encargado de llenar los datos necesarios para la generación del archivo JasperPrint.
   *
   * @throws Exception Se genera cuando ocurre un error al generar el JasperPrint del reporte.
   */
  public void generarJasperPrint() {
    try {
      cargarInformacion();
      HashMap<String, Object> parametros = new HashMap<String, Object>();
      // pie de pagina
      parametros.put("direccion_empresa", reporteList.get(ReporteConstants.DIRECCION));
      parametros.put("telefonos_empresa", reporteList.get(ReporteConstants.TELEFONOS));
      parametros.put("email_empresa", reporteList.get(ReporteConstants.EMAIL));
      parametros.put("web_empresa", reporteList.get(ReporteConstants.WEB));

      // Datos Generales
      parametros.put("nombre_equipo", newObject.getNombreEquipo());
      parametros.put("marca_equipo", newObject.getMarca());
      parametros.put("modelo_equipo", newObject.getModelo());
      parametros.put("inventario_equipo", newObject.getNumInventario());
      parametros.put("ubicacion_equipo", newObject.getUbicacion());
      parametros.put("fabricante_equipo", newObject.getFabricante());
      parametros.put("representante_equipo", newObject.getRepresentanteCol());
      parametros.put("direccion", newObject.getDireccion());
      parametros.put("telefono", newObject.getTelefono());

      // Informacion Tecnica
      parametros.put("voltaje", infoTecnica.getVoltaje() + " V.");
      parametros.put("potencia", infoTecnica.getPotencia() + " Kw.");
      parametros.put("capacidad_teorica", infoTecnica.getCapacidadTeorica());
      parametros.put("capacidad_practica", infoTecnica.getCapacidadPractica());
      parametros.put("instalaciones", infoTecnica.getInstalaciones());
      parametros.put("frecuencia", infoTecnica.getFrecuencia() + " Hz");
      parametros.put("tecnologia", infoTecnica.getTecnologia());
      parametros.put("insumos", infoTecnica.getInsumos());

      // Propiedad, adquisicion y garantia
      parametros.put("fecha_adquisicion", adquisicionEquipo.getFechaAdquisicion());
      parametros.put("fecha_instalacion", adquisicionEquipo.getFechaInstalacion());
      parametros.put("anios_operacion", adquisicionEquipo.getAniosOperacion());
      parametros.put("propiedad", adquisicionEquipo.getPropiedadEquipo());
      parametros.put("anios_fuera_servicio", adquisicionEquipo.getAniosFueraServicio());
      parametros.put("razon", adquisicionEquipo.getRazon());
      parametros.put("garantia", adquisicionEquipo.getGarantia());
      parametros.put("periodo_garantia", adquisicionEquipo.getPeridoGarantia());
      parametros.put("cubrimiento_garantia", adquisicionEquipo.getCubrimientoGarantia());
      parametros.put("clasificacion_decreto", adquisicionEquipo.getClasificacionDecreto());
      parametros.put("calibracion", adquisicionEquipo.getCalibracionTipo());

      // Planos
      parametros.put(
          "si_instalacion",
          planosEquipo.getInstalacionConfirmar() != null && planosEquipo.getInstalacionConfirmar()
              ? "SI"
              : "NO");
      parametros.put(
          "si_partes",
          planosEquipo.getPartesConfirmar() != null && planosEquipo.getPartesConfirmar()
              ? "SI"
              : "NO");
      parametros.put(
          "si_funcionamiento",
          planosEquipo.getFuncionamientoConfirmar() != null
                  && planosEquipo.getFuncionamientoConfirmar()
              ? "SI"
              : "NO");
      parametros.put("instalacion_ubicacion", planosEquipo.getInstalacionUbicacion());
      parametros.put("partes_ubicacion", planosEquipo.getPartesUbicacion());
      parametros.put("funcionamiento_ubicacion", planosEquipo.getFuncionamientoUbicacion());

      // Manuales
      parametros.put(
          "si_tecnico",
          manualesEquipo.getTecnicoConfirmar() != null && manualesEquipo.getTecnicoConfirmar()
              ? "SI"
              : "NO");
      parametros.put(
          "si_servicio",
          manualesEquipo.getServicioConfirmar() != null && manualesEquipo.getServicioConfirmar()
              ? "SI"
              : "NO");
      parametros.put(
          "si_usuario",
          manualesEquipo.getUsuarioConfirmar() != null && manualesEquipo.getUsuarioConfirmar()
              ? "SI"
              : "NO");
      parametros.put("tecnico_ubicacion", manualesEquipo.getTecnicoUbicacion());
      parametros.put("servicio_ubicacion", manualesEquipo.getServicioUbicacion());
      parametros.put("usuario_ubicacion", manualesEquipo.getUsuarioUbicacion());

      // Recomendaciones
      parametros.put("recomendaciones", recomendacionesEquipo.getDetalle());

      // Estado
      parametros.put("estado", estadoEquipo.getEstadoConfirmar());
      parametros.put("causas_estado", estadoEquipo.getCausa());

      // Funcionamiento
      parametros.put("estado_funcionamiento", funcionamientoEquipo.getFuncionamientoConfirmar());
      parametros.put(
          "fuera_servicio",
          funcionamientoEquipo.getFueraServicio() != null && funcionamientoEquipo.getFueraServicio()
              ? "SI"
              : "NO");
      parametros.put("anios_fuera_servicios", funcionamientoEquipo.getAnioFueraServicio());
      parametros.put("causas_funcionamiento", funcionamientoEquipo.getCausa());

      // Tipo Mantenimiento
      if (tipoManteEquipoPre.getTipoContrato() != null && tipoManteEquipoPre.getTipoContrato()) {
        parametros.put("preventivo_propio", "X");
      } else {
        parametros.put("preventivo_contratado", "X");
      }
      if (tipoManteEquipoCorr.getTipoContrato() != null && tipoManteEquipoCorr.getTipoContrato()) {
        parametros.put("correctivo_propio", "X");
      } else {
        parametros.put("correctivo_contratado", "X");
      }
      parametros.put("preventivo_cual", tipoManteEquipoPre.getCual());
      parametros.put("correctivo_cual", tipoManteEquipoCorr.getCual());

      // Imagen
      if (newObject.getFotoEquipo() != null && newObject.getFotoEquipo().length > 0) {
        InputStream in = new ByteArrayInputStream(newObject.getFotoEquipo());
        parametros.put("imagen", new BufferedInputStream(in));
      }

      // Lista de mantenimiento
      ReporteDTO reportee = new ReporteDTO();
      List<ReporteDTO> listaReporte = new ArrayList<ReporteDTO>();
      List<RegistroActividadesDTO> listaRegistro = new ArrayList<RegistroActividadesDTO>();
      if (mantenimientoEquipo != null && !mantenimientoEquipo.isEmpty()) {
        for (MantenimientoEquipo mantenimiento : mantenimientoEquipo) {
          RegistroActividadesDTO registroActividadesDTO = new RegistroActividadesDTO();
          registroActividadesDTO.setDanio(mantenimiento.getDanioFalla());
          registroActividadesDTO.setFecha(
              FechaUtils.formatearfechaSinHora(mantenimiento.getFecha()));
          if (mantenimiento.getFirmaAprobacion() != null
              && mantenimiento.getFirmaAprobacion().length > 0) {
            InputStream in = new ByteArrayInputStream(mantenimiento.getFirmaAprobacion());
            registroActividadesDTO.setFirmaAprobacion(new BufferedInputStream(in));
          }
          if (mantenimiento.getFirmaAprobacionContrato() != null
              && mantenimiento.getFirmaAprobacionContrato().length > 0) {
            InputStream in = new ByteArrayInputStream(mantenimiento.getFirmaAprobacionContrato());
            registroActividadesDTO.setFirmaContratista(new BufferedInputStream(in));
          }
          if (mantenimiento.getFirmaAprobacionTecnico() != null
              && mantenimiento.getFirmaAprobacionTecnico().length > 0) {
            InputStream in = new ByteArrayInputStream(mantenimiento.getFirmaAprobacionTecnico());
            registroActividadesDTO.setFirmaIngeniero(new BufferedInputStream(in));
          }
          registroActividadesDTO.setNroTransaccion(
              ConvertidorUtils.convertirACadenas(mantenimiento.getIdTransaccion()));
          registroActividadesDTO.setObservaciones(mantenimiento.getObservaciones());
          registroActividadesDTO.setReparacion(mantenimiento.getReparaciones());
          registroActividadesDTO.setRepuesto(mantenimiento.getRepuestos());
          listaRegistro.add(registroActividadesDTO);
        }
      }
      reportee.setListaRegistro(listaRegistro);
      listaReporte.add(reportee);

      JasperPrint jasperPrint =
          JasperFillManager.fillReport(
              obtenerPlantilla(), parametros, new JRBeanCollectionDataSource(listaReporte));

      String nombreReporte =
          FechaUtils.formatearfechaConHoraGuion(Calendar.getInstance().getTime())
              + "_"
              + newObject.getNombreEquipo();

      enviarPDF(jasperPrint, nombreReporte);
      addMessage(FacesMessage.SEVERITY_INFO, "Se genero el informe");
    } catch (Exception e) {
      addMessage(FacesMessage.SEVERITY_ERROR, "Error al generar el informe");
    }
  }