Ir para o conteúdo principal

Radar Inteligente de Incidentes

  • Após conectar o banco do MySQL do Netservice via ODBC no Codex.
  • Utilize o Query abaixo para ele consultar os dados necessários e extrairmos as informações via CSV.
SELECT
    t.TarefaID AS IC,
    t.Titulo AS Titulo,
    e.NomeEmpresa AS Cliente,
    s.NomeSistema AS TimeSistema,
    m.NomeModulo AS Produto,
    a.NomeAtividade AS Servico,
    u.NomeUsuario AS ResponsavelAtual,
    COALESCE(st.NomeSituacao, 'Sem status') AS StatusAtual,
    t.DataCriacao AS DataAbertura,
    DATEDIFF(CURDATE(), t.DataCriacao) AS DiasEmAberto,
    lm.UltimaMovimentacao AS UltimaMovimentacao,
    DATEDIFF(CURDATE(), COALESCE(lm.UltimaMovimentacao, t.DataCriacao)) AS DiasSemMovimentacao,

    CASE
        WHEN DATEDIFF(CURDATE(), t.DataCriacao) >= 15 THEN 'Crítico'
        WHEN DATEDIFF(CURDATE(), t.DataCriacao) BETWEEN 12 AND 14 THEN 'Atenção'
        ELSE 'Controlado'
    END AS ClassificacaoRadar,

    CASE
        WHEN DATEDIFF(CURDATE(), COALESCE(lm.UltimaMovimentacao, t.DataCriacao)) >= 5 THEN 'Sim'
        ELSE 'Não'
    END AS FlagSemMovimentacao,

    CASE
        WHEN DATEDIFF(CURDATE(), t.DataCriacao) >= 30 THEN 'Sim'
        ELSE 'Não'
    END AS FlagMuitoAntigo,

    CASE
        WHEN st.NomeSituacao IS NULL OR st.NomeSituacao = '' THEN 'Sim'
        ELSE 'Não'
    END AS FlagStatusAusente,

    COALESCE(td.DiasAtendimento, 0) AS DiasAtendimento,
    COALESCE(td.DiasAnalise, 0) AS DiasAnalise,
    COALESCE(td.DiasInfraestruturaBancoDados, 0) AS DiasInfraestruturaBancoDados,
    COALESCE(td.DiasOutrosDepartamentos, 0) AS DiasOutrosDepartamentos

FROM netservice.tarefas t

LEFT JOIN netservice.empresas e 
    ON e.EmpresaID = t.EmpresaID

LEFT JOIN netservice.modulos m 
    ON m.ModuloID = t.ModuloID

LEFT JOIN netservice.sistemas s 
    ON s.SistemaID = m.SistemaID

LEFT JOIN netservice.atividades a 
    ON a.AtividadeID = t.AtividadeID

LEFT JOIN netservice.usuarios u 
    ON u.UsuarioID = t.ResponsavelID

LEFT JOIN netservice.situacoestarefas st 
    ON st.SituacaoTarefaID = t.SituacaoTarefaID

LEFT JOIN (
    SELECT 
        TarefaID, 
        MAX(DataAtribuicao) AS UltimaMovimentacao
    FROM netservice.andamentostarefas
    GROUP BY TarefaID
) lm 
    ON lm.TarefaID = t.TarefaID

LEFT JOIN (
    SELECT
        mov.TarefaID,

        SUM(
            CASE 
                WHEN dep.NomeDepartamento = 'Atendimento'
                  OR dep.DepartamentoID = 3
                THEN mov.DiasNoDepartamento 
                ELSE 0 
            END
        ) AS DiasAtendimento,

        SUM(
            CASE 
                WHEN dep.DepartamentoID = 1
                THEN mov.DiasNoDepartamento 
                ELSE 0 
            END
        ) AS DiasAnalise,

        SUM(
            CASE 
                WHEN dep.DepartamentoID = 6
                THEN mov.DiasNoDepartamento 
                ELSE 0 
            END
        ) AS DiasInfraestruturaBancoDados,

        SUM(
            CASE 
                WHEN dep.NomeDepartamento IS NULL
                  OR (
                      dep.NomeDepartamento <> 'Atendimento'
                      AND dep.DepartamentoID NOT IN (1, 3, 6)
                  )
                THEN mov.DiasNoDepartamento 
                ELSE 0 
            END
        ) AS DiasOutrosDepartamentos

    FROM (
        SELECT
            atf.AndamentoTarefaID,
            atf.TarefaID,
            atf.DestinoID,
            DATEDIFF(
                COALESCE((
                    SELECT MIN(atf2.DataAtribuicao)
                    FROM netservice.andamentostarefas atf2
                    WHERE atf2.TarefaID = atf.TarefaID
                      AND (
                          atf2.DataAtribuicao > atf.DataAtribuicao
                          OR (
                              atf2.DataAtribuicao = atf.DataAtribuicao 
                              AND atf2.AndamentoTarefaID > atf.AndamentoTarefaID
                          )
                      )
                ), NOW()),
                atf.DataAtribuicao
            ) AS DiasNoDepartamento

        FROM netservice.andamentostarefas atf

        INNER JOIN netservice.tarefas tf
            ON tf.TarefaID = atf.TarefaID
           AND tf.Tipo = 4
           AND tf.DataEncerramento IS NULL
    ) mov

    LEFT JOIN netservice.usuarios ud 
        ON ud.UsuarioID = mov.DestinoID

    LEFT JOIN netservice.departamentos dep 
        ON dep.DepartamentoID = ud.DepartamentoID

    GROUP BY mov.TarefaID
) td 
    ON td.TarefaID = t.TarefaID

WHERE 
    t.Tipo = 4
    AND t.DataEncerramento IS NULL

ORDER BY 
    DiasEmAberto DESC, 
    DiasSemMovimentacao DESC

LIMIT 50;