Fix Error: Se modifica el código para que el monitor emita el sonido de pase a la consulta cada 30s

This commit is contained in:
2025-07-02 14:52:07 +02:00
parent 938dbde0c3
commit c2cd5d9672
3 changed files with 39 additions and 12 deletions
+22 -2
View File
@@ -7,13 +7,12 @@ load_dotenv()
app = Flask(__name__) app = Flask(__name__)
def obtener_turnos(): def obtener_turnos():
conn = get_connection() conn = get_connection()
if not conn: if not conn:
return [] return []
try: try:
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute("SELECT CONS_ESTAD.CODIGO_IMPRESION CONSULTA, CONS_ESTAD.ESTADO_ID ESTADO_CONSULTA, TM.CODIGO_TURNO TURNO, TM.ESTADO_ID ESTADO_TURNO FROM CSMK_TURNO_MON TM, (SELECT ROW_NUMBER() OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO, CSMK_ESTANCIA ESTANCIA WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID AND ESTANCIA.MONITOR_ID = 3 ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) CONS_ESTAD WHERE CONS_ESTAD.RN = 1 AND TM.ESTANCIA_ID = CONS_ESTAD.ESTANCIA_ID AND TM.MONITOR_ID = CONS_ESTAD.MONITOR_ID AND TM.ESTADO_ID IN (1,2) AND TM.FECHA = TRUNC(SYSDATE) ORDER BY CONSULTA ASC") cursor.execute("SELECT CONS_ESTAD.CODIGO_IMPRESION CONSULTA, CONS_ESTAD.ESTADO_ID ESTADO_CONSULTA, TM.CODIGO_TURNO TURNO, TM.ESTADO_ID ESTADO_TURNO FROM CSMK_TURNO_MON TM, (SELECT ROW_NUMBER() OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO, CSMK_ESTANCIA ESTANCIA WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID AND ESTANCIA.MONITOR_ID = 12 ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) CONS_ESTAD WHERE CONS_ESTAD.RN = 1 AND TM.ESTANCIA_ID = CONS_ESTAD.ESTANCIA_ID AND TM.MONITOR_ID = CONS_ESTAD.MONITOR_ID AND TM.ESTADO_ID IN (1,2) AND TM.FECHA = TRUNC(SYSDATE) ORDER BY CONSULTA ASC")
datos = cursor.fetchall() datos = cursor.fetchall()
cursor.close() cursor.close()
conn.close() conn.close()
@@ -22,6 +21,22 @@ def obtener_turnos():
print(f"Error al conectar: {e}") print(f"Error al conectar: {e}")
return None return None
def obtener_pie():
conn = get_connection()
if not conn:
return []
try:
cursor = conn.cursor()
cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID = 12 AND INACTIVO = 0 ORDER BY MONITOR_PIE_ID ASC")
mensajes = [fila[0] for fila in cursor.fetchall()]
mensaje_final = " ".join(mensajes)
cursor.close()
conn.close()
return mensaje_final
except Exception as e:
print(f"Error al conectar: {e}")
return None
@app.route('/') @app.route('/')
def index(): def index():
return render_template("index.html") return render_template("index.html")
@@ -31,5 +46,10 @@ def api_datos():
filas = obtener_turnos() filas = obtener_turnos()
return jsonify(filas) return jsonify(filas)
@app.route('/api/footer')
def api_pie():
mensaje = obtener_pie()
return jsonify(mensaje)
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True) app.run(debug=True)
+13 -6
View File
@@ -7,6 +7,14 @@ function cargarTabla() {
.then(filas => { .then(filas => {
const tbody = document.getElementById("turnos"); const tbody = document.getElementById("turnos");
tbody.innerHTML = ""; tbody.innerHTML = "";
let sizeClass ="";
if (filas.length <= 7){
sizeClass ="text-7xl px-4 py-2";
} else {
sizeClass ="text-5xl px-3 py-1"
}
filas.forEach(fila => { filas.forEach(fila => {
const id = fila[0]; const id = fila[0];
@@ -14,7 +22,7 @@ function cargarTabla() {
const td1 = document.createElement("td"); const td1 = document.createElement("td");
td1.textContent = fila[0]; td1.textContent = fila[0];
td1.className = "border px-4 py-2 bg-[#114b94] align-middle"; td1.className = `border bg-[#114b94] align-middle ${sizeClass}`;
tr.appendChild(td1); tr.appendChild(td1);
const td2 = document.createElement("td"); const td2 = document.createElement("td");
@@ -24,18 +32,17 @@ function cargarTabla() {
if (estadoConsulta == 0) { if (estadoConsulta == 0) {
td2.textContent = "-"; td2.textContent = "-";
td2.className = "border px-4 py-2 bg-[#a9a9a9] align-middle"; td2.className = `border bg-[#a9a9a9] align-middle ${sizeClass}`;
} else if (estadoConsulta == 1) { } else if (estadoConsulta == 1) {
td2.textContent = fila[2]; td2.textContent = fila[2];
if (estadoTurno == 1) { if (estadoTurno == 1) {
sonido.play(); td2.className = `border blink-yellow align-middle ${sizeClass}`;
td2.className = "border px-4 py-2 blink-yellow align-middle";
} else { } else {
td2.className = "border px-4 py-2 bg-[#0a6eb2] align-middle"; td2.className = `border bg-[#0a6eb2] align-middle ${sizeClass}`;
} }
} else { } else {
td2.textContent = fila[2]; td2.textContent = fila[2];
td2.className = "border px-4 py-2 bg-[#a9a9a9] align-middle"; td2.className = `border bg-[#a9a9a9] align-middle ${sizeClass}`;
} }
if (estadoAnterior[id] === 2 && estadoTurno === 1) { if (estadoAnterior[id] === 2 && estadoTurno === 1) {
+2 -2
View File
@@ -27,13 +27,13 @@
<th class="border px-4 py-2 bg-[#0a6eb2]">TURNO</th> <th class="border px-4 py-2 bg-[#0a6eb2]">TURNO</th>
</tr> </tr>
</thead> </thead>
<tbody id="turnos" class="text-7xl"> <tbody id="turnos">
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<footer class="w-full bg-[#008968] overflow-hidden h-14"> <footer class="w-full bg-[#008968] overflow-hidden h-14">
<div id="footer-text" class="whitespace-nowrap animate-scroll px-4 text-white"></div> <div id="footer-text" class="text-4xl whitespace-nowrap animate-scroll px-4 text-white"></div>
</footer> </footer>
</body> </body>
</html> </html>