private void Timer_Tick(object sender, EventArgs e) { if (this.maquinas.Count > 0 && this.operario != null) { Turno turno = HorarioTurnos.CalcularTurnoAFecha(DateTime.Now); DateTime inicio = DateTime.Now; DateTime fin = DateTime.Now; HorarioTurnos.CalcularHorarioTurno(turno, DateTime.Now, out inicio, out fin); int maxPulsos = 0; Maquinas maxMaquina = null; foreach (var maquina in this.maquinas) { int cont = maquina.Pulsos.Where(x => x.IdOperario == operario.Id && (inicio <= x.FechaLocal && x.FechaLocal <= fin)).Count(); if (cont > maxPulsos) { maxPulsos = cont; maxMaquina = maquina; } } Vueltas = maxPulsos; } else { Vueltas = 0; } Notifica("Vueltas"); }
public PrensaGenericaControl(Maquinas maquina, Operarios op) { InitializeComponent(); this.DataContext = this; this.Maquina = maquina; this.Maquina.OperarioACargo = op; this.MinHeight = 30; Grid.SetRow(this, (int)maquina.Top); Grid.SetColumn(this, (int)maquina.Left); Maquina.OnParesConsumidos += Maquina_OnParesConsumidos; Maquina.OnInfoEjecucionActualizada += Maquina_OnInfoEjecucionActualizada; Maquina.OnModoCambiado += Maquina_OnModoCambiado; Maquina.OnFichajeMaquina += Maquina_OnFichajeMaquina; this.PreviewMouseUp += PrensaLayout_PreviewMouseUp; this.timerCalentamiento = new DispatcherTimer(); this.timerCalentamiento.Interval = new TimeSpan(0, 0, 0, 0, 400); this.timerCalentamiento.Tick += TimerCalentamiento_Tick;; this.timerInactividad = new DispatcherTimer(); this.timerInactividad.Interval = new TimeSpan(0, 10, 0); this.timerInactividad.Tick += TimerInactividad_Tick; this.timerLimiteCaja = new DispatcherTimer(); this.timerLimiteCaja.Interval = new TimeSpan(0, 0, 30); this.timerLimiteCaja.Tick += TimerLimiteCaja_Tick; this.timerLimiteCaja.Start(); this.timerInactividad.Start(); this.PreviewMouseDown += PrensaGenericaControl_PreviewMouseUp; try { BackgroundWorker bwActualizarCola = new BackgroundWorker(); List <MaquinasColasTrabajo> cola = new List <MaquinasColasTrabajo>(); Maquinas maquinaDb = null; List <MaquinasRegistrosDatos> paquetesHistorico = new List <MaquinasRegistrosDatos>(); DateTime ahora = DateTime.Now; Turno turno = HorarioTurnos.CalcularTurnoAFecha(ahora); DateTime fechaInicio; DateTime fechaFin; HorarioTurnos.CalcularHorarioTurno(turno, ahora, out fechaInicio, out fechaFin); maquina.Pulsos.Clear(); bwActualizarCola.DoWork += (se, ev) => { maquinaDb = daoPuesto.ObtenerMaquinaConColaTrabajo(maquina.ID); paquetesHistorico = daoTarea.ObtenerHistoricoParesOperario(op.Id, maquina.IpAutomata, maquina.Posicion, fechaInicio, fechaFin); }; bwActualizarCola.RunWorkerCompleted += (se, ev) => { cola = maquinaDb.MaquinasColasTrabajo.ToList(); this.Maquina.IpAutomata = maquinaDb.IpAutomata; this.Maquina.Posicion = maquinaDb.Posicion; this.Maquina.PosicionGlobal = maquinaDb.PosicionGlobal; this.topicNormal = new Topic(string.Format("/{0}/plc/{1}/normal", maquina.Tipo, maquina.IpAutomata), (byte)2, this.Maquina.Nombre); this.topicCalentar = new Topic(string.Format("/{0}/plc/{1}/calentar", maquina.Tipo, maquina.IpAutomata), (byte)1, this.Maquina.Nombre); this.topicAsociarTarea = new Topic(string.Format("/{0}/plc/{1}/asociarTarea", maquina.Tipo, maquina.IpAutomata), (byte)1, this.Maquina.Nombre); this.topicNormal.OnMensajeRecibido += TopicNormal_OnMensajeRecibido; this.topicCalentar.OnMensajeRecibido += TopicCalentar_OnMensajeRecibido; this.topicAsociarTarea.OnMensajeRecibido += TopicAsociarTarea_OnMensajeRecibido; maquina.AsignarColaTrabajo(cola); ClienteMqtt.Suscribir(this.topicNormal); ClienteMqtt.Suscribir(this.topicCalentar); ClienteMqtt.Suscribir(this.topicAsociarTarea); foreach (var paquete in paquetesHistorico.Where(x => x.PiezaIntroducida)) { Maquina.Pulsos.Add(new PulsoMaquina { CodigoEtiqueta = paquete.CodigoEtiqueta, Control = daoTarea.BuscarControlGuardado(paquete.IdOperacion, Maquina.IdTipo ?? 0), Ciclo = paquete.Ciclo, Fecha = paquete.FechaCreacion, Pares = paquete.Pares, PosicionGlobal = Maquina.PosicionGlobal ?? 0, IdOperario = paquete.IdOperario, }); } Notifica("Maquina"); Loader.Visibility = Visibility.Collapsed; PanelPrincipal.Visibility = Visibility.Visible; }; bwActualizarCola.RunWorkerAsync(); } catch (Exception ex) { new Log().Escribir(ex); } }