private void cargarInformacion() {
    newObject = equipoHospitalarioBean.getAllRelations(selectEquipos.get(0).getId());
    mantenimientoEquipo = mantenimientoEquipoBean.getAll(newObject);
    adquisicionEquipo = newObject.getAdquisicionEquipo();
    infoTecnica = newObject.getInfoTecnica();
    estadoEquipo = newObject.getEstadoEquipo();
    funcionamientoEquipo = newObject.getFuncionamientoEquipo();
    planosEquipo = newObject.getPlanosEquipo();
    manualesEquipo = newObject.getManualesEquipo();
    recomendacionesEquipo = newObject.getRecomendacionesEquipo();
    for (TipoManteEquipo element : newObject.getManteEquipo()) {
      if (element.getTipoMantenimiento().equals(TipoMantenimiento.PREVENTIVO)) {
        tipoManteEquipoPre = element;
        // Propio es TRUE
        if (tipoManteEquipoPre.getTipoContrato() == Boolean.TRUE) {
          tipoManteEquipoPre.setValor("Propio");
        } else {
          tipoManteEquipoPre.setValor("Contratado");
        }

      } else {
        tipoManteEquipoCorr = element;
        // Propio es TRUE
        if (tipoManteEquipoCorr.getTipoContrato() == Boolean.TRUE) {
          tipoManteEquipoCorr.setValor("Propio");
        } else {
          tipoManteEquipoCorr.setValor("Contratado");
        }
      }
    }
    if (newObject.getFotoEquipo() != null) {
      nombreFoto = "Ya existe un archivo cargado";
    }
    listaEmpresa = new ArrayList<Empresa>();
    listaEmpresa.add(newObject.getEmpresa());
  }
  /**
   * 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");
    }
  }
  /**
   * Registra un nuevo objeto en Base de datos
   *
   * @return Retorna regla de nevagacion
   * @throws Exception Lanza una excepcion si hay un error en la transacciòn
   */
  public String crear() {
    try {
      if (newObject.getEmpresa() == null) {
        addMessage(FacesMessage.SEVERITY_ERROR, "Debe Seleccionar un Cliente");
        return "";
      }
      if (newObject.getFotoEquipo() == null) {
        addMessage(FacesMessage.SEVERITY_ERROR, "Debe Seleccionar una Foto para el equipo");
        return "";
      } else {

        equipoHospitalarioBean.save(
            recomendacionesEquipo,
            manualesEquipo,
            adquisicionEquipo,
            estadoEquipo,
            infoTecnica,
            funcionamientoEquipo,
            planosEquipo,
            newObject);
        newObject.setRecomendacionesEquipo(recomendacionesEquipo);
        newObject.setManualesEquipo(manualesEquipo);
        newObject.setAdquisicionEquipo(adquisicionEquipo);
        newObject.setEstadoEquipo(estadoEquipo);
        newObject.setInfoTecnica(infoTecnica);
        newObject.setFuncionamientoEquipo(funcionamientoEquipo);
        newObject.setPlanosEquipo(planosEquipo);
        // newObject.setEmpresa(listaEmpresa.get(0));
        equipoHospitalarioBean.update(newObject);

        tipoManteEquipoCorr.setEquipoHospitalario(newObject);
        tipoManteEquipoCorr.setTipoMantenimiento(TipoMantenimiento.CORRECTIVO);
        // Propio es TRUE
        if (tipoManteEquipoCorr.getValor().equals("Propio")) {
          tipoManteEquipoCorr.setTipoContrato(Boolean.TRUE);
        } else {
          tipoManteEquipoCorr.setTipoContrato(Boolean.FALSE);
        }

        tipoManteEquipoPre.setEquipoHospitalario(newObject);
        tipoManteEquipoPre.setTipoMantenimiento(TipoMantenimiento.PREVENTIVO);
        // Propio es TRUE
        if (tipoManteEquipoPre.getValor().equals("Propio")) {
          tipoManteEquipoPre.setTipoContrato(Boolean.TRUE);
        } else {
          tipoManteEquipoPre.setTipoContrato(Boolean.FALSE);
        }

        equipoHospitalarioBean.save(tipoManteEquipoCorr, tipoManteEquipoPre);

        facesContext.addMessage(
            null,
            new FacesMessage(
                FacesMessage.SEVERITY_INFO,
                "Exito!",
                "Se guardo un registro de una Equipo hospitalario"));
        inicializarVariables();
        busqueda();
        razonSocial = "";
      }
      return ConstantesUtil.ATRAS;

    } catch (Exception e) {
      String errorMessage = getRootErrorMessage(e);
      addMessage(FacesMessage.SEVERITY_ERROR, errorMessage);
      return "";
    }
  }