From 6715b10064373b49d846c3e4bc6a6161e74102bd Mon Sep 17 00:00:00 2001 From: Nei Jobson Date: Sat, 26 Mar 2022 17:20:27 -0300 Subject: [PATCH] =?UTF-8?q?Vers=C3=A3o=201.5.0=20final=20para=20publica?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 +- sei/web/modulos/utilidades/README.md | 13 +- .../bi_scripts/ExtracaoDados_historico.sql | 227 ++++++++++++++++++ .../ExtracaoDados_tempo_executado.sql | 109 +++++++++ .../ExtracaoDados_tempo_pendente.sql | 56 +++++ 5 files changed, 410 insertions(+), 8 deletions(-) create mode 100644 sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_historico.sql create mode 100644 sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_executado.sql create mode 100644 sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_pendente.sql diff --git a/README.md b/README.md index e0e75d9..2435862 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,16 @@ 9. Após a execução com sucesso, com um usuário com permissão de Administrador no SEI, seguir os passos dispostos no tópico "Orientações Negociais" mais abaixo. ## Orientações Negociais -1. Imediatamente após a instalação com sucesso, com usuário com permissão de "Administrador" do SEI, acessar os menus de administração do Módulo pelo seguinte caminho: Administração > Controle de Desempenho. -2. O script de banco do SIP já cria todos os Recursos e Menus e os associam automaticamente ao Perfil "Básico" ou ao Perfil "Administrador". +1. NÃO ESCOPO DO MÓDULO, até a v1.5.0: + - Ainda não foi implementada a integração para envio de dados à API sobre PGDs disponibilizada pelo Ministério da Economia. + - O módulo ainda não possui menu/tela com relatórios para acompanhamento geral de cada membro Participante sobre Períodos de execução passados, sendo necessário implementar solução de BI própria para ter uma visão geral do acompanhamento do desempenho, especialmente sobre Períodos anteriores ao Período atual. + - Para Período atual, no menu Controle de Desempenho > Distribuição é possível realizar filtragem por "Membro Participante" e acompanhar os dados sobre "Total de Tempo Executado no Período", "Carga Horária Padrão no Período" e "Carga Horária Distribuída no Período". + - Até disponibilizarmos menu/tela com relatórios para acompanhamento geral de cada membro Participante sobre Períodos de execução passados, na pasta "bi_scripts" disponibilizamos três arquivos sql para extração de dados para uso em ferramenta de BI da instituição: "ExtracaoDados_historico.sql", "ExtracaoDados_tempo_executado.sql" e "ExtracaoDados_tempo_pendente.sql". +2. Imediatamente após a instalação com sucesso, com usuário com permissão de "Administrador" do SEI, acessar os menus de administração do Módulo pelo seguinte caminho: Administração > Controle de Desempenho. +3. O script de banco do SIP já cria todos os Recursos e Menus e os associam automaticamente ao Perfil "Básico" ou ao Perfil "Administrador". - O script de banco do SIP também cria o Perfil "Gestor de Controle de Desempenho" e associa os Recursos e Menus correspondentes. O mencionado Perfil deve ser concedido aos Gestores de Controle de Desempenho indicados em Administração > Controle de Desempenho > Tipos de Controle de Desempenho. - Independente da criação de outros Perfis, os recursos indicados para o Perfil "Básico" ou "Administrador" devem manter correspondência com os Perfis dos Usuários internos que utilizarão o Módulo e dos Usuários Administradores do Módulo. - Tão quanto ocorre com as atualizações do SEI, versões futuras deste Módulo continuarão a atualizar e criar Recursos e associá-los apenas aos Perfis "Básico", "Administrador" e "Gestor de Controle de Desempenho". - Todos os recursos do Módulo iniciam pelo sufix **"md_utl_"**. -3. Acesse no link a seguir o Manual de Administração [http://bit.ly/Manual_SEI_Mod_Utilidades_Admin](http://bit.ly/Manual_SEI_Mod_Utilidades_Admin "Clique e acesse") -4. Acesse no link a seguir o Manual do Usuário Interno: [http://bit.ly/Manual_SEI_Mod_Utilidades_Usuario](http://bit.ly/Manual_SEI_Mod_Utilidades_Usuario "Clique e acesse") \ No newline at end of file +4. Acesse no link a seguir o Manual de Administração: Ainda em construção +5. Acesse no link a seguir o Manual do Usuário Interno: Ainda em construção \ No newline at end of file diff --git a/sei/web/modulos/utilidades/README.md b/sei/web/modulos/utilidades/README.md index e0e75d9..2435862 100644 --- a/sei/web/modulos/utilidades/README.md +++ b/sei/web/modulos/utilidades/README.md @@ -36,11 +36,16 @@ 9. Após a execução com sucesso, com um usuário com permissão de Administrador no SEI, seguir os passos dispostos no tópico "Orientações Negociais" mais abaixo. ## Orientações Negociais -1. Imediatamente após a instalação com sucesso, com usuário com permissão de "Administrador" do SEI, acessar os menus de administração do Módulo pelo seguinte caminho: Administração > Controle de Desempenho. -2. O script de banco do SIP já cria todos os Recursos e Menus e os associam automaticamente ao Perfil "Básico" ou ao Perfil "Administrador". +1. NÃO ESCOPO DO MÓDULO, até a v1.5.0: + - Ainda não foi implementada a integração para envio de dados à API sobre PGDs disponibilizada pelo Ministério da Economia. + - O módulo ainda não possui menu/tela com relatórios para acompanhamento geral de cada membro Participante sobre Períodos de execução passados, sendo necessário implementar solução de BI própria para ter uma visão geral do acompanhamento do desempenho, especialmente sobre Períodos anteriores ao Período atual. + - Para Período atual, no menu Controle de Desempenho > Distribuição é possível realizar filtragem por "Membro Participante" e acompanhar os dados sobre "Total de Tempo Executado no Período", "Carga Horária Padrão no Período" e "Carga Horária Distribuída no Período". + - Até disponibilizarmos menu/tela com relatórios para acompanhamento geral de cada membro Participante sobre Períodos de execução passados, na pasta "bi_scripts" disponibilizamos três arquivos sql para extração de dados para uso em ferramenta de BI da instituição: "ExtracaoDados_historico.sql", "ExtracaoDados_tempo_executado.sql" e "ExtracaoDados_tempo_pendente.sql". +2. Imediatamente após a instalação com sucesso, com usuário com permissão de "Administrador" do SEI, acessar os menus de administração do Módulo pelo seguinte caminho: Administração > Controle de Desempenho. +3. O script de banco do SIP já cria todos os Recursos e Menus e os associam automaticamente ao Perfil "Básico" ou ao Perfil "Administrador". - O script de banco do SIP também cria o Perfil "Gestor de Controle de Desempenho" e associa os Recursos e Menus correspondentes. O mencionado Perfil deve ser concedido aos Gestores de Controle de Desempenho indicados em Administração > Controle de Desempenho > Tipos de Controle de Desempenho. - Independente da criação de outros Perfis, os recursos indicados para o Perfil "Básico" ou "Administrador" devem manter correspondência com os Perfis dos Usuários internos que utilizarão o Módulo e dos Usuários Administradores do Módulo. - Tão quanto ocorre com as atualizações do SEI, versões futuras deste Módulo continuarão a atualizar e criar Recursos e associá-los apenas aos Perfis "Básico", "Administrador" e "Gestor de Controle de Desempenho". - Todos os recursos do Módulo iniciam pelo sufix **"md_utl_"**. -3. Acesse no link a seguir o Manual de Administração [http://bit.ly/Manual_SEI_Mod_Utilidades_Admin](http://bit.ly/Manual_SEI_Mod_Utilidades_Admin "Clique e acesse") -4. Acesse no link a seguir o Manual do Usuário Interno: [http://bit.ly/Manual_SEI_Mod_Utilidades_Usuario](http://bit.ly/Manual_SEI_Mod_Utilidades_Usuario "Clique e acesse") \ No newline at end of file +4. Acesse no link a seguir o Manual de Administração: Ainda em construção +5. Acesse no link a seguir o Manual do Usuário Interno: Ainda em construção \ No newline at end of file diff --git a/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_historico.sql b/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_historico.sql new file mode 100644 index 0000000..e25464e --- /dev/null +++ b/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_historico.sql @@ -0,0 +1,227 @@ +SELECT + id_historico, + id_procedimento as id_protocolo, + id_fila, + id_tipo_controle, + id_unidade, + id_usuario, + id_usuario_distribuicao, + min(id_triagem) as id_triagem, + min(id_analise) as id_analise, + min(id_avaliacao) as id_avaliacao, + min(id_contestacao) as id_contestacao, + min(id_analise) as id_tarefa_analise, + min(id_acao) as id_acao, + cast(min(dth_atual) as datetime) as dth_atual, + min(id_atendimento) as id_atendimento, + tipo_acao as "Tipo Ação", + detalhe as Detalhe, + dth_prazo_tarefa, + sta_atendimento_dsmp, + sin_ultima_fila, + sin_ultimo_responsavel, + id_ajuste_prazo, + cast(dth_final as datetime) as dth_final, + sin_acao_concluida, + sta_atribuido, + tempo_execucao, + sta_tipo_presenca, + tempo_de_execucao_atribuido, + percentual_desempenho, + sta_tipo_presenca_participacao, + fator_desemp_diferenciado, + sta_tipo_jornada, + fator_reducao_jornada, + sum(pontos_ganhos) as pontos_ganhos, + sum(pontos_pendentes) as pontos_pendentes, + tipo_historico +FROM ( +SELECT DISTINCT + hist_controle_dsmp.id_md_utl_hist_controle_dsmp as id_historico, + hist_controle_dsmp.id_procedimento, + hist_controle_dsmp.id_md_utl_adm_fila as id_fila, + hist_controle_dsmp.id_unidade, + hist_controle_dsmp.id_usuario, + hist_controle_dsmp.id_usuario_distribuicao, + hist_controle_dsmp.id_md_utl_adm_tp_ctrl_desemp as id_tipo_controle, + hist_controle_dsmp.id_md_utl_triagem as id_triagem, + hist_controle_dsmp.id_md_utl_analise as id_analise, + hist_controle_dsmp.id_md_utl_revisao as id_avaliacao, + hist_controle_dsmp.id_md_utl_contest_revisao as id_contestacao, + if(hist_controle_dsmp.tipo_acao = 'Triagem' + ,hist_controle_dsmp.id_md_utl_triagem + ,if(hist_controle_dsmp.tipo_acao = 'Análise' + ,hist_controle_dsmp.id_md_utl_analise + ,if(hist_controle_dsmp.tipo_acao = 'Avaliação' + ,hist_controle_dsmp.id_md_utl_revisao + ,if(hist_controle_dsmp.tipo_acao like 'Contestação%' + ,hist_controle_dsmp.id_md_utl_contest_revisao + ,null + ) + ) + ) + ) as id_acao, + cast(hist_controle_dsmp.dth_atual as datetime) as dth_atual, + hist_controle_dsmp.id_atendimento, + hist_controle_dsmp.tipo_acao, + hist_controle_dsmp.detalhe, + cast(hist_controle_dsmp.dth_prazo_tarefa as datetime) as dth_prazo_tarefa, + hist_controle_dsmp.sta_atendimento_dsmp, + hist_controle_dsmp.sin_ultima_fila, + hist_controle_dsmp.sin_ultimo_responsavel, + hist_controle_dsmp.id_md_utl_ajuste_prazo as id_ajuste_prazo, + cast(hist_controle_dsmp.dth_final as datetime) as dth_final, + hist_controle_dsmp.sin_acao_concluida, + hist_controle_dsmp.sta_atribuido, + + #campos que mudam se for RO, DS ou HM. + hist_controle_dsmp.tempo_execucao, + hist_controle_dsmp.sta_tipo_presenca, + hist_controle_dsmp.tempo_de_execucao_atribuido, + hist_controle_dsmp.percentual_desempenho, + + #Participação + adm_hist_prm_gr_usu.sta_tipo_presenca as sta_tipo_presenca_participacao, + adm_hist_prm_gr_usu.fator_desemp_diferenciado, + adm_hist_prm_gr_usu.sta_tipo_jornada, + adm_hist_prm_gr_usu.fator_reducao_jornada, + + #Pontos Ganhos + case + when hist_controle_dsmp.tipo_acao = 'Triagem' then utl_triagem.tempo_de_execucao_atribuido + when hist_controle_dsmp.tipo_acao = 'Análise' then utl_analise.tempo_de_execucao_atribuido + when hist_controle_dsmp.tipo_acao = 'Avaliação' then utl_revisao.tempo_de_execucao_atribuido + when hist_controle_dsmp.tipo_acao = 'Avaliação' + and hist_controle_dsmp.detalhe in ('Retornar para Correção pelo mesmo Participante','Retornar para Correção por outro Participante na mesma Fila','Retornar para Correção por outro Participante') then -utl_revisao.tempo_de_execucao_atribuido + else 0 + end as pontos_ganhos, + + # Pontos Pentendes + 0 as pontos_pendentes, + + 'Passado' as tipo_historico +FROM prod_sei3.md_utl_hist_controle_dsmp hist_controle_dsmp +LEFT JOIN prod_sei3.md_utl_adm_tp_ctrl_desemp adm_tp_ctrl_desemp on adm_tp_ctrl_desemp.id_md_utl_adm_tp_ctrl_desemp = hist_controle_dsmp.id_md_utl_adm_tp_ctrl_desemp +LEFT JOIN prod_sei3.md_utl_adm_hist_prm_gr_usu adm_hist_prm_gr_usu on (adm_hist_prm_gr_usu.id_md_utl_adm_prm_gr = adm_tp_ctrl_desemp.id_md_utl_adm_prm_gr and adm_hist_prm_gr_usu.id_usuario = hist_controle_dsmp.id_usuario) +LEFT JOIN prod_sei3.md_utl_triagem utl_triagem on utl_triagem.id_md_utl_triagem = hist_controle_dsmp.id_md_utl_triagem +LEFT JOIN prod_sei3.md_utl_analise utl_analise on utl_analise.id_md_utl_analise = hist_controle_dsmp.id_md_utl_analise +LEFT JOIN prod_sei3.md_utl_revisao utl_revisao on utl_revisao.id_md_utl_revisao = hist_controle_dsmp.id_md_utl_revisao +WHERE + 1=1 + and hist_controle_dsmp.id_usuario not in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38) #usuários automáticos + and hist_controle_dsmp.id_md_utl_adm_tp_ctrl_desemp is not null + and hist_controle_dsmp.id_md_utl_adm_fila is not null + and cast(adm_hist_prm_gr_usu.dth_inicial as datetime) <= cast(hist_controle_dsmp.dth_atual as datetime) + and cast(if(isnull(adm_hist_prm_gr_usu.dth_final),now(),adm_hist_prm_gr_usu.dth_final) as datetime) >= cast(hist_controle_dsmp.dth_atual as datetime) + $(varMaxDate) +UNION +SELECT DISTINCT + hist_controle_dsmp.id_md_utl_controle_dsmp as id_historico, + hist_controle_dsmp.id_procedimento, + hist_controle_dsmp.id_md_utl_adm_fila as id_fila, + hist_controle_dsmp.id_unidade, + hist_controle_dsmp.id_usuario, + hist_controle_dsmp.id_usuario_distribuicao, + hist_controle_dsmp.id_md_utl_adm_tp_ctrl_desemp as id_tipo_controle, + hist_controle_dsmp.id_md_utl_triagem as id_triagem, + hist_controle_dsmp.id_md_utl_analise as id_analise, + hist_controle_dsmp.id_md_utl_revisao as id_avaliacao, + hist_controle_dsmp.id_md_utl_contest_revisao as id_contestacao, + if(hist_controle_dsmp.tipo_acao = 'Triagem' + ,hist_controle_dsmp.id_md_utl_triagem + ,if(hist_controle_dsmp.tipo_acao = 'Análise' + ,hist_controle_dsmp.id_md_utl_analise + ,if(hist_controle_dsmp.tipo_acao = 'Avaliação' + ,hist_controle_dsmp.id_md_utl_revisao + ,if(hist_controle_dsmp.tipo_acao like 'Contestação%' + ,hist_controle_dsmp.id_md_utl_contest_revisao + ,null + ) + ) + ) + ) as id_acao, + cast(hist_controle_dsmp.dth_atual as datetime) as dth_atual, + hist_controle_dsmp.id_atendimento, + hist_controle_dsmp.tipo_acao, + hist_controle_dsmp.detalhe, + cast(hist_controle_dsmp.dth_prazo_tarefa as datetime) as dth_prazo_tarefa, + hist_controle_dsmp.sta_atendimento_dsmp, + null as sin_ultima_fila, + null as sin_ultimo_responsavel, + hist_controle_dsmp.id_md_utl_ajuste_prazo as id_ajuste_prazo, + null as dth_final, + null as sin_acao_concluida, + hist_controle_dsmp.sta_atribuido, + + #campos que mudam se for RO, DS ou HM. + hist_controle_dsmp.tempo_execucao, + hist_controle_dsmp.sta_tipo_presenca as sta_tipo_presenca_participacao, + hist_controle_dsmp.tempo_de_execucao_atribuido, + hist_controle_dsmp.percentual_desempenho, + + #Participação + adm_hist_prm_gr_usu.sta_tipo_presenca, + adm_hist_prm_gr_usu.fator_desemp_diferenciado, + adm_hist_prm_gr_usu.sta_tipo_jornada, + adm_hist_prm_gr_usu.fator_reducao_jornada, + + #Pontos Ganhos + case + when hist_controle_dsmp.tipo_acao = 'Triagem' then utl_triagem.tempo_de_execucao_atribuido + when hist_controle_dsmp.tipo_acao = 'Análise' then utl_analise.tempo_de_execucao_atribuido + when hist_controle_dsmp.tipo_acao = 'Avaliação' then utl_revisao.tempo_de_execucao_atribuido + when hist_controle_dsmp.tipo_acao = 'Avaliação' + and hist_controle_dsmp.detalhe in ('Retornar para Correção pelo mesmo Participante','Retornar para Correção por outro Participante na mesma Fila','Retornar para Correção por outro Participante') then -utl_revisao.tempo_de_execucao_atribuido + else 0 + end as pontos_ganhos, + + # Pontos Pentendes + case + when hist_controle_dsmp.sta_atendimento_dsmp in (4,10) and hist_controle_dsmp.tipo_acao = 'Retriagem' then hist_controle_dsmp.tempo_de_execucao_atribuido + when hist_controle_dsmp.sta_atendimento_dsmp in (10) and hist_controle_dsmp.tipo_acao <> 'Retriagem' then utl_analise.tempo_de_execucao_atribuido + when hist_controle_dsmp.id_usuario = hist_controle_dsmp.id_usuario_distribuicao then hist_controle_dsmp.tempo_de_execucao_atribuido + else 0 + end as pontos_pendentes, + + 'Atual' as tipo_historico +FROM prod_sei3.md_utl_controle_dsmp hist_controle_dsmp +LEFT JOIN prod_sei3.md_utl_adm_tp_ctrl_desemp adm_tp_ctrl_desemp on adm_tp_ctrl_desemp.id_md_utl_adm_tp_ctrl_desemp = hist_controle_dsmp.id_md_utl_adm_tp_ctrl_desemp +LEFT JOIN prod_sei3.md_utl_adm_hist_prm_gr_usu adm_hist_prm_gr_usu on (adm_hist_prm_gr_usu.id_md_utl_adm_prm_gr = adm_tp_ctrl_desemp.id_md_utl_adm_prm_gr and adm_hist_prm_gr_usu.id_usuario = hist_controle_dsmp.id_usuario) +LEFT JOIN prod_sei3.md_utl_triagem utl_triagem on utl_triagem.id_md_utl_triagem = hist_controle_dsmp.id_md_utl_triagem +LEFT JOIN prod_sei3.md_utl_analise utl_analise on utl_analise.id_md_utl_analise = hist_controle_dsmp.id_md_utl_analise +LEFT JOIN prod_sei3.md_utl_revisao utl_revisao on utl_revisao.id_md_utl_revisao = hist_controle_dsmp.id_md_utl_revisao +WHERE + 1=1 + and hist_controle_dsmp.id_usuario not in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38) #usuários automáticos + and hist_controle_dsmp.id_md_utl_adm_tp_ctrl_desemp is not null + and hist_controle_dsmp.id_md_utl_adm_fila is not null + and cast(adm_hist_prm_gr_usu.dth_inicial as datetime) <= cast(hist_controle_dsmp.dth_atual as datetime) + and cast(if(isnull(adm_hist_prm_gr_usu.dth_final),now(),adm_hist_prm_gr_usu.dth_final) as datetime) >= cast(hist_controle_dsmp.dth_atual as datetime) +) as historico +GROUP BY + id_historico, + id_procedimento, + id_fila, + id_tipo_controle, + id_unidade, + id_usuario, + id_usuario_distribuicao, + tipo_acao, + detalhe, + dth_prazo_tarefa, + sta_atendimento_dsmp, + sin_ultima_fila, + sin_ultimo_responsavel, + id_ajuste_prazo, + dth_final, + sin_acao_concluida, + sta_atribuido, + tempo_execucao, + sta_tipo_presenca, + tempo_de_execucao_atribuido, + percentual_desempenho, + sta_tipo_presenca_participacao, + fator_desemp_diferenciado, + sta_tipo_jornada, + fator_reducao_jornada, + tipo_historico \ No newline at end of file diff --git a/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_executado.sql b/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_executado.sql new file mode 100644 index 0000000..179c733 --- /dev/null +++ b/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_executado.sql @@ -0,0 +1,109 @@ +SELECT DISTINCT + c.id_unidade, + c.id_md_utl_adm_tp_ctrl_desemp as id_tipo_controle, + cast(dth_atual as datetime) as dth_atual, + id_usuario, + c.tipo_acao, + tmp_executado +FROM ( + + -- TRIAGEM + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , t.id_usuario as us_executado , t.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp , c.tipo_acao + FROM prod_sei3.md_utl_controle_dsmp c + JOIN prod_sei3.md_utl_triagem t on c.id_md_utl_triagem = t.id_md_utl_triagem -- and t.id_usuario = @us_dist + WHERE c.tipo_acao in('Triagem') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp, @tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual BETWEEN @dti and @dtf + + union + + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , t.id_usuario as us_executado , t.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp, c.tipo_acao + FROM prod_sei3.md_utl_hist_controle_dsmp c + JOIN prod_sei3.md_utl_triagem t on c.id_md_utl_triagem = t.id_md_utl_triagem -- and t.id_usuario = @us_dist + WHERE c.tipo_acao in('Triagem') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp, @tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual BETWEEN @dti and @dtf + + union + + -- ANALISE e REMOCAO DAS ANALISES EM CORRECAO + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , a.id_usuario as us_executado , a.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp, c.tipo_acao + FROM prod_sei3.md_utl_controle_dsmp c + JOIN prod_sei3.md_utl_analise a on c.id_md_utl_analise = a.id_md_utl_analise -- and a.id_usuario = @us_dist + WHERE c.tipo_acao in('Análise') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp, @tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual BETWEEN @dti and @dtf + + union + + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , a.id_usuario as us_executado , a.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp, c.tipo_acao + FROM prod_sei3.md_utl_hist_controle_dsmp c + JOIN prod_sei3.md_utl_analise a on c.id_md_utl_analise = a.id_md_utl_analise -- and a.id_usuario = @us_dist + WHERE c.tipo_acao in('Análise') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp, @tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual BETWEEN @dti and @dtf + + union + + -- PARTE QUE REMOVE O TEMPO EXECUTADO + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , a.id_usuario as us_executado , - a.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp, c.tipo_acao + FROM prod_sei3.md_utl_controle_dsmp c + JOIN prod_sei3.md_utl_analise a on c.id_md_utl_analise = a.id_md_utl_analise -- and a.id_usuario = @us_dist + WHERE c.detalhe in('Retornar para Correção pelo mesmo Participante','Retornar para Correção por outro Participante na mesma Fila','Retornar para Correção por outro Participante') + AND c.tipo_acao in('Avaliação') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp, @tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual between @dti and @dtf + + union + + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , a.id_usuario as us_executado , - a.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp, c.tipo_acao + FROM prod_sei3.md_utl_hist_controle_dsmp c + JOIN prod_sei3.md_utl_analise a on c.id_md_utl_analise = a.id_md_utl_analise -- and a.id_usuario = @us_dist + WHERE c.detalhe in('Retornar para Correção pelo mesmo Participante','Retornar para Correção por outro Participante na mesma Fila','Retornar para Correção por outro Participante') + AND c.tipo_acao in('Avaliação') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp,@tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual between @dti and @dtf + + union + + -- AVALIACAO + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , r.id_usuario as us_executado , r.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp, c.tipo_acao + FROM prod_sei3.md_utl_controle_dsmp c + JOIN prod_sei3.md_utl_revisao r on c.id_md_utl_revisao = r.id_md_utl_revisao -- and r.id_usuario = @us_dist + WHERE c.tipo_acao in('Avaliação') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp, @tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual BETWEEN @dti and @dtf + + union + + SELECT + c.id_procedimento , cast(c.dth_atual as datetime) as dth_atual , r.id_usuario as us_executado , r.tempo_de_execucao_atribuido as tmp_executado , c.id_unidade , c.id_md_utl_adm_fila , id_md_utl_adm_tp_ctrl_desemp, c.tipo_acao + FROM prod_sei3.md_utl_hist_controle_dsmp c + JOIN prod_sei3.md_utl_revisao r on c.id_md_utl_revisao = r.id_md_utl_revisao -- and r.id_usuario = @us_dist + WHERE c.tipo_acao in('Avaliação') + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp, @tp_ctrl) + -- AND c.id_unidade = @unid + -- AND c.dth_atual BETWEEN @dti and @dtf + +) as c + +JOIN prod_sei3.protocolo p on c.id_procedimento = p.id_protocolo +LEFT JOIN prod_sei3.md_utl_adm_fila f on c.id_md_utl_adm_fila = f.id_md_utl_adm_fila +JOIN prod_sei3.usuario us on c.us_executado = us.id_usuario +JOIN prod_sei3.unidade un on c.id_unidade = un.id_unidade +JOIN prod_sei3.md_utl_adm_tp_ctrl_desemp tp_ctrl on c.id_md_utl_adm_tp_ctrl_desemp = tp_ctrl.id_md_utl_adm_tp_ctrl_desemp +; \ No newline at end of file diff --git a/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_pendente.sql b/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_pendente.sql new file mode 100644 index 0000000..f6e9fff --- /dev/null +++ b/sei/web/modulos/utilidades/bi_scripts/ExtracaoDados_tempo_pendente.sql @@ -0,0 +1,56 @@ +SELECT DISTINCT + id_unidade, + id_md_utl_adm_tp_ctrl_desemp as id_tipo_controle, + cast(dth_atual as datetime) as dth_atual, + tipo_acao, + id_usuario, + tmp_pendente +FROM( + SELECT + p.id_protocolo + ,p.protocolo_formatado + ,c.id_md_utl_adm_fila + ,f.nome as fila + ,c.id_usuario_distribuicao as id_usuario + ,us.nome + ,cast(c.dth_atual as datetime) as dth_atual + ,c.id_unidade + ,un.sigla + ,c.id_md_utl_adm_tp_ctrl_desemp + ,tp_ctrl.nome as nome_tp_controle + ,c.tipo_acao + ,c.tempo_execucao + ,c.tempo_de_execucao_atribuido + ,case + when c.sta_atendimento_dsmp = 0 then 'Aguardando Fila' + when c.sta_atendimento_dsmp = 1 then 'Aguardando Triagem' + when c.sta_atendimento_dsmp = 2 then 'Em Triagem' + when c.sta_atendimento_dsmp = 3 then 'Aguardando Análise' + when c.sta_atendimento_dsmp = 4 then 'Em Análise' + when c.sta_atendimento_dsmp = 5 then 'Aguardando Revisão' + when c.sta_atendimento_dsmp = 6 then 'Em Avaliação' + when c.sta_atendimento_dsmp = 7 then 'Aguardando Correção Triagem' + when c.sta_atendimento_dsmp = 8 then 'Em Correção de Triagem' + when c.sta_atendimento_dsmp = 9 then 'Aguardando Correção Análise' + when c.sta_atendimento_dsmp = 10 then 'Em Correção de Análise' + end as situacao + + ,case + when c.sta_atendimento_dsmp in (4,10) and c.tipo_acao = 'Retriagem' then c.tempo_de_execucao_atribuido + when c.sta_atendimento_dsmp in (10) and c.tipo_acao <> 'Retriagem' then a.tempo_de_execucao_atribuido + else c.tempo_de_execucao_atribuido + end as tmp_pendente + + FROM prod_sei3.md_utl_controle_dsmp c + LEFT JOIN prod_sei3.md_utl_analise a on c.id_md_utl_analise = a.id_md_utl_analise + JOIN prod_sei3.protocolo p on c.id_procedimento = p.id_protocolo + LEFT JOIN prod_sei3.md_utl_adm_fila f on c.id_md_utl_adm_fila = f.id_md_utl_adm_fila + JOIN prod_sei3.usuario us on c.id_usuario_distribuicao = us.id_usuario + JOIN prod_sei3.unidade un on c.id_unidade = un.id_unidade + JOIN prod_sei3.md_utl_adm_tp_ctrl_desemp tp_ctrl on c.id_md_utl_adm_tp_ctrl_desemp = tp_ctrl.id_md_utl_adm_tp_ctrl_desemp + -- WHERE c.id_usuario_distribuicao = @us_dist + -- AND FIND_IN_SET(c.id_md_utl_adm_tp_ctrl_desemp,@tp_ctrl) + -- AND c.id_unidade = @unid +) AS tabela +-- ORDER BY tp_ctrl.nome , p.id_protocolo +; \ No newline at end of file