/// <summary>
        /// Genera la desviación estándar consolidada del itinerario
        /// </summary>
        /// <param name="sheet">Hoja donde se escribirá la tabla</param>
        /// <param name="row_ini">Fila inicial</param>
        /// <param name="col_ini">Columna inicial</param>
        /// <param name="titulo">Título</param>
        /// <param name="valores">Valores de la tabla</param>
        private void ImprimirConsolidado(Sheet sheet, int row_ini, int col_ini, string titulo, double[,] valores)
        {
            Cell cell = sheet.CreateRow(row_ini).CreateCell(col_ini);

            cell.CellStyle = GetEstilo(EstilosTexto.EncabezadoColumnas);
            cell.SetCellType(CellType.STRING);
            cell.SetCellValue(titulo);
            cell           = sheet.GetRow(row_ini).CreateCell(col_ini + 1);
            cell.CellStyle = GetEstilo(EstilosTexto.EncabezadoColumnas);
            cell.SetCellType(CellType.STRING);
            sheet.AddMergedRegion(new CellRangeAddress(row_ini, row_ini, col_ini, col_ini + 1));

            EstadisticosGenerales estadisticos = new EstadisticosGenerales(valores);

            cell           = sheet.GetRow(row_ini).CreateCell(col_ini + 2);
            cell.CellStyle = GetEstilo(EstilosTexto.PorcentajesNegrita);
            cell.SetCellType(CellType.NUMERIC);
            cell.SetCellValue(estadisticos.Desvest);
            cell           = sheet.GetRow(row_ini).CreateCell(col_ini + 3);
            cell.CellStyle = GetEstilo(EstilosTexto.PorcentajesNegrita);
            cell           = sheet.GetRow(row_ini).CreateCell(col_ini + 4);
            cell.CellStyle = GetEstilo(EstilosTexto.PorcentajesNegrita);

            sheet.AddMergedRegion(new CellRangeAddress(row_ini, row_ini, col_ini + 2, col_ini + 4));
        }
Esempio n. 2
0
        /// <summary>
        /// Construye la estructura y camputa sus estadísticos generales.
        /// </summary>
        /// <param name="valores">Lista con los detalles de cada réplica</param>
        public InfoReporteUtilizacion(List <UnidadBackup> valores)
        {
            UnidadBackup unidadBackup = valores[0];

            this.valores         = valores;
            this.subflota        = unidadBackup.TramoBase.Ac_Owner + " " + unidadBackup.TramoBase.Numero_Vuelo;
            this.estacion        = unidadBackup.Estacion;
            this.id              = unidadBackup.Id;
            this.tiempo_ini_slot = unidadBackup.TramoBase.Hora_Salida;
            this.tiempo_fin_slot = unidadBackup.TramoBase.Hora_Llegada;
            this.duracion_slot   = unidadBackup.TiempoFinPrg - unidadBackup.TiempoIniPrg;
            List <double> valoresUtilizacionNeta      = new List <double>();
            List <double> valoresTramosRecuperados    = new List <double>();
            List <double> valoresMinutosRecuperados   = new List <double>();
            List <double> valoresUtilizacionSlotSinTA = new List <double>();
            List <double> valoresUtilizacionSlotConTA = new List <double>();

            foreach (UnidadBackup bu in valores)
            {
                EstadisticosUtilizacion estadisticos_replica = bu.Estadisticos;
                valoresUtilizacionNeta.Add(estadisticos_replica.porcentajeUtilizacionNeta);
                valoresTramosRecuperados.Add(estadisticos_replica.tramosRecuperados);
                valoresMinutosRecuperados.Add(estadisticos_replica.minutosRecuperados);
                valoresUtilizacionSlotSinTA.Add(estadisticos_replica.porcentajeUtilizacionSlotSinTA);
                valoresUtilizacionSlotConTA.Add(estadisticos_replica.porcentajeUtilizacionSlotConTA);
            }
            this.estadisticosMinutosRecuperados        = new EstadisticosGenerales(valoresMinutosRecuperados);
            this.estadisticosPorcentajeUtilizacionNeta = new EstadisticosGenerales(valoresUtilizacionNeta);
            this.estadisticosTramosRecuperados         = new EstadisticosGenerales(valoresTramosRecuperados);
            this.estadisticosUtilizacionSlot           = new EstadisticosGenerales(valoresUtilizacionSlotConTA);
        }
        /// <summary>
        /// Construye la estructura y camputa sus estadísticos generales.
        /// </summary>
        /// <param name="valores">Lista con los detalles de cada réplica</param>
        public InfoReporteMantto(List <SlotMantenimiento> valores)
        {
            SlotMantenimiento slotMantto = valores[0];

            this.valores              = valores;
            this.subflota             = slotMantto.TramoBase.Ac_Owner + " " + slotMantto.TramoBase.Numero_Vuelo;
            this.matricula            = slotMantto.TramoBase.Numero_Ac;
            this.estacion             = slotMantto.Estacion;
            this.id                   = slotMantto.TramoBase.Numero_Global.ToString();
            this.tiempo_ini_slot_prog = slotMantto.TramoBase.Hora_Salida;
            this.tiempo_fin_slot_prog = slotMantto.TramoBase.Hora_Llegada;
            this.duracion_slot        = slotMantto.TiempoFinManttoPrg - slotMantto.TiempoInicioManttoPrg;
            List <double> valoresCumplimiento  = new List <double>();
            List <double> valoresMinutosAtraso = new List <double>();

            foreach (SlotMantenimiento sm in valores)
            {
                valoresCumplimiento.Add((sm.TiempoInicioManttoPrg == sm.TiempoInicioManttoRst) ? 1 : 0);
                valoresMinutosAtraso.Add(sm.TiempoInicioManttoRst - sm.TiempoInicioManttoPrg);
            }
            this.estadisticosCumplimientoSTD0 = new EstadisticosGenerales(valoresCumplimiento);
            this.estadisticosMinutosAtraso    = new EstadisticosGenerales(valoresMinutosAtraso);
        }
        /// <summary>
        /// Crea un resumen estadísticos por estándar de puntualidad
        /// </summary>
        /// <param name="fila_ini">Número de fila inicial de la tabla</param>
        /// <param name="col_ini">Número de columna inicial de la tabla</param>
        /// <param name="puntualidad_por_estandar">Diccionario con la puntualidad agrupada por estándar</param>
        /// <param name="ultima_fila_creada">Última fila creada al momento de imprimirse los valores de puntualidad por réplica</param>
        /// <param name="sheet">Referencia a sheet donde se imprimen los valores</param>
        private void ImprimirResumen(int fila_ini, int col_ini, Dictionary <int, List <double> > puntualidad_por_estandar, int ultima_fila_creada, Sheet sheet)
        {
            Cell cell2;

            if (fila_ini > ultima_fila_creada)
            {
                cell2 = sheet.CreateRow(fila_ini).CreateCell(col_ini);
            }
            else
            {
                cell2 = sheet.GetRow(fila_ini).CreateCell(col_ini);
            }
            cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoColumnas);
            cell2.SetCellType(CellType.STRING);
            cell2.SetCellValue("Estadísticos");
            int index_col = 0;

            foreach (int std in puntualidad_por_estandar.Keys)
            {
                index_col++;
                if (fila_ini > ultima_fila_creada)
                {
                    cell2 = sheet.CreateRow(fila_ini).CreateCell(col_ini + index_col);
                }
                else
                {
                    cell2 = sheet.GetRow(fila_ini).CreateCell(col_ini + index_col);
                }
                cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoColumnas);
                cell2.SetCellType(CellType.STRING);
                cell2.SetCellValue("STD" + std);
            }

            int index_fila = fila_ini + 1;

            if (index_fila > ultima_fila_creada)
            {
                cell2 = sheet.CreateRow(index_fila).CreateCell(col_ini);
            }
            else
            {
                cell2 = sheet.GetRow(index_fila).CreateCell(col_ini);
            }
            cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoFila);
            cell2.SetCellType(CellType.STRING);
            cell2.SetCellValue("Promedio");
            index_fila++;

            if (index_fila > ultima_fila_creada)
            {
                cell2 = sheet.CreateRow(index_fila).CreateCell(col_ini);
            }
            else
            {
                cell2 = sheet.GetRow(index_fila).CreateCell(col_ini);
            }
            cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoFila);
            cell2.SetCellType(CellType.STRING);
            cell2.SetCellValue("Desvest");
            index_fila++;

            if (index_fila > ultima_fila_creada)
            {
                cell2 = sheet.CreateRow(index_fila).CreateCell(col_ini);
            }
            else
            {
                cell2 = sheet.GetRow(index_fila).CreateCell(col_ini);
            }
            cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoFila);
            cell2.SetCellType(CellType.STRING);
            cell2.SetCellValue("Mínimo");
            index_fila++;

            if (index_fila > ultima_fila_creada)
            {
                cell2 = sheet.CreateRow(index_fila).CreateCell(col_ini);
            }
            else
            {
                cell2 = sheet.GetRow(index_fila).CreateCell(col_ini);
            }
            cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoFila);
            cell2.SetCellType(CellType.STRING);
            cell2.SetCellValue("Máximo");
            index_fila++;

            if (index_fila > ultima_fila_creada)
            {
                cell2 = sheet.CreateRow(index_fila).CreateCell(col_ini);
            }
            else
            {
                cell2 = sheet.GetRow(index_fila).CreateCell(col_ini);
            }
            cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoFila);
            cell2.SetCellType(CellType.STRING);
            cell2.SetCellValue("Intervalo-");
            index_fila++;

            if (index_fila > ultima_fila_creada)
            {
                cell2 = sheet.CreateRow(index_fila).CreateCell(col_ini);
            }
            else
            {
                cell2 = sheet.GetRow(index_fila).CreateCell(col_ini);
            }
            cell2.CellStyle = GetEstilo(EstilosTexto.EncabezadoFila);
            cell2.SetCellType(CellType.STRING);
            cell2.SetCellValue("Intervalo+");
            index_fila++;

            int contador = 0;

            foreach (int std in puntualidad_por_estandar.Keys)
            {
                contador++;
                index_fila = fila_ini + 1;
                EstadisticosGenerales estadisticos = new EstadisticosGenerales(puntualidad_por_estandar[std]);

                cell2           = sheet.GetRow(index_fila).CreateCell(col_ini + contador);
                cell2.CellStyle = GetEstilo(EstilosTexto.Porcentajes);
                cell2.SetCellType(CellType.NUMERIC);
                cell2.SetCellValue(estadisticos.Media);
                index_fila++;

                cell2           = sheet.GetRow(index_fila).CreateCell(col_ini + contador);
                cell2.CellStyle = GetEstilo(EstilosTexto.Porcentajes);
                cell2.SetCellType(CellType.NUMERIC);
                cell2.SetCellValue(estadisticos.Desvest);
                index_fila++;

                cell2           = sheet.GetRow(index_fila).CreateCell(col_ini + contador);
                cell2.CellStyle = GetEstilo(EstilosTexto.Porcentajes);
                cell2.SetCellType(CellType.NUMERIC);
                cell2.SetCellValue(estadisticos.Min);
                index_fila++;

                cell2           = sheet.GetRow(index_fila).CreateCell(col_ini + contador);
                cell2.CellStyle = GetEstilo(EstilosTexto.Porcentajes);
                cell2.SetCellType(CellType.NUMERIC);
                cell2.SetCellValue(estadisticos.Max);
                index_fila++;

                cell2           = sheet.GetRow(index_fila).CreateCell(col_ini + contador);
                cell2.CellStyle = GetEstilo(EstilosTexto.Porcentajes);
                cell2.SetCellType(CellType.NUMERIC);
                int    N        = Convert.ToInt32(estadisticos.N);
                string formula1 = "INDIRECT(ADDRESS(" + (fila_ini + 2) + "," + (col_ini + contador + 1) + "))";
                string formula2 = "INDIRECT(ADDRESS(" + (fila_ini + 3) + "," + (col_ini + contador + 1) + "))" + "/SQRT(" + N + ")* TINV(" + ReportManager.CONFIANZA + "," + (N - 1) + ")";
                cell2.CellFormula = "Max(" + formula1 + "-" + formula2 + ",0)";
                index_fila++;

                cell2           = sheet.GetRow(index_fila).CreateCell(col_ini + contador);
                cell2.CellStyle = GetEstilo(EstilosTexto.Porcentajes);
                cell2.SetCellType(CellType.NUMERIC);
                cell2.CellFormula = "Min(" + formula1 + "+" + formula2 + ",1)";
                index_fila++;
            }
        }