Skip to content
Permalink
Browse files

Incluindo report por cliente no dashboard de projetos

  • Loading branch information...
andrefaria committed Jun 20, 2012
1 parent 2d6151e commit 78802b0a2f5d9234c814cad64caf5c840979be24
@@ -1,5 +1,5 @@
#Wed Jul 27 10:23:37 BRT 2011
eclipse.preferences.version=1
encoding//src/main/webapp/commons/scripts/jquery.hoverIntent.js=ISO-8859-1
encoding//src/main/webapp/commons/themes/simplicity/theme.css=ISO-8859-1
encoding/<project>=UTF-8
encoding/README=UTF-8
@@ -32,7 +32,8 @@ public class DashboardController {
model.addAttribute "itens", itens
model.addAttribute 'defeitos', toGoogleChartsArray(dashboardDao.obterDefeitosParaCockpit())
model.addAttribute 'defeitosEntregues', toGoogleChartsArray(dashboardDao.obterDefeitosEntreguesParaCockpit())
model.addAttribute 'entregas', toGoogleChartsArray(dashboardDao.obterEntregasParaCockpit())
model.addAttribute 'estorias', toGoogleChartsArray(dashboardDao.obterEstoriasCriadasParaCockpit())
model.addAttribute 'estoriasEntregues', toGoogleChartsArray(dashboardDao.obterEstoriasEntreguesParaCockpit())

VIEW_DASHBOARD
}
@@ -40,7 +40,7 @@ class DashboardDao {
return result
}

public Map<String, String> obterEntregasParaCockpit() {
public Map<String, String> obterEstoriasEntreguesParaCockpit() {
String sql = "select count(*) from ticket where tipo_de_ticket_key = 2 and data_de_pronto >= current_date - :days"
def result = [:]
result['24h'] = getSession().createSQLQuery(sql).setInteger("days", 1).uniqueResult();
@@ -51,4 +51,16 @@ class DashboardDao {
result['30d'] = getSession().createSQLQuery(sql).setInteger('days', 30).uniqueResult();
return result
}

public Map<String, String> obterEstoriasCriadasParaCockpit() {
String sql = "select count(*) from ticket where tipo_de_ticket_key = 2 and data_de_criacao >= current_date - :days"
def result = [:]
result['24h'] = getSession().createSQLQuery(sql).setInteger("days", 1).uniqueResult();
result['48h'] = getSession().createSQLQuery(sql).setInteger('days', 2).uniqueResult();
result['7d'] = getSession().createSQLQuery(sql).setInteger('days', 7).uniqueResult();
result['14d'] = getSession().createSQLQuery(sql).setInteger('days', 14).uniqueResult();
result['21d'] = getSession().createSQLQuery(sql).setInteger('days', 21).uniqueResult();
result['30d'] = getSession().createSQLQuery(sql).setInteger('days', 30).uniqueResult();
return result
}
}
@@ -940,7 +940,7 @@ public class TicketDao extends DaoHibernate {
def tipoDeTicket = new Entry(it[2], it[3])
def quantidade = it[4]

def dashboardItem = mapa[projeto]
def dashboardItem = mapa[projeto] ? mapa[projeto] : new DashboardItem(projetoKey:projetoKey, projeto:projeto)
dashboardItem.quantidadesPorTipoDeTicket[tipoDeTicket] = quantidade
}

@@ -955,18 +955,49 @@ public class TicketDao extends DaoHibernate {
"""

query = session.createSQLQuery(sql)
query.list().each{
query.list().each {
def projetoKey = it[0] as Integer
def projeto = it[1]
def milestone = new Entry(it[2], it[3])
def percentual = it[4]

def dashboardItem = mapa[projeto]
def dashboardItem = mapa[projeto] ? mapa[projeto] : new DashboardItem(projetoKey:projetoKey, projeto:projeto)
dashboardItem.percentualPorMilestone[milestone] = percentual
}

sql = """
select t.projeto_key, p.nome as nome_projeto, t.cliente_key, c.nome as nome_cliente,
sum(case when t.data_de_pronto is null then 0 else 1 end) as pronto,
sum(case when t.data_de_pronto is null then 1 else 0 end) as pendente,
count(*) as total
from ticket t
inner join cliente c on c.cliente_key = t.cliente_key
inner join projeto p on p.projeto_key = t.projeto_key
group by t.cliente_key, c.nome, t.projeto_key, p.nome
order by sum(case when t.data_de_pronto is null then 1 else 0 end) desc
"""

query = session.createSQLQuery(sql)
query.list().each {
def projetoKey = it[0] as Integer
def projeto = it[1]

def dashboardItem = mapa[projeto] ? mapa[projeto] : new DashboardItem(projetoKey:projetoKey, projeto:projeto)
if (!dashboardItem.pendencias) {
dashboardItem.pendencias = []
}
dashboardItem.pendencias << [
clienteKey: it[2],
nome: it[3],
pronto: it[4],
pendente: it[5],
total: it[6],
]
}

return mapa.values()
}


}

@@ -6,5 +6,6 @@ class DashboardItem {
def mapaPorBacklogESprintEEtapa = [:]
def quantidadesPorTipoDeTicket = [:]
def percentualPorMilestone = [:]
def pendencias = []
}

@@ -204,4 +204,8 @@ option.nenhuma {
.gravatar50 {
width: 50px;
height: 50px;
}

.tabela {
width: 100%;
}
@@ -18,8 +18,11 @@
var dataDefeitosEntregues = google.visualization.arrayToDataTable(${defeitosEntregues});
var defeitos = new google.visualization.Gauge(document.getElementById('defeitosEntregues')).draw(dataDefeitosEntregues, options);
var dataEntregas = google.visualization.arrayToDataTable(${entregas});
var entregas = new google.visualization.Gauge(document.getElementById('entregas')).draw(dataEntregas, options);
var dataEstorias = google.visualization.arrayToDataTable(${estorias});
var estorias = new google.visualization.Gauge(document.getElementById('estorias')).draw(dataEstorias, options);
var dataEstoriasEntregues = google.visualization.arrayToDataTable(${estoriasEntregues});
var estoriasEntregues = new google.visualization.Gauge(document.getElementById('estoriasEntregues')).draw(dataEstoriasEntregues, options);
}
</script>
</head>
@@ -35,10 +38,14 @@

<h3 class="ui-state-default">Defeitos Resolvidos</h3>
<div id='defeitosEntregues' align="center"></div>
<br/>

<h3 class="ui-state-default">Estórias Criadas</h3>
<div id='estorias' align="center"></div>
<br/>

<h3 class="ui-state-default">Estórias Entregues</h3>
<div id='entregas' align="center"></div>
<div id='estoriasEntregues' align="center"></div>
<br/>

<h3 class="ui-state-default">Projetos</h3>
@@ -76,7 +83,6 @@
<hr/>



<div class="backlogs">
<c:forEach items="${item.mapaPorBacklogESprintEEtapa}" var="backlog">
<div class="backlog">
@@ -129,6 +135,26 @@
</div>
</c:forEach>
</div>
<hr/>
<div>
<h5 style="height: 20px; text-align: center;" class="ui-state-default">Tickets</h5>
<table class="tabela">
<tr>
<th>Cliente</th>
<th>Pendentes</th>
<th>Entregues</th>
<th>Total</th>
</tr>
<c:forEach items="${item.pendencias}" var="pendencia">
<tr>
<td>${pendencia.nome}</td>
<td>${pendencia.pendente}</td>
<td>${pendencia.pronto}</td>
<td>${pendencia.total}</td>
</tr>
</c:forEach>
</table>
</div>
</div>
</c:forEach>
<script type="text/javascript">

0 comments on commit 78802b0

Please sign in to comment.
You can’t perform that action at this time.