/// <summary> /// Evaluates if the Motor has exceeded the Maximum Value of the Caudal configured for it /// </summary> /// <param name="caudal"></param> /// <param name="caudalimetro"></param> /// <param name="fecha"></param> public static void EvaluteMaximumCaudal(double caudal, Caudalimetro caudalimetro, DateTime fecha) { if (caudal > caudalimetro.CaudalMaximo && caudalimetro.CaudalMaximo != 0) { EventoCombustibleSaver.CreateNewEvent(caudalimetro.Codigo, null, CodeMCaudalSuperado, String.Format(MsgMCaudalSuperado, caudal), fecha); } }
public CaudalimetroVo(Caudalimetro caudalimetro) { Id = caudalimetro.Id; Descripcion = caudalimetro.Descripcion; Tanque = caudalimetro.Tanque != null ? caudalimetro.Tanque.Descripcion : "Sin Asignar"; Equipo = caudalimetro.Equipo != null ? caudalimetro.Equipo.Descripcion : "Sin Asignar"; }
/// <summary> /// Gets the current message to be saved. /// </summary> /// <param name="motor"></param> /// <param name="tanque"></param> /// <param name="code"></param> /// <returns></returns> private Mensaje GetMessage(Caudalimetro motor, Tanque tanque, string code) { var linea = motor != null ? motor.Equipo != null ? motor.Equipo.Linea : null : tanque != null ? tanque.Linea ?? (tanque.Equipo != null ? tanque.Equipo.Linea : null) : null; var empresa = linea != null ? linea.Empresa : null; return(DaoFactory.MensajeDAO.FindById(DaoFactory.MensajeDAO.GetByCodigo(code, empresa, linea).Id)); }
/// <summary> /// Gets the las movement associated to the specified engine. /// </summary> /// <param name="engine"></param> /// <returns></returns> public Movimiento GetLastEngineMovement(Caudalimetro engine) { if (engine == null) { return(null); } return(Session.Query <Movimiento>().Where(m => m.Caudalimetro.Id == engine.Id && m.Estado == 0) .OrderByDescending(m => m.Fecha).FirstOrDefault()); }
/// <summary> /// Creates a new Caudalimetro Object. /// </summary> /// <param name="daoFactory"></param> /// <param name="center"></param> /// <param name="codigo"></param> /// <param name="alias"></param> /// <returns></returns> private static Caudalimetro CreateNewCaudalimetroDeEntrada(DAOFactory daoFactory, String center, String codigo, String alias) { var m = new Caudalimetro { Codigo = codigo, Tanque = daoFactory.TanqueDAO.FindByCode(center), Equipo = daoFactory.EquipoDAO.GetByCode("PI-" + center), Descripcion = alias, EsDeEntrada = true }; daoFactory.CaudalimetroDAO.SaveOrUpdate(m); return(daoFactory.CaudalimetroDAO.GetByCode(codigo)); }
/// <summary> /// Updates the description of the Motor. /// </summary> /// <param name="daoFactory"></param> /// <param name="motor"></param> /// <param name="alias"></param> private static void UpdateMotorDescription(DAOFactory daoFactory, Caudalimetro motor, String alias) { motor.Descripcion = alias; daoFactory.CaudalimetroDAO.SaveOrUpdate(motor); }
/// <summary> /// Process all the remaining movements for an specific Caudalimetro. /// </summary> /// <param name="caudalimetro"></param> public void ProcessMovements(Caudalimetro caudalimetro) { var typeDAO = new TipoMovimientoDAO(); var idIngreso = typeDAO.GetByCode("I").Id; var lastProcessedMovement = FindLastReportedProcessedMovement(caudalimetro.Id); var lastVolume = lastProcessedMovement != null ? lastProcessedMovement.Volumen : 0; var lastDate = lastProcessedMovement != null ? lastProcessedMovement.Fecha : new DateTime(1900, 1, 1); try { using (var tx = SmartTransaction.BeginTransaction()) { try { foreach (var m in FindAllReportedMovementsNotProcessed(caudalimetro.Id, lastDate)) { if ((m.TipoMovimiento.Id != idIngreso && m.Volumen >= lastVolume) || (m.TipoMovimiento.Id == idIngreso && m.Volumen > lastVolume)) { var newMov = new Movimiento { Fecha = m.Fecha, FechaIngresoABase = DateTime.Now, Volumen = m.Volumen - lastVolume, Observacion = null, Estado = 1, Tanque = null, Caudalimetro = caudalimetro, TipoMovimiento = m.TipoMovimiento, Coche = null, Caudal = m.Caudal, Temperatura = m.Temperatura, HsEnMarcha = m.HsEnMarcha, RPM = m.RPM, Procesado = false, Motivo = null, Empleado = null }; SaveOrUpdate(newMov); } m.Procesado = true; SaveOrUpdate(m); lastVolume = m.Volumen; } tx.Commit(); } catch (Exception ex) { STrace.Exception(typeof(MovimientoDAO).FullName, ex, "ProcessMovements(Caudalimetro);"); try { tx.Rollback(); } catch (Exception ex2) { STrace.Exception(typeof(MovimientoDAO).FullName, ex2, "ProcessMovements(Caudalimetro); doing rollback"); } throw ex; } } } catch (Exception ex) { if (Session.Transaction != null) { Session.Transaction.Rollback(); } throw new Exception(String.Format("Error procesing remaining movements from caudalimetro: {0} ", caudalimetro.Id), ex); } }
/// <summary> /// Precalcula los consumos de cada movimiento del motor (vienen en un contador global), para agilizar las consultas /// en la aplicación y resto del datamart.s /// </summary> /// <param name="caudalimetro"></param> private void ProcessAllCaudalimetrosMovements(Caudalimetro caudalimetro) { DaoFactory.MovimientoDAO.ProcessMovements(caudalimetro); }