udistrital / polux_cliente

Cliente angular del proyecto Polux
0 stars 0 forks source link

Ajustar scripts de SQL para generación de reportes. #709

Closed diagutierrezro closed 1 month ago

diagutierrezro commented 2 months ago

Se requiere realizar un ajuste en los scripts SQL de reportes para que en estos no se "quemen" los IDS de consulta y en su lugar se usen los códigos de abreviación. Una vez se realice este ajuste, verificar la lógica en el MID y realizar ajustes en caso de ser necesario.

Sub Tareas

Criterios de aceptación

Dependencias

Está pendiente por parte de @diagutierrezro solicitar hacia los DBA un script para llenar la columna del código de abreviación teniendo en cuenta los ids actuales.

Requerimientos

No aplica

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

CrisEs2506 commented 2 months ago

SubTarea N°1: Ajustar scripts SQL en el CRUD.

Se han modificado las consultas SQL de los modelos 'reporte_general.go' y 'reporte_solicitud.go' respectivamente:

  1. WITH estudiantes AS (
            SELECT
                trabajo_grado,
                MAX(CASE WHEN row_number = 1 THEN estudiante ELSE NULL END) AS id_estudiante,
                MAX(CASE WHEN row_number = 2 THEN estudiante ELSE NULL END) AS id_coestudiante
            FROM (
                SELECT
                    trabajo_grado,
                    estudiante,
                    ROW_NUMBER() OVER (PARTITION BY trabajo_grado ORDER BY estudiante) AS row_number
                FROM
                    academica.estudiante_trabajo_grado
            ) sub
            GROUP BY
                trabajo_grado
        ),
        usuarios AS (
            SELECT
                trabajo_grado,
                MAX(CASE WHEN codigo_abreviacion = 'DIRECTOR_PLX' THEN usuario ELSE NULL END) AS docente_director,
                MAX(CASE WHEN codigo_abreviacion = 'CODIRECTOR_PLX' THEN usuario ELSE NULL END) AS docente_codirector,
                MAX(CASE WHEN codigo_abreviacion = 'EVALUADOR_PLX' THEN usuario ELSE NULL END) AS evaluador
            FROM
                academica.vinculacion_trabajo_grado
            GROUP BY
                trabajo_grado
        ),
        notas AS (
            SELECT
                trabajo_grado,
                MAX(CASE WHEN row_number = 1 THEN calificacion ELSE NULL END) AS nota2,
                MAX(CASE WHEN row_number = 2 THEN calificacion ELSE NULL END) AS nota1
            FROM (
                SELECT
                    trabajo_grado,
                    calificacion,
                    ROW_NUMBER() OVER (PARTITION BY trabajo_grado ORDER BY calificacion) AS row_number
                FROM
                    academica.asignatura_trabajo_grado
            ) sub
            GROUP BY
                trabajo_grado
        )
    
        SELECT
            tg.id AS trabajo_grado,
            tg.titulo,
            tg.modalidad,
            tg.estado_trabajo_grado,
            est.id_estudiante,
            est.id_coestudiante,
            atg.area_conocimiento,
            usr.docente_director,
            usr.docente_codirector,
            usr.evaluador,
            (SELECT MAX(fecha_creacion)
             FROM academica.asignatura_trabajo_grado atg
             WHERE atg.trabajo_grado = tg.id
             AND atg.codigo_asignatura = 2) 
            AS fecha_inicio,
            (SELECT MAX(fecha_modificacion)
             FROM academica.asignatura_trabajo_grado atg
             WHERE atg.trabajo_grado = tg.id
             AND atg.codigo_asignatura = 2
             AND atg.calificacion > 0) 
            AS fecha_fin,
            notas.nota1 AS calificacion_1,
            notas.nota2 AS calificacion_2
        FROM
            academica.trabajo_grado tg
        LEFT JOIN
            estudiantes est ON tg.id = est.trabajo_grado
        LEFT JOIN
            academica.areas_trabajo_grado atg ON tg.id = atg.trabajo_grado
        LEFT JOIN
            academica.vinculacion_trabajo_grado vtg ON tg.id = vtg.trabajo_grado
        LEFT JOIN
            usuarios usr ON tg.id = usr.trabajo_grado
        LEFT JOIN
            notas ON tg.id = notas.trabajo_grado
        GROUP BY
            tg.id, tg.titulo, tg.modalidad, tg.estado_trabajo_grado, est.id_estudiante, est.id_coestudiante, atg.area_conocimiento, usr.docente_director, usr.docente_codirector, usr.evaluador, notas.nota1, notas.nota2
        ORDER BY
            tg.id DESC`
  2. WITH estudiantes AS (
            SELECT
                trabajo_grado,
                MAX(CASE WHEN row_number = 1 THEN estudiante ELSE NULL END) AS id_estudiante,
                MAX(CASE WHEN row_number = 2 THEN estudiante ELSE NULL END) AS id_coestudiante
            FROM (
                SELECT
                    trabajo_grado,
                    estudiante,
                    ROW_NUMBER() OVER (PARTITION BY trabajo_grado ORDER BY estudiante) AS row_number
                FROM
                    academica.estudiante_trabajo_grado
            ) sub
            GROUP BY
                trabajo_grado
        ),
        usuarios AS (
            SELECT
                trabajo_grado,
                MAX(CASE WHEN codigo_abreviacion = 'DIRECTOR_PLX' THEN usuario ELSE NULL END) AS docente_director,
                MAX(CASE WHEN codigo_abreviacion = 'CODIRECTOR_PLX' THEN usuario ELSE NULL END) AS docente_codirector,
                MAX(CASE WHEN codigo_abreviacion = 'EVALUADOR_PLX' THEN usuario ELSE NULL END) AS evaluador
            FROM
                academica.vinculacion_trabajo_grado
            GROUP BY
                trabajo_grado
        )
    
        SELECT 
            stg.id,
            stg.trabajo_grado,
            tg.titulo,
            mts.modalidad,
            tg.estado_trabajo_grado,
            e.id_estudiante,
            e.id_coestudiante,
            u.docente_director,
            u.docente_codirector,
            u.evaluador,
            stg.fecha AS fecha_solicitud,
            rs.fecha AS fecha_revision,
            mts.tipo_solicitud,
            rs.justificacion,
            rs.estado_solicitud
        FROM 
            academica.solicitud_trabajo_grado stg
        JOIN 
            academica.modalidad_tipo_solicitud mts
            ON stg.modalidad_tipo_solicitud = mts.id
        JOIN 
            academica.trabajo_grado tg
            ON stg.trabajo_grado = tg.id
        LEFT JOIN 
            academica.respuesta_solicitud rs
            ON stg.id = rs.solicitud_trabajo_grado
        LEFT JOIN 
            estudiantes e
            ON stg.trabajo_grado = e.trabajo_grado
        LEFT JOIN 
            usuarios u
            ON stg.trabajo_grado = u.trabajo_grado
        ORDER BY
            stg.id DESC
CrisEs2506 commented 2 months ago

SubTarea N°3: Comprobar funcionamiento correcto del sistema.

  1. Reporte General:

ReporteGeneral.xlsx

  1. Reporte Solicitud:

ReporteSolicitud.xlsx

diagutierrezro commented 1 month ago

Los reportes se socializaron con el usuario, falta desarrollar la vista para obtenerlos, buen trabajo Cristian