From 041c22bb520bcc707392147bf90108bb08d77b72 Mon Sep 17 00:00:00 2001 From: Fernando Erd <fcerd15@inf.ufpr.br> Date: Fri, 22 May 2020 09:46:21 -0300 Subject: [PATCH] Push to homologa function employees dims --- src/libs/routes/employees.js | 244 ++++++++++++++++++++++++++--------- 1 file changed, 182 insertions(+), 62 deletions(-) diff --git a/src/libs/routes/employees.js b/src/libs/routes/employees.js index 7d455e25..bd0d3b69 100644 --- a/src/libs/routes/employees.js +++ b/src/libs/routes/employees.js @@ -115,6 +115,18 @@ employeesApp.get('/rural_location', (req, res, next) => { next(); }, response('rural_location')); +employeesApp.get('/function', (req, res, next) => { + req.result = [ + {id: 1, name: "Urbana"}, + {id: 2, name: "Rural"}, + {id: 3, name: "Rural - Ãrea de assentamento"}, + {id: 4, name: "Rural - Terra indÃgena"}, + {id: 5, name: "Rural - Ãrea remanescente de quilombos"}, + {id: 6, name: "Rural - Unidade de uso sustentável"} + ]; + next(); +}, response('function')); + rqfSchool.addField({ name: 'filter', field: false, @@ -243,6 +255,16 @@ rqfSchool.addField({ type: 'integer', field: 'localidade_area_rural' } +}).addValue({ + name: 'function', + table: '@', + tableField: 'a', + resultField: 'function_id', + where: { + relation: '=', + type: 'integer', + field: 'a' + } }).addValue({ name: 'min_year', table: '@', @@ -425,6 +447,65 @@ rqfTeacher.addField({ } }); +function formatFunction(queryOriginal,reqDims) { + delete reqDims.size; + delete reqDims.function; + let dims = Object.keys(reqDims); //se for = 0, apenas lidamos com a dimensao function. Se for = 1, lidamos com function mais a dimensao q esta nesse array. + console.log(dims) + let name = { + qtde_admin: "Administrativos", + qtde_servicos_gerais: "Serviços Gerais", + qtde_bibliotecario: "Bibliotecário", + qtde_saude: "Saúde", + qtde_coordenador: "Coordenador", + qtde_fono: "Fonoaudiólogo", + qtde_nutricionista: "Nutricionista", + qtde_psicologo: "Psicólogo", + qtde_alimentacao: "Alimentação", + qtde_pedagogia: "Pedagogia", + qtde_secretario: "Secretário", + qtde_seguranca: "Segurança", + qtde_monitores: "Monitores" + } + let resultObj = [] + //Nesse caso apenas precisamos acertar as dimensoes que o banco retorna, ou seja, criando um objeto para cada funcao de funcionario + if (dims.length == 0) { + queryOriginal.forEach((result) => { + Object.keys(result).forEach(function(key,index) { + if (key.includes("qtde")) { + let newObj = { + year: result["year"], + function_id: index, + function_name: name[key], + total: result[key] + } + resultObj.push(newObj); + } + }) + }) + } + //Nesse caso precisamos copiar o id e name da variavel que está na dimensão junto com funcionarios por função + else { + queryOriginal.forEach((result) => { + Object.keys(result).forEach(function(key,index) { + if (key.includes("qtde")) { + let newObj = { + year: result["year"], + function_id: index, + function_name: name[key], + total: result[key] + } + newObj[dims[0] + "_id"] = result[dims[0] + "_id"]; + newObj[dims[0] + "_name"] = result[dims[0] + "_name"]; + resultObj.push(newObj); + } + }) + }) + } + + return resultObj; + +} function matchQueries(queryTotal, queryPartial) { let match = []; @@ -456,9 +537,11 @@ function matchQueries(queryTotal, queryPartial) { if(objMatch) { newObj.total = result.total - objMatch.total; - newObj.total_employees = result.total; - newObj.total_teachers = objMatch.total - match.push(newObj); + if (newObj.total > 0) { + newObj.total_employees = result.total; + newObj.total_teachers = objMatch.total + match.push(newObj); + } } }); @@ -469,79 +552,116 @@ employeesApp.get('/', rqfSchool.parse(), (req, res, next) => { req.allEmployees = {} req.allTeacher = {} req.schoolTable = {} - - if ("school" in req.filter) { - req.sql.field('SUM(escola.num_funcionarios)', 'total') - .field("'Brasil'", 'name') - .field('escola.ano_censo', 'year') - .from('escola') - .group('escola.ano_censo') - .order('escola.ano_censo') - .where('(escola.situacao_funcionamento_pareada = 1) AND (escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1) AND (dependencia_adm_id = 2 OR dependencia_adm_id = 3 OR dependencia_adm_id = 4) AND (escola.id=' + req.filter.school + ')'); - delete req.filter.school; - } else { - req.sql.field('SUM(escola.num_funcionarios)', 'total') - .field("'Brasil'", 'name') - .field('escola.ano_censo', 'year') - .from('escola') - .group('escola.ano_censo') - .order('escola.ano_censo') - .where('(escola.situacao_funcionamento_pareada = 1) AND (escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1) AND (dependencia_adm_id = 2 OR dependencia_adm_id = 3 OR dependencia_adm_id = 4)'); - } + delete req.dims.function; + if ("school" in req.filter) { + req.sql.field('SUM(escola.num_funcionarios)', 'total') + .field("'Brasil'", 'name') + .field('escola.ano_censo', 'year') + .from('escola') + .group('escola.ano_censo') + .order('escola.ano_censo') + .where('(escola.situacao_funcionamento_pareada = 1) AND (escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1) AND (dependencia_adm_id = 2 OR dependencia_adm_id = 3 OR dependencia_adm_id = 4) AND (escola.id=' + req.filter.school + ')'); + delete req.filter.school; + } else { + req.sql.field('SUM(escola.num_funcionarios)', 'total') + .field("'Brasil'", 'name') + .field('escola.ano_censo', 'year') + .from('escola') + .group('escola.ano_censo') + .order('escola.ano_censo') + .where('(escola.situacao_funcionamento_pareada = 1) AND (escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1) AND (dependencia_adm_id = 2 OR dependencia_adm_id = 3 OR dependencia_adm_id = 4)'); + } next(); }, rqfSchool.build(), query, rqfSchool.parse(), id2str.transform(), (req, res, next) => { req.allEmployees = req.result; - req.resetSql(); - if ("school" in req.filter) { - req.sql.field('SUM(docente_por_escola.total_professores)', 'total') - .field("'Brasil'", 'name') - .field('docente_por_escola.ano_censo', 'year') - .from('docente_por_escola') - .join('escola', null, 'docente_por_escola.escola_id=escola.id AND docente_por_escola.ano_censo=escola.ano_censo') - .group('docente_por_escola.ano_censo') - .order('docente_por_escola.ano_censo') - .where('(docente_por_escola.dependencia_adm_id > 1) AND (docente_por_escola.escola_id=' + req.filter.school + ')'); - } else if ("school" in req.dims) { - req.sql.field('SUM(docente_por_escola.total_professores)', 'total') - .field("'Brasil'", 'name') - .field('docente_por_escola.ano_censo', 'year') - .field('escola.nome_escola', 'school_name') - .from('docente_por_escola') - .join('escola', null, 'docente_por_escola.escola_id=escola.id AND docente_por_escola.ano_censo=escola.ano_censo') - .group('docente_por_escola.ano_censo') - .order('docente_por_escola.ano_censo') - .where('(docente_por_escola.dependencia_adm_id > 1)'); - } else { - req.sql.field('SUM(docente_por_escola.total_professores)', 'total') - .field("'Brasil'", 'name') - .field('docente_por_escola.ano_censo', 'year') - .from('docente_por_escola') - .group('docente_por_escola.ano_censo') - .order('docente_por_escola.ano_censo') - .where('(docente_por_escola.dependencia_adm_id > 1)'); - } + req.resetSql(); + delete req.dims.function; + if ("school" in req.filter) { + req.sql.field('SUM(docente_por_escola.total_professores)', 'total') + .field("'Brasil'", 'name') + .field('docente_por_escola.ano_censo', 'year') + .from('docente_por_escola') + .join('escola', null, 'docente_por_escola.escola_id=escola.id AND docente_por_escola.ano_censo=escola.ano_censo') + .group('docente_por_escola.ano_censo') + .order('docente_por_escola.ano_censo') + .where('(docente_por_escola.dependencia_adm_id > 1) AND (docente_por_escola.escola_id=' + req.filter.school + ')'); + } else if ("school" in req.dims) { + req.sql.field('SUM(docente_por_escola.total_professores)', 'total') + .field("'Brasil'", 'name') + .field('docente_por_escola.ano_censo', 'year') + .field('escola.nome_escola', 'school_name') + .from('docente_por_escola') + .join('escola', null, 'docente_por_escola.escola_id=escola.id AND docente_por_escola.ano_censo=escola.ano_censo') + .group('docente_por_escola.ano_censo') + .order('docente_por_escola.ano_censo') + .where('(docente_por_escola.dependencia_adm_id > 1)'); + } else { + req.sql.field('SUM(docente_por_escola.total_professores)', 'total') + .field("'Brasil'", 'name') + .field('docente_por_escola.ano_censo', 'year') + .from('docente_por_escola') + .group('docente_por_escola.ano_censo') + .order('docente_por_escola.ano_censo') + .where('(docente_por_escola.dependencia_adm_id > 1)'); + } next(); }, rqfSchool.build(), query, rqfSchool.parse(), id2str.transform(), (req, res, next) => { req.allTeacher = req.result; + console.log("AAA"); + console.log("BBB"); + console.log("DEI UM RESET") req.resetSql(); - req.sql.field('SUM(CASE WHEN escola.qt_prof_admin = 88888 THEN 0 ELSE escola.qt_prof_admin END) + SUM(CASE WHEN escola.qtde_prof_servicos_gerais = 88888 THEN 0 ELSE escola.qtde_prof_servicos_gerais END) + SUM(CASE WHEN escola.qtde_prof_bibliotecario = 88888 THEN 0 ELSE escola.qtde_prof_bibliotecario END) + SUM(CASE WHEN escola.qtde_prof_saude = 88888 THEN 0 ELSE escola.qtde_prof_saude END) + SUM(CASE WHEN escola.qtde_prof_coordenador = 88888 THEN 0 ELSE escola.qtde_prof_coordenador END) + SUM(CASE WHEN escola.qtde_prof_fono = 88888 THEN 0 ELSE escola.qtde_prof_fono END) + SUM(CASE WHEN escola.qtde_prof_nutricionista = 88888 THEN 0 ELSE escola.qtde_prof_nutricionista END) + SUM(CASE WHEN escola.qtde_prof_psicologo = 88888 THEN 0 ELSE escola.qtde_prof_psicologo END) + SUM(CASE WHEN escola.qtde_prof_alimentacao = 88888 THEN 0 ELSE escola.qtde_prof_alimentacao END) + SUM(CASE WHEN escola.qtde_prof_pedagogia = 88888 THEN 0 ELSE escola.qtde_prof_pedagogia END) + SUM(CASE WHEN escola.qtde_prof_secretario = 88888 THEN 0 ELSE escola.qtde_prof_secretario END) + SUM(CASE WHEN escola.qtde_prof_seguranca = 88888 THEN 0 ELSE escola.qtde_prof_seguranca END) + SUM(CASE WHEN escola.qtde_prof_monitores = 88888 THEN 0 ELSE escola.qtde_prof_monitores END)', 'total') - .field("'Brasil'", 'name') - .field('escola.ano_censo', 'year') - .from('escola') - .group('escola.ano_censo') - .order('escola.ano_censo') - .where('(escola.situacao_funcionamento_pareada = 1) AND (escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1) AND (escola.dependencia_adm_id = 2 OR escola.dependencia_adm_id = 3 OR escola.dependencia_adm_id = 4) and ano_censo >= 2019'); + console.log("VOU PRINTAR O REQ DIMS") + console.log(req.dims); + console.log(req.filter); + if ("function" in req.dims) { + console.log("TO NO IF"); + req.sql.field('SUM(CASE WHEN escola.qt_prof_admin = 88888 THEN 0 ELSE escola.qt_prof_admin END)', 'qtde_admin') + .field('SUM(CASE WHEN escola.qtde_prof_servicos_gerais = 88888 THEN 0 ELSE escola.qtde_prof_servicos_gerais END) AS qtde_servicos_gerais') + .field('SUM(CASE WHEN escola.qtde_prof_bibliotecario = 88888 THEN 0 ELSE escola.qtde_prof_bibliotecario END)', 'qtde_bibliotecario') + .field('SUM(CASE WHEN escola.qtde_prof_saude = 88888 THEN 0 ELSE escola.qtde_prof_saude END)','qtde_saude') + .field('SUM(CASE WHEN escola.qtde_prof_coordenador = 88888 THEN 0 ELSE escola.qtde_prof_coordenador END)','qtde_coordenador') + .field('SUM(CASE WHEN escola.qtde_prof_fono = 88888 THEN 0 ELSE escola.qtde_prof_fono END)','qtde_fono') + .field('SUM(CASE WHEN escola.qtde_prof_nutricionista = 88888 THEN 0 ELSE escola.qtde_prof_nutricionista END)', 'qtde_nutricionista') + .field('SUM(CASE WHEN escola.qtde_prof_psicologo = 88888 THEN 0 ELSE escola.qtde_prof_psicologo END)', 'qtde_psicologo') + .field('SUM(CASE WHEN escola.qtde_prof_alimentacao = 88888 THEN 0 ELSE escola.qtde_prof_alimentacao END)','qtde_alimentacao') + .field('SUM(CASE WHEN escola.qtde_prof_pedagogia = 88888 THEN 0 ELSE escola.qtde_prof_pedagogia END)', 'qtde_pedagogia') + .field('SUM(CASE WHEN escola.qtde_prof_secretario = 88888 THEN 0 ELSE escola.qtde_prof_secretario END)','qtde_secretario') + .field('SUM(CASE WHEN escola.qtde_prof_seguranca = 88888 THEN 0 ELSE escola.qtde_prof_seguranca END)','qtde_seguranca') + .field('SUM(CASE WHEN escola.qtde_prof_monitores = 88888 THEN 0 ELSE escola.qtde_prof_monitores END)', 'qtde_monitores') + .field("'Brasil'", 'name') + .field('escola.ano_censo', 'year') + .from('escola') + .group('escola.ano_censo') + .order('escola.ano_censo') + .where('(escola.situacao_funcionamento_pareada = 1) AND (escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1) AND (escola.dependencia_adm_id = 2 OR escola.dependencia_adm_id = 3 OR escola.dependencia_adm_id = 4) and ano_censo >= 2019'); + delete req.dims.function; + } else { + console.log("AAA to no if") + req.sql.field('SUM(CASE WHEN escola.qt_prof_admin = 88888 THEN 0 ELSE escola.qt_prof_admin END) + SUM(CASE WHEN escola.qtde_prof_servicos_gerais = 88888 THEN 0 ELSE escola.qtde_prof_servicos_gerais END) + SUM(CASE WHEN escola.qtde_prof_bibliotecario = 88888 THEN 0 ELSE escola.qtde_prof_bibliotecario END) + SUM(CASE WHEN escola.qtde_prof_saude = 88888 THEN 0 ELSE escola.qtde_prof_saude END) + SUM(CASE WHEN escola.qtde_prof_coordenador = 88888 THEN 0 ELSE escola.qtde_prof_coordenador END) + SUM(CASE WHEN escola.qtde_prof_fono = 88888 THEN 0 ELSE escola.qtde_prof_fono END) + SUM(CASE WHEN escola.qtde_prof_nutricionista = 88888 THEN 0 ELSE escola.qtde_prof_nutricionista END) + SUM(CASE WHEN escola.qtde_prof_psicologo = 88888 THEN 0 ELSE escola.qtde_prof_psicologo END) + SUM(CASE WHEN escola.qtde_prof_alimentacao = 88888 THEN 0 ELSE escola.qtde_prof_alimentacao END) + SUM(CASE WHEN escola.qtde_prof_pedagogia = 88888 THEN 0 ELSE escola.qtde_prof_pedagogia END) + SUM(CASE WHEN escola.qtde_prof_secretario = 88888 THEN 0 ELSE escola.qtde_prof_secretario END) + SUM(CASE WHEN escola.qtde_prof_seguranca = 88888 THEN 0 ELSE escola.qtde_prof_seguranca END) + SUM(CASE WHEN escola.qtde_prof_monitores = 88888 THEN 0 ELSE escola.qtde_prof_monitores END)', 'total') + .field("'Brasil'", 'name') + .field('escola.ano_censo', 'year') + .from('escola') + .group('escola.ano_censo') + .order('escola.ano_censo') + .where('(escola.situacao_funcionamento_pareada = 1) AND (escola.ensino_regular = 1 OR escola.ensino_eja = 1 OR escola.educacao_profissional = 1) AND (escola.dependencia_adm_id = 2 OR escola.dependencia_adm_id = 3 OR escola.dependencia_adm_id = 4) and ano_censo >= 2019'); + } next(); -}, rqfSchool.build(), query, id2str.transform(), (req, res, next) => { +}, rqfSchool.build(), query, rqfSchool.parse(), id2str.transform(), (req, res, next) => { + + console.log(req.dims) + if ("function" in req.dims) { + let aux_employes = formatFunction(req.result, req.dims); + req.schoolTable = aux_employes; + } else { + req.schoolTable = req.result + } - req.schoolTable = req.result; - console.log(req.schoolTable) - console.log("AAA"); if (req.filter.min_year <= 2018 && req.filter.max_year <= 2018) { let aux_employees = matchQueries(req.allEmployees, req.allTeacher); req.result = aux_employees; -- GitLab