/* * Steven Camacho B * 27/06/2019 * Metodo que redirecciona a la pantalla donde se realiza el mantenimiento preventivo de un activo * se activa cuando se presiona el boton de mantenimiento */ protected void btnMantenimiento_Click(object sender, EventArgs e) { int idActivo = Convert.ToInt32((((LinkButton)(sender)).CommandArgument).ToString()); List <ActivoPlanPreventivo> listaPlan = (List <ActivoPlanPreventivo>)Session["listaPlanFiltrada"]; ActivoPlanPreventivo activoPlan = new ActivoPlanPreventivo(); foreach (ActivoPlanPreventivo activo in listaPlan) { if (activo.Placa == idActivo) { activoPlan = activo; break; } } Activo enviarActivo = new Activo(); enviarActivo.Placa = activoPlan.Placa; Session["activoMantenimiento"] = enviarActivo; Session["procedencia"] = "mantenimientoPreventivo"; String url = Page.ResolveUrl("~/Catalogos/MantenimientosCorrectivos/NuevoMantenimientoCorrectivo.aspx"); Response.Redirect(url); }
}//guardarListaPlan /// <summary> /// Steven Camacho /// 17/06/2019 /// Efecto: devuelve una lista con todos los activos en orden de prioridad, tomando en cuenta solo último mantenimiento en caso de tenerlo. /// Devuelve: lista de activos procesados para realizar mantenimiento. /// </summary> public List <ActivoPlanPreventivo> obtenerListaActivoPorPrioridad() { conexion.Close(); List <ActivoPlanPreventivo> listaActivos = new List <ActivoPlanPreventivo>(); SqlCommand sqlCommand = new SqlCommand("select a.placa,m.fecha,e.id_edificio,u.numero_aula from activo a " + "left join mantenimiento m " + "on a.placa = m.placa_activo and year(m.fecha)>= year(getdate())-2 and m.es_correctivo=0 " + "left join ubicacion u " + "on m.id_ubicacion = u.id_ubicacion " + "left join edificio e " + "on e.id_edificio = u.id_edificio " + "where a.placa not in(select placa_activo from mantenimiento where id_ubicacion=1) " + "order by m.fecha ,e.id_edificio,u.numero_aula", conexion); SqlDataReader reader; conexion.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { ActivoPlanPreventivo activoNuevo = new ActivoPlanPreventivo(); activoNuevo.Placa = Int32.Parse(reader.GetValue(0).ToString()); foreach (var activo in listaActivos) { if (activoNuevo.Placa == activo.Placa) { listaActivos.Remove(activo); break; } } listaActivos.Add(activoNuevo); } conexion.Close(); return(listaActivos); }//obtenerListaActivoPorPrioridad
}//obtenerListaActivoPorPrioridad /// <summary> /// Steven Camacho /// 17/06/2019 /// Efecto: devuelve una lista con todos los elementos del plan de mantenimiento preventivo, tomando los diferentes datos de una consulta de varias tablas /// Devuelve: lista de activos plan preventivo. /// </summary> public List <ActivoPlanPreventivo> obtenerTodo() { List <ActivoPlanPreventivo> listaActivos = new List <ActivoPlanPreventivo>(); SqlCommand sqlCommand = new SqlCommand("" + "select p.placa_activo,a.descripcion,f.nombre,e.nombre,u.numero_aula,p.mes,m.fecha,m.es_correctivo " + "from Propuesta_Mantenimiento_Preventivo p " + "join Activo a on a.placa=p.placa_activo and p.esta_aprovado=0 " + "left join Mantenimiento m on m.placa_activo=p.placa_activo and m.id_mantenimiento= " + "(select Top 1 id_mantenimiento from Mantenimiento ma " + "where ma.placa_activo= p.placa_activo " + "order by id_mantenimiento desc ) " + "left join Funcionario f on f.id=m.id_funcionario " + "left join Ubicacion u on u.id_ubicacion=m.id_ubicacion " + "left join Edificio e on e.id_edificio= u.id_edificio " + "where p.placa_activo not in(select placa_activo from mantenimiento where es_correctivo=0 " + "and id_plan= (select top(1) id_plan from [plan] Order By id_plan desc)) and " + "p.id_plan =(select top(1) id_plan from [plan] Order By id_plan desc ) " + "order by p.mes asc", conexion); SqlDataReader reader; conexion.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { ActivoPlanPreventivo activoNuevo = new ActivoPlanPreventivo(); activoNuevo.Placa = Int32.Parse(reader.GetValue(0).ToString()); activoNuevo.Equipo = reader.GetValue(1).ToString(); activoNuevo.Funcionario = reader.GetValue(2).ToString(); activoNuevo.Edificio = reader.GetValue(3).ToString(); activoNuevo.Ubicacion = reader.GetValue(4).ToString(); activoNuevo.MesPropuesto = Int32.Parse(reader.GetValue(5).ToString()); string fechaMantenimiento = reader.GetValue(6).ToString(); if (fechaMantenimiento == "") { activoNuevo.UltimoMantenimiento = ""; } else { activoNuevo.UltimoMantenimiento = (DateTime.Parse(fechaMantenimiento)).ToShortDateString(); } String es_correctivo = reader.GetValue(7).ToString(); if (es_correctivo == "True") { es_correctivo = "Correctivo"; } else if (es_correctivo == "False") { es_correctivo = "Preventivo"; } else { es_correctivo = "Sin Mantenimiento"; } activoNuevo.Es_correctivo = es_correctivo; listaActivos.Add(activoNuevo); } conexion.Close(); return(listaActivos); }
/// <summary> /// Steven Camacho /// 16/06/1019 /// Clase que genera la información que se incluirá respecto al plan preventivo anual de activos /// Modifica la tabla del plan preventivo, asociando activos con meses determinados en base a último mantenimiento, edificio y mes. /// </summary> public bool generarPlanPreventivo() { if (!planPreventivoDatos.existePlanVigente()) { List <ActivoPlanPreventivo> listaActivos = planPreventivoDatos.obtenerListaActivoPorPrioridad(); double totalActivos = listaActivos.Count(); //determina la cantidad total de activos que entrarán en el plan de mantenimeinto. double activosPorMes = Math.Ceiling(totalActivos / 10); //determina la cantidad de activos a revisar por mes. int contador = 0; int numMes = 2; //empieza en el mes de febrero la asignación. List <ActivoPlanPreventivo> listaPlanActivos = new List <ActivoPlanPreventivo>(); foreach (var activo in listaActivos) { if (contador == activosPorMes) { numMes += 1; contador = 0; } ActivoPlanPreventivo nuevoActivoPlan = new ActivoPlanPreventivo(); nuevoActivoPlan.Placa = activo.Placa; nuevoActivoPlan.MesPropuesto = numMes; listaPlanActivos.Add(nuevoActivoPlan); contador++; } planPreventivoDatos.guardarListaPlan(listaPlanActivos); return(true); } return(false); }//Metodo Generar Plan