public static TPunto GetTPunto(int id, SqlCeConnection conn) { TPunto p = null; using (SqlCeCommand cmd = conn.CreateCommand()) { string sql = @"SELECT p.puntoId, p.nombre, p.edificioId, p.tag, p.cota, p.cubiculo, p.observaciones, e.nombre AS enombre, e.grupoId, g.nombre AS gnombre, p.csnmax, p.csnmargen, p.lastcontrol FROM puntos AS p LEFT OUTER JOIN edificios AS e ON e.edificioId = p.edificioId LEFT OUTER JOIN grupos AS g ON g.grupoId = e.grupoId WHERE p.puntoId= {0}"; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText = String.Format(sql, id); using (SqlCeDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { p = GetPuntoFromDr(dr); } if (!dr.IsClosed) { dr.Close(); } } } return(p); }
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; } } }
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); }
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; } } }
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); }
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; }
public static TPunto GetPuntoFromDr(SqlCeDataReader dr) { TGrupo g = new TGrupo(); TEdificio e = new TEdificio(); TPunto p = new TPunto(); p.puntoId = dr.GetInt32(0); p.nombre = dr.GetString(1); e.edificioId = dr.GetInt32(2); p.tag = dr.GetString(3); p.cota = dr.GetString(4); p.cubiculo = dr.GetString(5); p.observaciones = dr.GetString(6); e.nombre = dr.GetString(7); g.grupoId = dr.GetInt32(8); g.nombre = dr.GetString(9); p.csnmax = dr.GetInt32(10); p.csnmargen = dr.GetInt32(11); p.lastcontrol = dr.GetDateTime(12); return p; }
public static TPunto GetPuntoFromDr(SqlCeDataReader dr) { TGrupo g = new TGrupo(); TEdificio e = new TEdificio(); TPunto p = new TPunto(); p.puntoId = dr.GetInt32(0); p.nombre = dr.GetString(1); e.edificioId = dr.GetInt32(2); p.tag = dr.GetString(3); p.cota = dr.GetString(4); p.cubiculo = dr.GetString(5); p.observaciones = dr.GetString(6); e.nombre = dr.GetString(7); g.grupoId = dr.GetInt32(8); g.nombre = dr.GetString(9); p.csnmax = dr.GetInt32(10); p.csnmargen = dr.GetInt32(11); p.lastcontrol = dr.GetDateTime(12); return(p); }
public static Lectura ComprobarTag(string tag) { SqlCeConnection conn = CntCN50.TSqlConnection(); CntCN50.TOpen(conn); // comprobamos si el tag corresponde a un vigilante TVigilante v = CntCN50.GetVigilanteFromTag(tag, conn); if (v != null) { CntCN50.TClose(conn); return(LeidoVigilante(v, tag)); } // comprobamos si es una ronda TRonda r = CntCN50.GetRondaFromTag(tag, conn); if (r != null) { CntCN50.TClose(conn); return(LeidaRonda(r, tag)); } // comprobamos si es punto TPunto p = CntCN50.GetPuntoFromTag(tag, conn); if (p != null) { CntCN50.TClose(conn); return(LeidoPunto(p, tag)); } // cierre manual de ronda if (tag == "*99*") { return(FinRondaManual(tag)); } // desconocido CntCN50.TClose(conn); return(TagDesconocido(tag)); }
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; }
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; }
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); }
private void mnuCancelar_Click(object sender, EventArgs e) { // salvamos la descarga y el status TDescargaLinea dl = this.lec.DescargaLinea; int status = this.lec.Status; // grabamos incidencias y observaciones if (cmbIncidencias.SelectedItem != null) dl.incidenciaId = ((TIncidencia)cmbIncidencias.SelectedItem).incidenciaId; dl.observaciones = txtObsMan.Text; if (status != 2) { // siempre se graba si le dan continuar // excepto en ronda mal leida (status 2) SqlCeConnection conn = CntCN50.TSqlConnection(); CntCN50.TOpen(conn); CntCN50.SetDescargaLinea(dl, conn); CntCN50.TClose(conn); // controlamos que se ha leido un final de ronda pero quedaban puntos sin controlar if (status == 3) { // no hay que hacer nada, ya tiene como punto siguiente el último no controlado. } if (status == 1) { // punto fuera de secuencia pero en la ronda // hay que desmarcarlo como leido (Issue #SGUARD-63) if (dl.tipo == "PUNTO") { TPunto p = new TPunto(); p.puntoId = dl.tipoId; CntLecturas.DesmarcarControlado(Estado.Ronda, p); } } } else { // el status es 2 y hay que recuperar los datos de la ronda anterior. Estado.Ronda = Estado.Ronda2; Estado.RondaPuntoEsperado = Estado.RondaPuntoEsperado2; Estado.Orden = Estado.Orden2; } LeerCodigo lc = new LeerCodigo(); lc.Show(); this.Close(); }