/// <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)); }
/// <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++; } }