Estou com um problema aqui pra gerar meu relatorio, mostrando a media de um campo hora. É assim eu tenho um relatorio que mostra as Areas, um tempo medio de atendimento de uma area e o total de atendimento de cada area tambem.
Gostaria de no final do relatorio, mostrar a media gerar do tempo medio de atendimento. Mas não consigo, o problema é que na query tive que transformar o campo pra string pra formatar corretamente.
Alguem sabe uma maneira de calcular essa media no Ireport?
Transformar campo em string para poder formatar corretamente ? :?
Mostra ai como você formatou…
AlanLojudice
Segue um metodo que faz a Query do relatorio. Eu chamo uma funcao pra formatar.
public static String getQueryTotalAtendimento(Date periodoInicial, Date periodoFinal, String area){
//" Where dat.Data Between '" + periodoInicial + " 00:00:00' And '" + periodoFinal + " 23:59:59' " +
Format formatoInical = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
Format formatoFinal = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
return " Select count(ada.descricao) as total, " +
" ada.descricao " +
" From estado est " +
" Join estadoocorrencia eoc On est.oidobj = eoc.oid_estadoocorrencia " +
" Join listacaracterizacaoareadeatuacaoraiz lca on eoc.oid_estadoocorrencia = lca.oid_estadoocorrencia " +
" Join caracterizacaoareadeatuacaoraiz caa on caa.oid_caracterizacaoareadeatuacaoraiz = lca.oid_caracterizacaoareadeatuacaoraiz " +
" Join listavaloresareadeatuacao lva on lva.oid_caracterizacaoareadeatuacaoraiz = caa.oid_caracterizacaoareadeatuacaoraiz " +
" And lva.oid_listavaloresareadeatuacao = 0 " +
" Join valorareadeatuacao vaa on vaa.oid_valorareadeatuacao = lva.oid_valoresareadeatuacao " +
" Join areadeatuacao ada on ada.oid_areadeatuacao = vaa.areadeatuacao " +
" Join listacjareasdeatuacao lja on lja.oid_areadeatuacao = ada.oid_areadeatuacao " +
" Join conjuntoareadeatuacao cja on cja.oid_cjareadeatuacao = lja.oid_cjareadeatuacao " +
" And cja.tipo = Atendimento " +
" Join ematendimento eat on eat.oid_ematendimento = eoc.oid_estadoocorrencia " +
" Join ematendimentotelefonico ett on ett.oid_ematendimentotelefonico = eat.oid_ematendimento " +
" Join relatorio rel On rel.oidobj = est.relatorio " +
" Join periodo per On per.oid_ = rel.id_periodo_atendimento " +
" Join datahora dat On per.id_termino_datahora = dat.oid_ " +
" Where dat.Data Between '" + formatoInical.format(periodoInicial)+ "' And '" + formatoFinal.format(periodoFinal)+ "' " +
" And ada.descricao = '" + area + "' "+
"Group By ada.descricao";
}
AlanLojudice
mandei o cara errado...rs
publicstaticStringgetQueryTempoAtendimento(DateperiodoInicial,DateperiodoFinal){FormatformatoInical=newSimpleDateFormat("yyyy-MM-dd 00:00:00");FormatformatoFinal=newSimpleDateFormat("yyyy-MM-dd 23:59:59");return" Select ada.descricao As Area, "+" TO_CHAR(Avg(dat.data - dai.data), 'DD: HH:MI:SS') As Media, "+" Count(*) As TotalCosiderado "+" From objeto obj "+" Join ocorrencia oco On obj.oidobj = oco.oid_ocor "+" Join listaestados lie On obj.oidobj = lie.oid_objeto "+" Join estado est On est.oidobj = lie.id_estado "+" Join estadoocorrencia eoc On est.oidobj = eoc.oid_estadoocorrencia "+" Join listacaracterizacaoareadeatuacaoraiz lca On eoc.oid_estadoocorrencia = lca.oid_estadoocorrencia "+" Join caracterizacaoareadeatuacaoraiz caa On caa.oid_caracterizacaoareadeatuacaoraiz = lca.oid_caracterizacaoareadeatuacaoraiz "+" Join listavaloresareadeatuacao lva On lva.oid_caracterizacaoareadeatuacaoraiz = caa.oid_caracterizacaoareadeatuacaoraiz "+" And lva.oid_listavaloresareadeatuacao = 0 "+" Join valorareadeatuacao vaa On vaa.oid_valorareadeatuacao = lva.oid_valoresareadeatuacao "+" Join areadeatuacao ada On ada.oid_areadeatuacao = vaa.areadeatuacao "+" Join listacjareasdeatuacao lja On lja.oid_areadeatuacao = ada.oid_areadeatuacao "+" Join conjuntoareadeatuacao cja On cja.oid_cjareadeatuacao = lja.oid_cjareadeatuacao "+" And cja.tipo = La no toChar que transformo pra string corrento, antes vinha 0 years, 0 mouths e bla bla blaAtendimentoLa no toChar que transformo pra string corrento, antes vinha 0 years, 0 mouths e bla bla bla "+" Join relatorio rel On rel.oidobj = est.relatorio "+" Join periodo per On per.oid_ = rel.id_periodo_atendimento "+" Join datahora dai On per.id_inicio_datahora = dai.oid_ "+" Join datahora dat On per.id_termino_datahora = dat.oid_ "+" Join atuacaoocorrencia ato On oco.atuacaodeencerramento_id = ato.oidobj "+" Join datahora dat1 On ato.horadaatuacao = dat1.oid_ "+" Where oco.atuacaodeencerramento_id Is Not Null "+" AND dat.Data Between '"+formatoInical.format(periodoInicial)+"' And '"+formatoFinal.format(periodoFinal)+"' "+" Group By ada.descricao ";}
La no toChar que transformo pra string corrento, antes vinha 0 years, 0 mouths e bla bla bla
maniacs
hmmm eu faço o seguinte…
ou eu trago a diferença dataInicial dataFinal e somo no final
ou trago separado dataFinal e dataInicial e calculo com o iReport
ou transformar essa string em Date para poder calcular…
AlanLojudice
Acho que transformar pra data é melhor,
Mas ai vc transforma no ireport?
maniacs
isso… usa as variaveis para poder calcular faz ela somar a casa linha…
AlanLojudice
Mas como que faço pra converter no IReport para Date?
Vou em propriedades – editor de expressoes e altero la pra date? Nao consegi fazer isso…
maniacs
me mostre como retorna a string de um dia…
AlanLojudice
o relatorio é mais ou menos assim
Área Média (min) Efetivos
Trânsito 01: 12:48:54 3
SETEC 00: 12:02:20 2
Segurança 00: 12:09:32 188
Total AQUI MEDIA TOTAL 193
O campo media é dd: hh:mm:ss
maniacs
axo que é mais facil pra ti calcular pelo java… segue exemplo