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;