コード例 #1
0
        public static Lectura Observacion()
        {
            if (Estado.RondaPuntoEsperado == null)
            {
                return(null);
            }
            SqlCeConnection conn = CntCN50.TSqlConnection();

            CntCN50.TOpen(conn);
            Lectura l = new Lectura();

            l.Status        = 0;
            l.DescargaLinea = new TDescargaLinea();
            l.DescargaLinea.descargaLineaId = CntCN50.GetSiguienteDescargaLineaId(conn);
            l.DescargaLinea.tag             = "OBSERVACION";
            l.DescargaLinea.tipo            = "OBSERVACION";
            TRondaPunto rp = Estado.RondaPuntoEsperado;

            l.DescargaLinea.tipoId    = 0;
            l.DescargaLinea.nombre    = rp.Punto.nombre;
            l.DescargaLinea.fechaHora = DateTime.Now;
            CntCN50.TClose(conn);
            //---------
            l.InAuto  = "OBSERVACION";
            l.Leido   = rp.Punto.nombre;
            l.ObsAuto = "Introduzca incidencia y/o comentario";
            return(l);
        }
コード例 #2
0
        public static Lectura UltimoEnRonda(Lectura l, TPunto p)
        {
            // comprobamos si la ronda esta completa
            PuntosSinControl psc = PuntosNoControlados(Estado.Ronda);
            // Cogemos el último punto de verdad
            int         ultindex = Estado.Ronda.RondasPuntos.Count - 1;
            TRondaPunto urp      = Estado.Ronda.RondasPuntos[ultindex];

            if (urp.Punto.puntoId == p.puntoId)
            {
                // es el útimo punto
                l.ObsAuto = "FINAL DE RONDA." + l.ObsAuto;
                if (psc.pos >= 0)
                {
                    // hay puntos sin controlar i el siguiente viene en pos
                    l.InAuto  = "INCIDENCIA";
                    l.ObsAuto = "Ronda sin completar, faltan los puntos de control " + psc.lista + ". Pulsa <Volver> para realizar las lecturas pendientes Pulsar <Continuar> para forzar el cierre de la Ronda sin completar.";
                    Estado.RondaPuntoEsperado = Estado.Ronda.RondasPuntos[psc.pos];
                    l.Status = 3;
                }
                else
                {
                    Estado.Ronda = null;
                    Estado.RondaPuntoEsperado = null;
                    Estado.Orden = 0;
                }
            }
            else
            {
                if (psc.pos >= 0)
                {
                    if (l.Status == 0)
                    {
                        // no es el útimo (ponemos como siguiente el no controlado)
                        Estado.Orden = psc.pos;
                        Estado.RondaPuntoEsperado = Estado.Ronda.RondasPuntos[psc.pos];
                    }
                }
                else
                {
                    // la ronda en realidad está completa
                    l.ObsAuto    = "FINAL DE RONDA. " + "Ha controlado todos los puntos de la ronda activa";
                    Estado.Ronda = null;
                    Estado.RondaPuntoEsperado = null;
                    Estado.Orden = 0;
                }
            }
            return(l);
        }
コード例 #3
0
 public static void DesmarcarControlado(TRonda r, TPunto p)
 {
     if (r == null)
     {
         return;
     }
     for (int i = 0; i < r.RondasPuntos.Count; i++)
     {
         TRondaPunto rp = r.RondasPuntos[i];
         if (rp.Punto.puntoId == p.puntoId)
         {
             // lo desmarcamos como controlado
             rp.Controlado = false;
         }
     }
 }
コード例 #4
0
        public static TRonda GetRondaFromDr(SqlCeDataReader dr)
        {
            TRonda r       = new TRonda();
            bool   primero = true;

            while (dr.Read())
            {
                if (primero)
                {
                    r.rondaId      = dr.GetInt32(0);
                    r.nombre       = dr.GetString(1);
                    r.tag          = dr.GetString(2);
                    r.tagf         = dr.GetString(3);
                    r.RondasPuntos = new List <TRondaPunto>();
                    primero        = false;
                }
                TRondaPunto rp = new TRondaPunto();
                TPunto      p  = new TPunto();
                TEdificio   e  = new TEdificio();
                TGrupo      g  = new TGrupo();
                rp.rondaPuntoId = dr.GetInt32(4);
                rp.orden        = dr.GetInt32(5);
                p.puntoId       = dr.GetInt32(6);
                p.nombre        = dr.GetString(7);
                e.edificioId    = dr.GetInt32(8);
                p.tag           = dr.GetString(9);
                e.nombre        = dr.GetString(10);
                g.grupoId       = dr.GetInt32(11);
                g.nombre        = dr.GetString(12);
                p.cota          = dr.GetString(13);
                p.cubiculo      = dr.GetString(14);
                r.mintime       = dr.GetInt32(15);
                r.maxtime       = dr.GetInt32(16);
                p.csnmax        = dr.GetInt32(17);
                p.csnmargen     = dr.GetInt32(18);
                p.lastcontrol   = dr.GetDateTime(19);
                e.Grupo         = g;
                p.Edificio      = e;
                rp.Punto        = p;
                rp.Ronda        = r;
                r.RondasPuntos.Add(rp);
            }
            return(r);
        }
コード例 #5
0
ファイル: TRonda.cs プロジェクト: rafaelgr/FalckCN50Sol
 public static TRonda GetRondaFromDr(SqlCeDataReader dr)
 {
     TRonda r = new TRonda();
     bool primero = true;
     while (dr.Read())
     {
         if (primero)
         {
             r.rondaId = dr.GetInt32(0);
             r.nombre = dr.GetString(1);
             r.tag = dr.GetString(2);
             r.tagf = dr.GetString(3);
             r.RondasPuntos = new List<TRondaPunto>();
             primero = false;
         }
         TRondaPunto rp = new TRondaPunto();
         TPunto p = new TPunto();
         TEdificio e = new TEdificio();
         TGrupo g = new TGrupo();
         rp.rondaPuntoId = dr.GetInt32(4);
         rp.orden = dr.GetInt32(5);
         p.puntoId = dr.GetInt32(6);
         p.nombre = dr.GetString(7);
         e.edificioId = dr.GetInt32(8);
         p.tag = dr.GetString(9);
         e.nombre = dr.GetString(10);
         g.grupoId = dr.GetInt32(11);
         g.nombre = dr.GetString(12);
         p.cota = dr.GetString(13);
         p.cubiculo = dr.GetString(14);
         r.mintime = dr.GetInt32(15);
         r.maxtime = dr.GetInt32(16);
         p.csnmax = dr.GetInt32(17);
         p.csnmargen = dr.GetInt32(18);
         p.lastcontrol = dr.GetDateTime(19);
         e.Grupo = g;
         p.Edificio = e;
         rp.Punto = p;
         rp.Ronda = r;
         r.RondasPuntos.Add(rp);
     }
     return r;
 }
コード例 #6
0
        public static PuntosSinControl PuntosNoControlados(TRonda r)
        {
            PuntosSinControl psc = new PuntosSinControl();
            int    pos           = -1;
            string lista         = "";

            for (int i = 0; i < r.RondasPuntos.Count; i++)
            {
                TRondaPunto rp = r.RondasPuntos[i];
                if (!rp.Controlado)
                {
                    if (pos == -1)
                    {
                        pos = i;
                    }
                    lista += "[" + rp.Punto.nombre + "]";
                }
            }
            psc.pos   = pos;
            psc.lista = lista;
            return(psc);
        }
コード例 #7
0
        public static Lectura LeidoPunto(TPunto p, string tag)
        {
            Lectura l = new Lectura();

            l.Status = 0;
            //--- Montar descarga asociada
            SqlCeConnection conn = CntCN50.TSqlConnection();

            CntCN50.TOpen(conn);
            l.DescargaLinea = new TDescargaLinea();
            l.DescargaLinea.descargaLineaId = CntCN50.GetSiguienteDescargaLineaId(conn);
            l.DescargaLinea.tag             = tag;
            l.DescargaLinea.tipo            = "PUNTO";
            l.DescargaLinea.tipoId          = p.puntoId;
            l.DescargaLinea.nombre          = p.nombre;
            l.DescargaLinea.fechaHora       = DateTime.Now;
            // marcar el punto como controlado en la ronda activa
            CntCN50.SetPointLastControl(p.puntoId, conn);
            //---------
            // comprobar si hay una ronda activa
            if (Estado.Ronda == null)
            {
                l.InAuto  = "INCIDENCIA";
                l.Leido   = p.nombre;
                l.ObsAuto = "No hay ninguna ronda activa. Realizar la lectura del Codigo de la ronda deseada.";
                MarcarControlado(Estado.Ronda, p);
                return(l);
            }
            // comprobar si el punto está en secuencia
            TRondaPunto rp = Estado.RondaPuntoEsperado;

            if (p.puntoId == rp.Punto.puntoId)
            {
                l.InAuto  = "CORRECTO";
                l.Leido   = p.nombre;
                l.ObsAuto = "Punto control [" + p.nombre + "] leido en secuencia correcta.";
                MarcarControlado(Estado.Ronda, p);
                // Verificar si es el último punto de la ronda
                return(UltimoEnRonda(l, p));
            }
            // comprobar si pertence a esa ronda
            bool enRonda  = false;
            bool repetido = false;

            for (int i = 0; i < Estado.Ronda.RondasPuntos.Count; i++)
            {
                rp = Estado.Ronda.RondasPuntos[i];
                if (rp.Punto.puntoId == p.puntoId)
                {
                    enRonda = true;
                    if (rp.Controlado)
                    {
                        repetido = true;
                    }
                }
            }
            MarcarControlado(Estado.Ronda, p);
            if (enRonda)
            {
                l.InAuto = "INCIDENCIA";
                l.Leido  = p.nombre;
                if (repetido)
                {
                    l.ObsAuto = "Punto repetido, ya ha leido este punto en la ronda. Pulsa <Volver> para realizar la lectura del Punto Control esperado [" + Estado.RondaPuntoEsperado.Punto.nombre + "]. Pulsar <Continuar> para seguir con la ronda desde el Punto Control leido.";
                    l.Status  = 4; // punto repetido
                }
                else
                {
                    l.ObsAuto = "Punto control leido pertenece a la ronda pero no se ha leido en el orden esperado. Pulsa <Volver> para realizar la lectura del Punto Control esperado [" + Estado.RondaPuntoEsperado.Punto.nombre + "]. Pulsar <Continuar> para seguir con la ronda desde el Punto Control leido.";
                    l.Status  = 1; // punto no en orden.
                }
                // puede que sea el último
                l = UltimoEnRonda(l, p);
            }
            else
            {
                l.InAuto  = "INCIDENCIA";
                l.Leido   = p.nombre;
                l.ObsAuto = "Punto control [" + p.nombre + "] leido NO pertenece a esta ronda.";
            }
            return(l);
        }