Ejemplo n.º 1
0
        private void AsignarTareaEjecucion(List <SP_BarquillaBuscarInformacionEnSeccion_Result> infoBarquillaSeccion, Maquinas maquina, string codigoEtiqueta)
        {
            if (infoBarquillaSeccion.Any())
            {
                BusEventos.TareasCargando();
                var idsOrden         = infoBarquillaSeccion.Select(x => x.IdOrden);
                var idsOrdenDistinto = idsOrden.Distinct();
                if (idsOrden.Count() != idsOrdenDistinto.Count())
                {
                    // multiOperacion
                    BusEventos.TareasCargadas();
                }
                else
                {
                    var idsTareas = infoBarquillaSeccion.Select(x => x.IdTarea.Value).Distinct().ToList();

                    var control = BuscarControl(infoBarquillaSeccion.First().IdOperacion, maquina);

                    // bd
                    BackgroundWorker            bwActualizarCola = new BackgroundWorker();
                    List <MaquinasColasTrabajo> cola             = new List <MaquinasColasTrabajo>();
                    bwActualizarCola.DoWork += (se, ev) =>
                    {
                        cola = Insert.ActualizarColaTrabajo(codigoEtiqueta, idsTareas, infoBarquillaSeccion.First().Agrupacion ?? 0, maquina.ID, Store.OperarioEjecucion.Id, infoBarquillaSeccion.Sum(x => x.Cantidad), infoBarquillaSeccion.First().Talla);
                    };
                    bwActualizarCola.RunWorkerCompleted += (se, ev) =>
                    {
                        maquina.AsignarColaTrabajo(cola);
                        BusEventos.TareasCargadas();
                    };
                    bwActualizarCola.RunWorkerAsync();

                    // mqtt
                    MqttAsociarBarquilla(infoBarquillaSeccion, maquina);
                }
            }
        }