Skip to content
Snippets Groups Projects
Commit 28d06946 authored by lgtg20's avatar lgtg20
Browse files

feat: implement revenue conversion and update student revenue route

parent 3abfa1b8
Branches
No related tags found
3 merge requests!449Homologa,!444dev -> hom,!443Issue 975
/*
Copyright (C) 2024 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 regionCode(id) {
switch (id) {
case 1:
return 'Receitas';
case 2:
return 'Matrículas Públicas';
case 3:
return 'Matrículas Públicas Mais Conveniada';
case 4:
return 'Receita Aluno Ano Pública'
case 5:
return 'Receita Aluno Mês Pública';
case 6:
return 'Receita Aluno Ano Pública Mais Conveniada';
case 7:
return 'Receita Aluno Mês Pública Mais Conveniada';
}
};
...@@ -35,7 +35,8 @@ const convert = { ...@@ -35,7 +35,8 @@ const convert = {
contract_type_entity: 'contractType', contract_type_entity: 'contractType',
total_doc: "totalDoc", total_doc: "totalDoc",
education_degree_entity: "educationDegreeEntity", education_degree_entity: "educationDegreeEntity",
government_agreement: "governmentAgreement" government_agreement: "governmentAgreement",
receitas: "revenue"
} }
function aggregateData(req, res, next) { function aggregateData(req, res, next) {
...@@ -62,7 +63,8 @@ function aggregateData(req, res, next) { ...@@ -62,7 +63,8 @@ function aggregateData(req, res, next) {
'age_range_entity', 'age_range_entity',
'post_graduation_entity', 'post_graduation_entity',
'contract_type_entity', 'contract_type_entity',
'education_degree_entity' 'education_degree_entity',
'receitas'
] ]
let id; let id;
const fields = req.query.dims.split(','); const fields = req.query.dims.split(',');
...@@ -78,6 +80,7 @@ function aggregateData(req, res, next) { ...@@ -78,6 +80,7 @@ function aggregateData(req, res, next) {
for (const property in r) { for (const property in r) {
// Dados agregados são identificados com a substring 'total_' em sua chave // Dados agregados são identificados com a substring 'total_' em sua chave
if (property.includes('total_')) { if (property.includes('total_')) {
console.log(property);
let data = { let data = {
total: r[property], total: r[property],
year: r.year, year: r.year,
......
...@@ -126,6 +126,7 @@ const ageRangeEntity = require(`${libs}/convert/ageRangeEntity`); ...@@ -126,6 +126,7 @@ const ageRangeEntity = require(`${libs}/convert/ageRangeEntity`);
const postGraduationEntity = require(`${libs}/convert/postGraduationEntity`); const postGraduationEntity = require(`${libs}/convert/postGraduationEntity`);
const totalDoc = require(`${libs}/convert/totalDoc`); const totalDoc = require(`${libs}/convert/totalDoc`);
const educationDegreeEntity = require(`${libs}/convert/educationDegreeEntity`); const educationDegreeEntity = require(`${libs}/convert/educationDegreeEntity`);
const revenue = require(`${libs}/convert/revenue`);
const ids = { const ids = {
gender_id: gender, gender_id: gender,
...@@ -244,7 +245,8 @@ const ids = { ...@@ -244,7 +245,8 @@ const ids = {
post_graduation_entity: postGraduationEntity, post_graduation_entity: postGraduationEntity,
special_education_entity: specialEducationEntity, special_education_entity: specialEducationEntity,
total_doc: totalDoc, total_doc: totalDoc,
education_degree_entity: educationDegreeEntity education_degree_entity: educationDegreeEntity,
receitas_id: revenue
}; };
function transform(removeId=false) { function transform(removeId=false) {
...@@ -386,5 +388,6 @@ module.exports = { ...@@ -386,5 +388,6 @@ module.exports = {
postGraduationEntity, postGraduationEntity,
specialEducationEntity, specialEducationEntity,
totalDoc, totalDoc,
educationDegreeEntity educationDegreeEntity,
revenue
}; };
...@@ -32,6 +32,8 @@ const response = require(`${libs}/middlewares/response`); ...@@ -32,6 +32,8 @@ const response = require(`${libs}/middlewares/response`);
const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`); const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`);
const aggregateData = require(`${libs}/middlewares/aggregateData`);
const id2str = require(`${libs}/middlewares/id2str`); const id2str = require(`${libs}/middlewares/id2str`);
const config = require(`${libs}/config`); const config = require(`${libs}/config`);
...@@ -94,39 +96,15 @@ studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { ...@@ -94,39 +96,15 @@ studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
req.sql.from('receitas') req.sql.from('receitas')
.field('receitas.ano', 'year') .field('receitas.ano', 'year')
.field('receitas.receitas', 'total_receitas') .field('receitas.receitas', 'total_receitas')
} .field('matriculas_publica', 'total_matriculas_publica')
if (req.query.dims && req.query.dims.includes('matriculas_publicas')) { .field('matriculas_publicas_mais_conveniada', 'total_matriculas_publicas_mais_conveniada')
req.sql.from('receitas') .field('receuta_aluno_ano_publica', 'total_receita_aluno_ano_publica')
.field('receitas.ano', 'year') .field('receita_aluno_mes_publica', 'total_receita_aluno_mes_publica')
.field('matriculas_publica', 'matriculas_publica_total') .field('receita_aluno_ano_publica_mais_conveniada', 'total_receita_aluno_ano_publica_mais_conveniada')
} .field('receita_aluno_mes_publica_mais_conveniada', 'total_receita_aluno_mes_publica_mais_conveniada')
if (req.query.dims && req.query.dims.includes('matriculas_publicas_mais_conveniada')) {
req.sql.from('receitas')
.field('receitas.ano', 'year')
.field('matriculas_publicas_mais_conveniada', 'matriculas_publicas_mais_conveniada_total')
}
if (req.query.dims && req.query.dims.includes('receita_aluno_ano_publica')) {
req.sql.from('receitas')
.field('receitas.ano', 'year')
.field('receuta_aluno_ano_publica', 'receita_aluno_ano_publica_total')
}
if (req.query.dims && req.query.dims.includes('receita_aluno_mes_publica')) {
req.sql.from('receitas')
.field('receitas.ano', 'year')
.field('receita_aluno_mes_publica', 'receita_aluno_mes_publica_total')
}
if (req.query.dims && req.query.dims.includes('receita_aluno_ano_publica_mais_conveniada')) {
req.sql.from('receitas')
.field('receitas.ano', 'year')
.field('receita_aluno_ano_publica_mais_conveniada', 'receita_aluno_ano_publica_mais_conveniada_total')
}
if (req.query.dims && req.query.dims.includes('receita_aluno_mes_publica_mais_conveniada')) {
req.sql.from('receitas')
.field('receitas.ano', 'year')
.field('receita_aluno_mes_publica_mais_conveniada', 'receita_aluno_mes_publica_mais_conveniada_total')
} }
next(); next();
}, query, id2str.transform(false), response('student_revenue')); }, query, aggregateData, id2str.transform(false), response('student_revenue'));
module.exports = studentRevenueApp; module.exports = studentRevenueApp;
...@@ -538,7 +538,7 @@ PnadNovoApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { ...@@ -538,7 +538,7 @@ PnadNovoApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
req.sql.from('pnad_novo') req.sql.from('pnad_novo')
.field('pnad_novo.ano_ref', 'year') .field('pnad_novo.ano_ref', 'year')
.field('media.media_anos_estudo', 'mean') .field('media.media_anos_estudo', 'average')
.field('SQRT(SUM(POWER(pnad_novo.anos_de_estudo - media.media_anos_estudo, 2) * pnad_novo.peso_domicilio_pessoas_com_cal) / SUM(pnad_novo.peso_domicilio_pessoas_com_cal))', 'std_dev') .field('SQRT(SUM(POWER(pnad_novo.anos_de_estudo - media.media_anos_estudo, 2) * pnad_novo.peso_domicilio_pessoas_com_cal) / SUM(pnad_novo.peso_domicilio_pessoas_com_cal))', 'std_dev')
.join(mean, 'media', joinQuery) .join(mean, 'media', joinQuery)
.where('pnad_novo.ano_ref >= 2019 AND pnad_novo.faixa_etaria >= 6 AND pnad_novo.anos_de_estudo <> 99') .where('pnad_novo.ano_ref >= 2019 AND pnad_novo.faixa_etaria >= 6 AND pnad_novo.anos_de_estudo <> 99')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment