public FuelSummaryHelper getConsumedSum(List<FuelSummaryHelper> consumedTable) { FuelSummaryHelper result = new FuelSummaryHelper(); double totalDistance = 0; double volumeSum = 0; double efecFuel = 0; foreach (FuelSummaryHelper unitSum in consumedTable) { totalDistance += unitSum.distancia; volumeSum += unitSum.volBruto; efecFuel += unitSum.volEfectivo; } result.distancia = totalDistance; result.volumen = volumeSum; result.volBruto = volumeSum; result.volEfectivo = efecFuel; return result; }
/* nuevos */ public FuelSummaryHelper getCargasSum(List<FuelSummaryHelper> cargasTable) { FuelSummaryHelper result = new FuelSummaryHelper(); int timesEvent = 0; double volumeSum = 0; foreach (FuelSummaryHelper unitSum in cargasTable) { timesEvent += unitSum.cantEventos; volumeSum += unitSum.volumen; } result.cantEventos = timesEvent; result.volumen = volumeSum; return result; }
/** nuevos ***/ public List<FuelSummaryHelper> getCargasTableTable(string cliente, List<string> unidades, DateTime fInicial, DateTime fFinal, int zona) { List<FuelSummaryHelper> result = new List<FuelSummaryHelper>(); foreach (string unidad in unidades) { FuelSummaryHelper currentRes = new FuelSummaryHelper(); currentRes.unidad = unidad; List<Ubicacion> cargasUbi = getTypeOfFuelEvent(cliente , unidad, fInicial, fFinal, zona, 105 ) ; currentRes.volumen = getTotalVolumeFuelEvents(cargasUbi)/100.0; currentRes.cantEventos = cargasUbi.Count; result.Add(currentRes); } return result; }
public List<FuelSummaryHelper> getRalentiTableTable(string cliente, List<string> unidades, DateTime fInicial, DateTime fFinal, int zona) { List<FuelSummaryHelper> result = new List<FuelSummaryHelper>(); foreach (string unidad in unidades) { FuelSummaryHelper currentRes = new FuelSummaryHelper(); FuelSummaryHelper helper = getRalentiFuel(cliente, unidad, fInicial, fFinal, zona); currentRes.unidad = unidad; currentRes.tiempo = helper.tiempo; currentRes.volumen = helper.volumen; result.Add(currentRes); } return result; }
public List<FuelSummaryHelper> getResumenComportamiento(string cliente, List<string> unidades, DateTime fInicial, DateTime fFinal, int zona, List<FuelSummaryHelper> consumedData) { List<FuelSummaryHelper> result = new List<FuelSummaryHelper>(); int counter = 0; foreach (string unidad in unidades) { Historico resumenHelper = RastreoEstaticoBD.Historico(cliente, unidad, fInicial, fFinal); List<Ubicacion> ubicaciones = resumenHelper.Ubicaciones; Ubicacion primeraTiempoMuerto = null; double minutosDetenido = 0; List<Ubicacion> resumidas = new List<Ubicacion>(); foreach (Ubicacion ubicacion in ubicaciones) { Ubicacion ubiAnterior = ubicaciones.IndexOf(ubicacion) == 0 ? ubicacion : ubicaciones[ubicaciones.IndexOf(ubicacion) - 1]; double[] coordenadasUTManterior = ConversionesGeograficas.LatLonToUTMXY(ubiAnterior.Latitud, ubiAnterior.Longitud); double[] coordenadasUTMactual = ConversionesGeograficas.LatLonToUTMXY(ubicacion.Latitud, ubicacion.Longitud); double distancia = Math.Sqrt(Math.Pow((coordenadasUTMactual[0] - coordenadasUTManterior[0]), 2) + Math.Pow((coordenadasUTMactual[1] - coordenadasUTManterior[1]), 2)); if (distancia < 10000) { if (ubicacion.Velocidad > 11 || (distancia > 62 && ubicaciones.IndexOf(ubicacion) != 0)) { if (primeraTiempoMuerto != null) { primeraTiempoMuerto.Tiempo = ubicacion.Fecha.Subtract(primeraTiempoMuerto.Fecha).TotalMinutes; minutosDetenido += primeraTiempoMuerto.Tiempo; resumidas.Add(primeraTiempoMuerto); primeraTiempoMuerto = null; } resumidas.Add(ubicacion); } else if (primeraTiempoMuerto != null) { if (ubicacion.Evento != 0) { resumidas.Add(ubicacion); } } else if (primeraTiempoMuerto == null) // es la primera { primeraTiempoMuerto = ubicacion; } } } if (primeraTiempoMuerto != null) { primeraTiempoMuerto.Tiempo = ubicaciones[ubicaciones.Count - 1].Fecha.Subtract(primeraTiempoMuerto.Fecha).TotalMinutes; resumidas.Add(primeraTiempoMuerto); minutosDetenido += primeraTiempoMuerto.Tiempo; } TimeSpan t = fFinal - fInicial; double tiempoTotalCon = t.TotalMinutes; long tiempoTotal = Convert.ToInt64( tiempoTotalCon ); long tiempoMovimiento = tiempoTotal - Convert.ToInt64( minutosDetenido ); FuelSummaryHelper currentRes = new FuelSummaryHelper(); currentRes.unidad = unidad;//AutentificacionBD.GetDescripcionUnidad(unidad); currentRes.velMax = RastreoEstaticoBD.maximaVelocidadUnidad(cliente,unidad,fInicial,fFinal); currentRes.tiempoMov = tiempoMovimiento; currentRes.tiempoMuerto = Convert.ToInt64( minutosDetenido );//getDeadTime(cliente, unidad, fInicial, fFinal, zona); double cosumedFuel = consumedData[counter].volBruto; double distanceTraveled = consumedData[counter].distancia; if(cosumedFuel > 0 && distanceTraveled > 0){ currentRes.rendBruto = distanceTraveled/cosumedFuel; }else{ currentRes.rendBruto = 0; } double effectiveFuel = consumedData[counter].volEfectivo; if(effectiveFuel > 0 && distanceTraveled > 0){ currentRes.rendEfectivo = distanceTraveled/effectiveFuel; }else{ currentRes.rendEfectivo = 0; } result.Add(currentRes); counter++; } return result; }
/* Para conseguir el valor de ralenti con los sensores es necesario obtener un calculo qe omita los evento **/ public FuelSummaryHelper getRalentiFuel(string cliente, string unidad, DateTime fInicial, DateTime fFinal, int zona) { double relentiFuel = 0; long ralentiTime = 0; double consumeRalentiMinutoCombu = 6; bool calculado = true; bool sinDiez = false; double addBeforeRalentiEventFuel = 0; // In relaton to the 3 min fuel FuelSummaryHelper ralentiInfo = new FuelSummaryHelper(); Historico ralenti = RastreoEstaticoBD.RalentiTrans(cliente, unidad, fInicial, fFinal); if (ralenti.Ubicaciones.Count > 0) { List<Ubicacion> ubicacionesIdling = new List<Ubicacion>(); Ubicacion ultimaUbicacion = ralenti.Ubicaciones[0]; int tiempoAgregado = 3; // tiempo agregado (lo que decida el albitro :P ) en el que comienza el ralenti addBeforeRalentiEventFuel = tiempoAgregado * consumeRalentiMinutoCombu ; bool inicio = false; // Basicamente amigo mio sucedio 70 trye sucedio 71 false para que sea ralenti completo debe suceder un 71 con true en caso contrario un ralenti incompleto DateTime fechaInicioRal = new DateTime(); // fecha hora que inicio ralenti double tiempoRalenti = 0; // tiempo que duro en ralenti int totalRalenti = 0; double combustibleInicioRalenti = 0; double combustibleFinalRalenti = 0; double combustibleRalentiEvento = 0; foreach (Ubicacion ubicacionIdling in ralenti.Ubicaciones) { if (ubicacionIdling.Evento == 70) { // inicio ralenti en esta ubicacion fechaInicioRal = ubicacionIdling.Fecha; inicio = true; tiempoRalenti = tiempoAgregado; // tiempo agregado ultimaUbicacion = ubicacionIdling; combustibleInicioRalenti = RastreoEstaticoBD.valueOfFuelEventBetween(cliente, unidad, fechaInicioRal, fFinal, true); /* if(sinDiez){ combustibleInicioRalenti = RastreoEstaticoBD.valueOfFuelEventBetween(cliente, unidad, fInicial, fFinal, false); }else{ combustibleInicioRalenti = ubicacionIdling.CombustibleGlobal; } */ } else if (inicio) { // evento 71 y ya paso el 70 double tiempoDiferenciaRalenti = ubicacionIdling.Fecha.Subtract(fechaInicioRal).TotalMinutes; tiempoRalenti += tiempoDiferenciaRalenti; inicio = false; ultimaUbicacion.Tiempo = tiempoRalenti; totalRalenti += (int)tiempoRalenti; ubicacionesIdling.Add(ultimaUbicacion); ultimaUbicacion = ubicacionIdling; if(calculado){ relentiFuel += (int)tiempoRalenti * consumeRalentiMinutoCombu; }else{ combustibleFinalRalenti = RastreoEstaticoBD.valueOfFuelEventBetween(cliente, unidad, fechaInicioRal, ubicacionIdling.Fecha, false); // var eventosCombustibleAgrupados = RastreoEstaticoBD.EventosCombustible(cliente, unidad, fechaInicioRal, ubicacionIdling.Fecha, false); /* var eventosCombustibleAgrupados = RastreoEstaticoBD.EventosCombustible(cliente, unidad, fInicial, fFinal); eventosCombustibleAgrupados = agruparEventosCombustible(eventosCombustibleAgrupados, "inicios"); historico.Ubicaciones.AddRange(eventosCombustibleAgrupados); */ relentiFuel += combustibleInicioRalenti - combustibleFinalRalenti; /* if(sinDiez){ combustibleFinalRalenti = RastreoEstaticoBD.valueOfFuelEventBetween(cliente, unidad, fInicial, fFinal, false); combustibleRalentiEvento = combustibleInicioRalenti - combustibleFinalRalenti ; // combustible consumido if (combustibleRalentiEvento > 0 ) { relentiFuel += combustibleRalentiEvento + addBeforeRalentiEventFuel;// la diferencia de los sensores mas lo de los 3 min } }else{ combustibleFinalRalenti = ubicacionIdling.CombustibleGlobal; combustibleRalentiEvento = combustibleInicioRalenti - combustibleFinalRalenti ; // combustible consumido if (combustibleRalentiEvento > 0 ) { relentiFuel += combustibleRalentiEvento + addBeforeRalentiEventFuel;// la diferencia de los sensores mas lo de los 3 min } } */ } } } ralentiTime = totalRalenti; // no quice moverle } ralentiInfo.tiempo = ralentiTime; ralentiInfo.volumen = (relentiFuel)/100.0; return ralentiInfo; }
public FuelSummaryHelper getRalentiSum(List<FuelSummaryHelper> ralentiTable) { FuelSummaryHelper result = new FuelSummaryHelper(); long totalTimeRalenti = 0; double volumeSum = 0; foreach (FuelSummaryHelper unitSum in ralentiTable) { totalTimeRalenti += unitSum.tiempo; volumeSum += unitSum.volumen; } result.tiempo = totalTimeRalenti; result.volumen = volumeSum; return result; }
/*** Sumary Process Start *****/ public FuelSummaryHelper getPerformanceSum(List<FuelSummaryHelper> resumenComportamientoTable) { FuelSummaryHelper result = new FuelSummaryHelper(); double max = 0; string unitMax = ""; long tiempoMov = 0; long tiempoMuerto = 0; foreach (FuelSummaryHelper unitSum in resumenComportamientoTable) { if (unitSum.velMax > max) { unitMax = unitSum.unidad; max = unitSum.velMax; } tiempoMov += unitSum.tiempoMov; tiempoMuerto += unitSum.tiempoMuerto; } result.velMax = max; /* if(max > 10 ){ result.velMax = max; }else{ result.velMax = 1; } */ result.unidad = unitMax; result.tiempoMov = tiempoMov; result.tiempoMuerto = tiempoMuerto; return result; }
public string getPerformanceReportSummary(List<string> unidades, long fechaInicial, long fechaFinal, int zona) { HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("Usuario"); if (cookie == null) { // Response.Redirect("Index.aspx"); } HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies.Get("Usuario"); if (Cookie != null && AutentificacionBD.VerificarToken(Cookie.Values.Get("Token"))) { string clienteID = new Codificador().Desencriptar(cookie.Values.Get("Cliente")); DateTime fInicial = Util.FromUnixMilis(fechaInicial); DateTime fFinal = Util.FromUnixMilis(fechaFinal); //FuelPerformanceReportSummary reportSummary = RastreoEstaticoBD.ReportSummary(clienteID, unidades, fInicial, fFinal, zona); FuelPerformanceReportSummary fuelPerformance = new FuelPerformanceReportSummary(); FuelSummaryHelper auxResumen = new FuelSummaryHelper(); FuelSummaryHelper auxVolIni = new FuelSummaryHelper(); FuelSummaryHelper auxVolFin = new FuelSummaryHelper(); FuelSummaryHelper auxCargas = new FuelSummaryHelper(); FuelSummaryHelper auxDescargas = new FuelSummaryHelper(); FuelSummaryHelper auxRalenti = new FuelSummaryHelper(); FuelSummaryHelper auxConsumido = new FuelSummaryHelper(); /* Volumenes InicialFinal */ List<FuelSummaryHelper> initialFuelTable = getInitialFuelTable(clienteID, unidades, fInicial, fFinal, zona); fuelPerformance.initialFuelTable = initialFuelTable; auxVolIni = getInitialSum(initialFuelTable); List<FuelSummaryHelper> finalFuelTable = getFinalFuelTable( clienteID, unidades, fInicial, fFinal, zona); fuelPerformance.finalFuelTable = finalFuelTable; auxVolFin = getFinalSum(finalFuelTable); fuelPerformance.volInicial = auxVolIni.volumen; fuelPerformance.volFinal = auxVolFin.volumen; /* Cargas */ List<FuelSummaryHelper> cargasTable = getCargasTableTable(clienteID, unidades, fInicial, fFinal, zona); fuelPerformance.cargasTable = cargasTable; auxCargas = getCargasSum(cargasTable); fuelPerformance.valCargas = auxCargas.cantEventos; fuelPerformance.volCargas = auxCargas.volumen; /* Descargas */ List<FuelSummaryHelper> descargasTable = getDescargasTableTable(clienteID, unidades, fInicial, fFinal, zona); fuelPerformance.descargasTable = descargasTable; auxDescargas = getDescargasSum(descargasTable); fuelPerformance.valDescargas = auxDescargas.cantEventos; fuelPerformance.volDescargas = auxDescargas.volumen; /* Ralenti */ List<FuelSummaryHelper> ralentiTable = getRalentiTableTable(clienteID, unidades, fInicial, fFinal, zona); fuelPerformance.ralentiTable = ralentiTable; auxRalenti = getRalentiSum(ralentiTable); fuelPerformance.valRalenti = auxRalenti.tiempo; fuelPerformance.volRalenti = auxRalenti.volumen; /* Consumido */ List<FuelSummaryHelper> consumedTable = getConsumedTable(clienteID, unidades,fInicial, fFinal, initialFuelTable, finalFuelTable, cargasTable, descargasTable, ralentiTable, zona); fuelPerformance.consumedTable = consumedTable; auxConsumido = getConsumedSum(consumedTable); fuelPerformance.valConsu = auxConsumido.distancia; fuelPerformance.volConsu = auxConsumido.volEfectivo ; //fuelPerformance.volBruto = auxConsumido.volBruto; /* Reporte Bruto */ List<FuelSummaryHelper> resumenComportamientoTable = getResumenComportamiento(clienteID, unidades, fInicial, fFinal, zona, consumedTable); fuelPerformance.resumenComportamientoTable = resumenComportamientoTable; auxResumen = getPerformanceSum(resumenComportamientoTable); fuelPerformance.Unit = auxResumen.unidad; // Fastest Unit fuelPerformance.maxSpeed = auxResumen.velMax; // Max Speed of the unit fuelPerformance.initDate = fInicial; fuelPerformance.finalDate = fFinal; fuelPerformance.timeMoving = auxResumen.tiempoMov; // Time Moving fuelPerformance.deadTime = auxResumen.tiempoMuerto; if( fuelPerformance.valConsu > 0 && auxConsumido.volBruto > 0){ fuelPerformance.brutePerformance = fuelPerformance.valConsu/auxConsumido.volBruto ; }else{ fuelPerformance.brutePerformance = 0; } if( fuelPerformance.valConsu > 0 && auxConsumido.volEfectivo > 0){ fuelPerformance.efectivePerformance = fuelPerformance.valConsu/auxConsumido.volEfectivo; }else{ fuelPerformance.efectivePerformance = 0; } /** Ur done **/ this.Context.Response.ContentType = "application/json; charset=utf-8"; string json = JsonConvert.SerializeObject(fuelPerformance, Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore }); return json; } else return "error404"; }
public FuelSummaryHelper getInitialSum(List<FuelSummaryHelper> initTable) { FuelSummaryHelper result = new FuelSummaryHelper(); int timesEvent = 0; double volumeSum = 0; foreach (FuelSummaryHelper unitSum in initTable) { volumeSum += unitSum.volumen; } result.cantEventos = timesEvent; result.volumen = volumeSum; return result; }
public List<FuelSummaryHelper> getInitialFuelTable(string cliente, List<string> unidades, DateTime fInicial, DateTime fFinal, int zona) { List<FuelSummaryHelper> result = new List<FuelSummaryHelper>(); foreach (string unidad in unidades) { FuelSummaryHelper currentRes = new FuelSummaryHelper(); currentRes.unidad = unidad; currentRes.volumen = RastreoEstaticoBD.getFirstLastFuel(cliente, unidad, fInicial, fFinal, zona, true); result.Add(currentRes); } return result; }
public List<FuelSummaryHelper> getConsumedTable(string cliente, List<string> unidades, DateTime fInicial, DateTime fFinal, List<FuelSummaryHelper> initialFuelTable, List<FuelSummaryHelper> finalFuelTable, List<FuelSummaryHelper> cargasTable, List<FuelSummaryHelper> descargasTable, List<FuelSummaryHelper> ralentiTable, int zona) { List<FuelSummaryHelper> result = new List<FuelSummaryHelper>(); double ini = 0; double fin = 0; double cargas = 0; double descargas = 0; double ralenti = 0; double distanciaInicial; double distanciaFinal; for (int i = 0; i < unidades.Count; i++) { FuelSummaryHelper currentRes = new FuelSummaryHelper(); string unidad = unidades[i]; ini = initialFuelTable[i].volumen; fin = finalFuelTable[i].volumen; cargas = cargasTable[i].volumen; descargas = descargasTable[i].volumen; ralenti = ralentiTable[i].volumen; distanciaInicial = RastreoEstaticoBD.getFirstLastKm(cliente, unidad, fInicial, fFinal,zona, true ); distanciaFinal = RastreoEstaticoBD.getFirstLastKm(cliente, unidad, fInicial, fFinal,zona, false); double distanciaRecorrida= distanciaFinal - distanciaInicial; currentRes.unidad = unidad; currentRes.distancia = distanciaRecorrida; currentRes.volEfectivo = applyConsumedEffectiveFormula(ini, fin, cargas, descargas, ralenti); currentRes.volBruto = applyConsumedFormulaBrute(ini, fin, cargas, descargas, ralenti); currentRes.volumen = currentRes.volEfectivo; result.Add(currentRes); } return result; }