diff --git a/src/libs/routes/spatial.js b/src/libs/routes/spatial.js index e56a1ab456f339107409e5a1e365b01f2a3e5f3c..77adc2ad8cdc59483ae45b2de27fb30204fed730 100644 --- a/src/libs/routes/spatial.js +++ b/src/libs/routes/spatial.js @@ -20,87 +20,6 @@ const spatialApp = express(); let rqf = new ReqQueryFields(); -function schoolYearIdToStr(schoolYearId) { - let schoolYearStr; - switch(schoolYearId) { - case 11: - schoolYearStr = 'Creche - Menor de 1 ano'; - break; - case 12: - schoolYearStr = 'Creche - 1 ano'; - break; - case 13: - schoolYearStr = 'Creche - 2 anos'; - break; - case 14: - schoolYearStr = 'Creche - 3 anos'; - break; - case 21: - schoolYearStr = 'Pré-escola - 4 anos'; - break; - case 22: - schoolYearStr = 'Pré-escola - 5 anos'; - break; - case 31: - schoolYearStr = 'Ens. Fundamental - 1º Ano'; - break; - case 32: - schoolYearStr = 'Ens. Fundamental - 1ª série/2º ano'; - break; - case 33: - schoolYearStr = 'Ens. Fundamental - 2ª série/3º ano'; - break; - case 34: - schoolYearStr = 'Ens. Fundamental - 3ª série/4º ano'; - break; - case 35: - schoolYearStr = 'Ens. Fundamental - 4ª série/5º Ano'; - break; - case 41: - schoolYearStr = 'Ens. Fundamental - 5ª série/6º ano'; - break; - case 42: - schoolYearStr = 'Ens. Fundamental - 6ª série/7º ano'; - break; - case 43: - schoolYearStr = 'Ens. Fundamental - 7ª série/8º ano'; - break; - case 44: - schoolYearStr = 'Ens. Fundamental - 8ª serie/9º ano'; - break; - case 51: - schoolYearStr = 'Ens. Médio - 1ª série'; // equivalent to 'EM 1 Série' - break; - case 52: - schoolYearStr = 'Ens. Médio - 2ª série'; // equivalent to 'EM 2 Série' - break; - case 53: - schoolYearStr = 'Ens. Médio - 3ª série'; // equivalent to 'EM 3 Série' - break; - case 54: - schoolYearStr = 'Ens. Médio - 4ª série'; // equivalent to 'EM 4 Série' - break; - case 61: - schoolYearStr = 'EJA - anos iniciais do Ens. Fundamental'; - break; - case 62: - schoolYearStr = 'EJA - anos finais do Ens. Fundamental'; - break; - case 63: - schoolYearStr = 'EJA - Ensino Médio'; - break; - case 64: - schoolYearStr = 'EJA semi-presencial'; - break; - case 71: - schoolYearStr = 'Educação Profissional'; - break; - default: - schoolYearStr = 'Não classificado'; - } - return schoolYearStr; -} - function processResultSet(querySet, querySetLabels = ["result"], singleResult = false) { const resultMap = new Map(); let resultIdx = 0; @@ -309,88 +228,54 @@ spatialApp.get('/educational', rqf.parse(), rqf.build(), (req, res, next) => { .order('escola.ano_censo') .order('dependencia_adm.nome'); - const schoolClassYearQry = squel.select() - .field('MAX(matricula.ano_censo)') - .from('matricula') - .toString(); - const enrollmentsQry = req.sql.clone() .field('\'Brasil\'', 'name') - .field('COALESCE(COUNT(matricula.id), 0)', 'total') - .field('matricula.ano_censo', 'census_year') - .from('matricula') - .where(`matricula.ano_censo IN (${schoolClassYearQry})`) - .where('matricula.tipo<=3') - .group('matricula.ano_censo'); + .field('COALESCE(SUM(uc201.matriculas), 0)', 'total') + .field('uc201.ano_censo', 'census_year') + .from('uc201') + .group('uc201.ano_censo'); const enrollmentsPerAdmDepQry = req.sql.clone() .field('\'Brasil\'', 'name') - .field('COALESCE(COUNT(matricula.id), 0)', 'total') - .field('matricula.ano_censo', 'census_year') + .field('COALESCE(SUM(uc201.matriculas), 0)', 'total') + .field('uc201.ano_censo', 'census_year') .field('dependencia_adm.nome', 'adm_dependency_name') .from('dependencia_adm') - .from('matricula') - .where('matricula.dependencia_adm_id=dependencia_adm.id') - .where('matricula.tipo <= 3') - .where(`matricula.ano_censo IN (${schoolClassYearQry})`) - .group('matricula.ano_censo') + .from('uc201') + .where('uc201.dependencia_adm_id=dependencia_adm.id') .group('dependencia_adm.nome') - .order('dependencia_adm.nome'); + .group('uc201.ano_censo'); const enrollmentsPerSchoolLevelQry = req.sql.clone() .field('\'Brasil\'', 'name') - .field('COALESCE(COUNT(matricula.id), 0)', 'total') - .field('matricula.ano_censo', 'census_year') + .field('COALESCE(SUM(uc201.matriculas), 0)', 'total') + .field('uc201.ano_censo', 'census_year') .field('etapa_ensino.desc_etapa', 'school_level_name') + .field('dependencia_adm.nome', 'adm_dependency_name') .from('etapa_ensino') - .from('matricula') - .where('matricula.etapa_ensino_id=etapa_ensino.id') - .where('matricula.tipo <= 3') - .where(`matricula.ano_censo IN (${schoolClassYearQry})`) - .group('matricula.ano_censo') + .from('dependencia_adm') + .from('uc201') + .where('uc201.etapas_mod_ensino_segmento_id=etapa_ensino.id') + .where('uc201.dependencia_adm_id=dependencia_adm.id') .group('etapa_ensino.desc_etapa') - .group('etapa_ensino.id') - .order('etapa_ensino.id'); + .group('dependencia_adm.nome') + .group('uc201.ano_censo'); const enrollmentsPerLocationQry = req.sql.clone() .field('\'Brasil\'', 'name') - .field('COALESCE(COUNT(matricula.id), 0)', 'total') - .field('matricula.ano_censo', 'census_year') + .field('COALESCE(SUM(uc201.matriculas), 0)', 'total') + .field('uc201.ano_censo', 'census_year') .field('localizacao.descricao', 'location_name') .from('localizacao') - .from('matricula') - .where('matricula.localizacao_id=localizacao.id') - .where('matricula.tipo <= 3') - .where(`matricula.ano_censo IN (${schoolClassYearQry})`) - .group('matricula.ano_censo') + .from('uc201') + .where('uc201.localizacao=localizacao.id') .group('localizacao.descricao') - .order('ano_censo') - .order('localizacao.descricao'); - - const enrollmentsPerSchoolLevelAndAdmDependencyQry = req.sql.clone() - .field('\'Brasil\'', 'name') - .field('COALESCE(COUNT(matricula.id), 0)', 'total') - .field('matricula.ano_censo', 'census_year') - .field('etapa_ensino.desc_etapa', 'school_level_name') - .field('dependencia_adm.nome', 'adm_dependency_name') - .from('etapa_ensino') - .from('dependencia_adm') - .from('matricula') - .where('matricula.etapa_ensino_id=etapa_ensino.id') - .where('matricula.dependencia_adm_id=dependencia_adm.id') - .where('matricula.tipo <= 3') - .where(`matricula.ano_censo IN (${schoolClassYearQry})`) - .group('matricula.ano_censo') - .group('etapa_ensino.desc_etapa') - .group('dependencia_adm.nome') - .order('matricula.ano_censo') - .order('etapa_ensino.desc_etapa') - .order('dependencia_adm.nome'); + .group('uc201.ano_censo'); const queryLabels = [ "school", "school_per_location", "school_per_adm_dependency", "enrollment", "enrollment_per_adm_dep", - "enrollment_per_school_level", "enrollment_per_location", "enrollment_per_school_level_adm_dependency" ]; + "enrollment_per_school_level", "enrollment_per_location" ]; const querySet = [ totalSchoolsQry, schoolsPerLocationQry, schoolsPerAdmDependencyQry, enrollmentsQry, - enrollmentsPerAdmDepQry, enrollmentsPerSchoolLevelQry, enrollmentsPerLocationQry, enrollmentsPerSchoolLevelAndAdmDependencyQry]; + enrollmentsPerAdmDepQry, enrollmentsPerSchoolLevelQry, enrollmentsPerLocationQry]; // wait until all queries finish or one of them fail Promise.all(dbExecAll(querySet)).then((queryResults) => { req.result = processResultSet(queryResults, queryLabels); @@ -407,7 +292,7 @@ spatialApp.get('/educational/school_level', rqf.parse(), rqf.build(), (req, res, .from('matricula'); const enrollmentsPerSchoolLevelQry = req.sql.clone() - .field('COALESCE(COUNT(matricula.id), 0)', 'total') + .field('COALESCE(SUM(matricula.id), 0)', 'total') .field('matricula.ano_censo', 'census_year') .field('matricula.serie_ano_id', 'school_year') .field('etapa_ensino.desc_etapa', 'school_level')