From 86dfdb2a9e1a7613994bd37ec5f8f81f2bb6f5c9 Mon Sep 17 00:00:00 2001 From: tgcl21 <tgcl21@inf.ufpr.br> Date: Tue, 28 Jan 2025 11:02:48 -0300 Subject: [PATCH] Docentes com deficiencia undefined --- docker-compose.yml | 11 ++ entrypoint.sh | 5 + gulpfile.template.js | 20 ++++ src/libs/convert/fullAgeRangeIES.js | 40 +++++++ src/libs/middlewares/aggregateData.js | 23 +++- src/libs/middlewares/id2str.js | 3 + src/libs/routes_v1/iesTeachers.js | 164 ++++++++++++++++++++++---- 7 files changed, 234 insertions(+), 32 deletions(-) create mode 100644 docker-compose.yml create mode 100644 entrypoint.sh create mode 100644 gulpfile.template.js create mode 100644 src/libs/convert/fullAgeRangeIES.js diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..85266ff9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +services: + simcaq-node: + container_name: simcaq-node + build: . + ports: + - '3000:3000' + develop: + watch: + - action: sync + path: . + target: /API diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 00000000..04db5192 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/bash +echo "Starting simcaq-node" +gulp watch &> /dev/null & +cd build +NODE_ENV=production gulp run diff --git a/gulpfile.template.js b/gulpfile.template.js new file mode 100644 index 00000000..3de679df --- /dev/null +++ b/gulpfile.template.js @@ -0,0 +1,20 @@ +const gulp = require('gulp'); + +const nodemon = require('gulp-nodemon'); + +gulp.task('run', () => { + // process.chdir('build'); + nodemon({ + script: 'server.js', + // tasks: ['watch'], + ignore: ["test/test.js", "gulpfile.babel.js"], + ext: 'js html json', + env: { 'NODE_ENV': process.env.NODE_ENV } + }); +}); + +gulp.task('default', () => { + console.log("Não execuatar apenas gulp, execute da forma:"); + console.log("\t\tgulp <task>"); +}); + diff --git a/src/libs/convert/fullAgeRangeIES.js b/src/libs/convert/fullAgeRangeIES.js new file mode 100644 index 00000000..558c513c --- /dev/null +++ b/src/libs/convert/fullAgeRangeIES.js @@ -0,0 +1,40 @@ +/* +Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR + +This file is part of simcaq-node. + +simcaq-node is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +simcaq-node is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with simcaq-node. If not, see <https://www.gnu.org/licenses/>. +*/ + +module.exports = function ageRangeIES(id) { + switch (id) { + case 1: + return 'até 29 anos'; + case 2: + return 'de 30 a 34 anos'; + case 3: + return 'de 35 a 39 anos'; + case 4: + return 'de 40 a 44 anos'; + case 5: + return 'de 45 a 49 anos'; + case 6: + return 'de 50 a 54 anos'; + case 7: + return 'de 55 a 59 anos'; + case 8: + return 'de 60 anos ou mais'; + } +}; diff --git a/src/libs/middlewares/aggregateData.js b/src/libs/middlewares/aggregateData.js index eed373dd..5f2e2de9 100644 --- a/src/libs/middlewares/aggregateData.js +++ b/src/libs/middlewares/aggregateData.js @@ -14,6 +14,7 @@ const convert = { region: 'regionCode', state: 'stateName', age_range: 'ageRangeAggregate', + age_range_ies: 'ageRangeIES', gender: 'gender', ethnic_group: 'ethnicGroup', education_level_mod_agg: 'educationLevelModAgg', @@ -35,7 +36,9 @@ const convert = { contract_type_entity: 'contractType', total_doc: "totalDoc", education_degree_entity: "educationDegreeEntity", - government_agreement: "governmentAgreement" + government_agreement: "governmentAgreement", + work_regime: "workRegime", + teacher_schooling: "teacherSchooling", } function aggregateData(req, res, next) { @@ -43,7 +46,8 @@ function aggregateData(req, res, next) { const newResult = [] const aggregateFields = [ 'gender', - 'age_range', + 'age_range', + 'age_range_ies', 'ethnic_group', 'education_level_mod_agg', 'education_level_mod_doc', @@ -62,16 +66,19 @@ function aggregateData(req, res, next) { 'age_range_entity', 'post_graduation_entity', 'contract_type_entity', - 'education_degree_entity' + 'education_degree_entity', + 'work_regime', + 'teacher_schooling' ] let id; const fields = req.query.dims.split(','); let currentAggregateField; let currentNonAggregateField; - + // Verifica se o filtro passado está presente nos filtros agregados fields.forEach(field => {if (aggregateFields.includes(field)) currentAggregateField = field; else currentNonAggregateField = field}); if (currentAggregateField) { + console.log(currentNonAggregateField) req.result.forEach((r) => { // Alguns filtros começam com o id = 0 outros id = 1 id = ['ethnic_group', 'integral_time_agg'].includes(currentAggregateField) ? 0 : 1; @@ -84,9 +91,13 @@ function aggregateData(req, res, next) { [`${currentAggregateField}_id`]: id, [`${currentAggregateField}_name`]: id2str[convert[currentAggregateField]](id) } - - if (currentNonAggregateField) { + + if(currentNonAggregateField == 'university'){ data[`${currentNonAggregateField}_id`] = r[`${currentNonAggregateField}_id`]; + data[`${currentNonAggregateField}_name`] = r[`${currentNonAggregateField}_name`]; + } + else if (currentNonAggregateField) { + data[`${currentNonAggregateField}_id`] = data[`${currentNonAggregateField}_id`]; data[`${currentNonAggregateField}_name`] = id2str[convert[currentNonAggregateField]](r[`${currentNonAggregateField}_id`]); } diff --git a/src/libs/middlewares/id2str.js b/src/libs/middlewares/id2str.js index f366d90a..8f559421 100644 --- a/src/libs/middlewares/id2str.js +++ b/src/libs/middlewares/id2str.js @@ -42,6 +42,7 @@ const stateName = require(`${libs}/convert/stateName`); const contractType = require(`${libs}/convert/contractType`); const ethnicGroupPnad = require(`${libs}/convert/ethnicGroupPnad`); const ageRange = require(`${libs}/convert/ageRange`); +const ageRangeIES = require(`${libs}/convert/fullAgeRangeIES`); const ageRangeAll = require(`${libs}/convert/ageRangeAll`); const ageStudentCode = require(`${libs}/convert/ageStudentCode`); const fullAgeRange = require(`${libs}/convert/fullAgeRange`); @@ -161,6 +162,7 @@ const ids = { contract_type_id: contractType, ethnic_group_pnad_id: ethnicGroupPnad, age_range_id: ageRange, + age_range_ies_id: ageRangeIES, age_range_all_id: ageRangeAll, age_range_aggregate_id: ageRangeAggregate, full_age_range_id: fullAgeRange, @@ -309,6 +311,7 @@ module.exports = { contractType, ethnicGroupPnad, ageRange, + ageRangeIES, ageRangeAggregate, ageRangeAll, ageStudentCode, diff --git a/src/libs/routes_v1/iesTeachers.js b/src/libs/routes_v1/iesTeachers.js index b8eabacd..7a644b72 100644 --- a/src/libs/routes_v1/iesTeachers.js +++ b/src/libs/routes_v1/iesTeachers.js @@ -32,6 +32,8 @@ const response = require(`${libs}/middlewares/response`); const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`); +const aggregateData = require(`${libs}/middlewares/aggregateData`); + const id2str = require(`${libs}/middlewares/id2str`); const config = require(`${libs}/config`); @@ -48,18 +50,16 @@ iesTeachers.get('/years', (req, res, next) => { next(); }, query, response('years')); -iesTeachers.get('/qtd_doc_ex_com_deficiencia', (req, res, next) => { - req.sql.from('docente_ies_agregado') - .field('sum(docente_ies_agregado.qtd_doc_ex_com_deficiencia)', 'total') - .field('docente_ies_agregado.ano_censo', 'year') - .field('docente_ies_agregado.nome_ies', 'university_name') - .field('docente_ies_agregado.cod_ies', 'university_id') - .group('docente_ies_agregado.cod_ies') - .group('docente_ies_agregado.nome_ies') - .group('docente_ies_agregado.ano_censo') - .order('docente_ies_agregado.ano_censo') +iesTeachers.get('/academic_organization', (req, res, next) => { + req.result = []; + for(let i = 1; i <= 5; ++i) { + req.result.push({ + id: i, + name: id2str.academicOrganization(i) + }); + }; next(); -}, query, response('qt_doc_ex_com_deficiencia')); +}, response('academic_organization')); rqf.addField({ name: 'filter', @@ -194,14 +194,14 @@ rqf.addField({ field: 'qtd_doc_ex_indigena' } }).addValue({ - name: 'qtd_doc_ex_com_deficiencia', + name: 'teacher_def', table: 'docente_ies_agregado', tableField: 'qtd_doc_ex_com_deficiencia', resultField: 'qtd_doc_ex_com_deficiencia', where: { relation: '=', type: 'integer', - field: 'qtd_doc_ex_com_deficiencia' + field: 'cod_ies' } }).addValue({ name: 'qtd_doc_ex_0_29', @@ -454,13 +454,14 @@ rqf.addField({ field: 'qtd_doc_ex_est' } }).addValue({ - name: 'tipo_org_acad', + name: 'academic_organization', table: 'docente_ies_agregado', tableField: 'tipo_org_acad', - resultField: 'tipo_org_acad', + resultField: 'academic_organization_id', where: { relation: '=', type: 'integer', + table: 'docente_ies_agregado', field: 'tipo_org_acad' } }).addValue({ @@ -516,17 +517,128 @@ rqf.addField({ }); iesTeachers.get('/', rqf.parse(), rqf.build(), (req, res, next) => { - req.sql.from('docente_ies_agregado') - .field('sum(docente_ies_agregado.qtd_doc_exe)', 'total') - .field('docente_ies_agregado.ano_censo', 'year') - .field('docente_ies_agregado.cod_ies', 'university_id') - .field('docente_ies_agregado.nome_ies', 'university_name') - .group('docente_ies_agregado.ano_censo') - .group('docente_ies_agregado.cod_ies') - .group('docente_ies_agregado.nome_ies') - .order('docente_ies_agregado.ano_censo') - console.log(req.sql.toString()) + if ("university" in req.dims) { + if (req.query.dims && req.query.dims.includes('teacher_def')) { + req.sql.from('docente_ies_agregado') + .field('SUM(docente_ies_agregado.qtd_doc_ex_com_deficiencia)', 'total') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .group('docente_ies_agregado.ano_censo') + .order('docente_ies_agregado.ano_censo') + } + else if (req.query.dims && req.query.dims.includes('gender')) + { + req.sql.from('docente_ies_agregado') + .field('SUM(docente_ies_agregado.qtd_doc_ex_masc)', 'total_masc') + .field('SUM(docente_ies_agregado.qtd_doc_ex_fem)', 'total_fem') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.ano_censo') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .order('docente_ies_agregado.ano_censo') + } else if(req.query.dims && req.query.dims.includes('age_range_ies')) + { + req.sql.from('docente_ies_agregado') + .field('SUM(docente_ies_agregado.qtd_doc_ex_0_29)', 'total_0_29') + .field('SUM(docente_ies_agregado.qtd_doc_ex_30_34)', 'total_30_34') + .field('SUM(docente_ies_agregado.qtd_doc_ex_35_39)', 'total_35_39') + .field('SUM(docente_ies_agregado.qtd_doc_ex_40_44)', 'total_40_44') + .field('SUM(docente_ies_agregado.qtd_doc_ex_45_49)', 'total_45_49') + .field('SUM(docente_ies_agregado.qtd_doc_ex_50_54)', 'total_50_54') + .field('SUM(docente_ies_agregado.qtd_doc_ex_55_59)', 'total_55_59') + .field('SUM(docente_ies_agregado.qtd_doc_ex_60_mais)', 'qtd_doc_ex_60_mais') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.ano_censo') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .order('docente_ies_agregado.ano_censo') + } else if(req.query.dims && req.query.dims.includes('ethnic_group')){ + req.sql.from('docente_ies_agregado') + .field('SUM(docente_ies_agregado.qtd_doc_ex_cor_nd)', 'total_nd') + .field('SUM(docente_ies_agregado.qtd_doc_ex_branca)', 'total_branca') + .field('SUM(docente_ies_agregado.qtd_doc_ex_preta)', 'total_preta') + .field('SUM(docente_ies_agregado.qtd_doc_ex_parda)', 'total_parda') + .field('SUM(docente_ies_agregado.qtd_doc_ex_amarela)', 'total_amarela') + .field('SUM(docente_ies_agregado.qtd_doc_ex_indigena)', 'total_indigena') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.ano_censo') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .order('docente_ies_agregado.ano_censo') + }else if(req.query.dims && req.query.dims.includes('teacher_schooling')){ + req.sql.from('docente_ies_agregado') + .field('SUM(docente_ies_agregado.qtd_doc_ex_sem_grad)', 'total_sem_grad') + .field('SUM(docente_ies_agregado.qtd_doc_ex_grad)', 'total_grad') + .field('SUM(docente_ies_agregado.qtd_doc_ex_esp)', 'total_esp') + .field('SUM(docente_ies_agregado.qtd_doc_ex_mest)', 'total_mest') + .field('SUM(docente_ies_agregado.qtd_doc_ex_dout)', 'total_dout') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.ano_censo') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .order('docente_ies_agregado.ano_censo') + }else if(req.query.dims && req.query.dims.includes('academic_organization')){ + req.sql.from('docente_ies_agregado') + .field('SUM(docente_ies_agregado.qtd_doc_exe)', 'total') + .field('docente_ies_agregado.tipo_org_acad', 'org_acad') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.ano_censo') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .group('docente_ies_agregado.tipo_org_acad') + .order('docente_ies_agregado.ano_censo') + }else if(req.query.dims && req.query.dims.includes('work_regime')){ + req.sql.from('docente_ies_agregado') + .field('SUM(docente_ies_agregado.qtd_doc_exe)', 'total') + .field('SUM(docente_ies_agregado.qtd_doc_ex_int)', 'total_tempo_integral') + .field('SUM(docente_ies_agregado.qtd_doc_ex_de)', 'total_de') + .field('SUM(docente_ies_agregado.qtd_doc_ex_int_sem_de)', 'total_tempo_integral_sem_de') + .field('SUM(docente_ies_agregado.qtd_doc_ex_parc)', 'total_tempo_parcial') + .field('SUM(docente_ies_agregado.qtd_doc_ex_hor)', 'total_horista') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.ano_censo') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .group('docente_ies_agregado.tipo_org_acad') + .order('docente_ies_agregado.ano_censo') + } + else { + req.sql.from('docente_ies_agregado') + .field('sum(docente_ies_agregado.qtd_doc_exe)', 'total') + .field('docente_ies_agregado.ano_censo', 'year') + .field('docente_ies_agregado.cod_ies', 'university_id') + .field('docente_ies_agregado.nome_ies', 'university_name') + .group('docente_ies_agregado.ano_censo') + .group('docente_ies_agregado.cod_ies') + .group('docente_ies_agregado.nome_ies') + .order('docente_ies_agregado.ano_censo') + console.log(req.sql.toString()) + } + next(); + } + else { + res.status(400); + next({ + status: 400, + message: 'Wrong/No filter specified' + }); + } next(); -}, query, id2str.transform(false), response('docente_ies_agregado')); +}, query, aggregateData, id2str.transform(false), response('teacher_ies')); module.exports = iesTeachers; -- GitLab