@Thiago_Cardoso escreveu:
estou fazendo uma tabela com JSF onde ela puxar os dados do banco através de um vetor.só que quando tento fazer que ela pegue informações exemplificas e fazer um qualitativo ela esta pegando e repetindo os dados nas linhas abaixo e colocando o numero 1 para cada e não faz a soma
Pagina Xhtml
<ui:composition template="/template.xhtml" xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui"><ui:define name="conteudo"> <h1 class="sahu-page-title">Controle de Impressão</h1> <h:form> <p:messages id="msgs" autoUpdate="true" closable="true" /> <div class="ui-fluid"> <p:panel> <p:panelGrid id="panelPesquisa" columns="8" layout="grid" styleClass="panelgrid-noborder" columnClasses="ui-grid-col-1, ui-grid-col-2, ui-grid-col-1, ui-grid-col-1, ui-grid-col-1"> <p:outputLabel value="Tipo de Relatório" for="tipo_relatorio"/> <p:selectCheckboxMenu id="tipo_relatorio" value="#{pesquisaControleImpressaoBean.filtro.tiposRelatorio}" converter="omnifaces.GenericEnumConverter" label="--- Selecione ---" > <f:selectItems value="#{pesquisaControleImpressaoBean.tiposRelatorio}" var="tipoRelatorio" itemLabel="#{tipoRelatorio.descricao}" itemValue="#{tipoRelatorio}" /> </p:selectCheckboxMenu> <h:outputLabel for="periodo" value="Período" /> <p:inputMask id="periodo" value="#{pesquisaControleImpressaoBean.filtro.periodo}" mask="99/9999" required="true" requiredMessage="O período é obrigatório" converterMessage="Informe o período corretamente. Exemplo: 06/2010"> <f:convertDateTime pattern="MM/yyyy" timeZone="#{initParam.timezone}" /> </p:inputMask> <h:outputLabel for="prontuario" value="Prontuario" /> <p:inputMask id="numeroprontuario" value="#{pesquisaControleImpressaoBean.filtro.numeroprontuario}" /> <p:commandButton value="Pesquisar" action="#{pesquisaControleImpressaoBean.buscar}" process="tipo_relatorio numeroprontuario periodo @this" update="panelGrid" /> </p:panelGrid> </p:panel> </div> <h:panelGrid id="panelGrid"> <p:dataTable id="tabela" rendered="#{not empty pesquisaControleImpressaoBean.controlesImpressao}" reflow="true" value="#{pesquisaControleImpressaoBean.controlesImpressao}" var="controleImpressao" style="margin-top: 20px"> <p:column> <f:facet name="header"> <h:outputText value="Relatório" /> </f:facet> <h:outputText value="#{controleImpressao.tipoRelatorio.descricao}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Nome do Paciente" /> </f:facet> <h:outputText value="#{controleImpressao.paciente}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Prontuário" /> </f:facet> <h:outputText value="#{controleImpressao.prontuario}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Quantidade de Impressões" /> </f:facet> <h:outputText value="#{controleImpressao.quantidade}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Data e Hora da Impressão" /> </f:facet> <h:outputText value="#{controleImpressao.periodoImpressao}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Local da Impressão" /> </f:facet> <h:outputText value="#{controleImpressao.impressora}" /> </p:column> <f:facet name="footer"> <h:outputText value="Total de Impressões: " /> <h:outputText value=" #{pesquisaControleImpressaoBean.total}" /> </f:facet> </p:dataTable> <p:separator /> <p:dataTable id="tabela1" rendered="#{not empty pesquisaControleImpressaoBean.controlesImpressao}" reflow="true" value="#{pesquisaControleImpressaoBean.controlesImpressao}" var="controleImpressao" style="margin-top: 10px"> <p:column> <f:facet name="header"> <h:outputText value="Tipo De Relatorio" /> </f:facet> <h:outputText value="#{controleImpressao.tipoRelatorio.descricao}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Total De Impressões" /> </f:facet> <h:outputText value="#{controleImpressao.quantidade}" /> </p:column> </p:dataTable> <c:if totalquantidae="${date.time != 0}" > <h:outputText value="text" /> </c:if> <p:dataTable id="tabela2" rendered="#{not empty pesquisaControleImpressaoBean.controlesImpressao}" reflow="true" value="#{pesquisaControleImpressaoBean.controlesImpressao}" var="controleImpressao" style="margin-top: 10px"> <p:column> <f:facet name="header"> <h:outputText value="Nome do Paciente" /> </f:facet> <h:outputText value="#{controleImpressao.paciente}" /> </p:column> <p:column> <f:facet name="header"> <h:outputText value="Total De Impressões" /> </f:facet> <h:outputText value="#{controleImpressao.quantidade}" /> </p:column> </p:dataTable> </h:panelGrid> </h:form> </ui:define>
Controlesimpressão
package net.ebserh.huunivasf.repository.segurancaPaciente;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.List;import javax.faces.application.FacesMessage;
import javax.inject.Inject;
import javax.persistence.EntityManager;import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.transform.Transformers;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.type.Type;import net.ebserh.huunivasf.model.segurancaPaciente.ControleImpressao;
import net.ebserh.huunivasf.model.segurancaPaciente.ControleImpressaoID;
import net.ebserh.huunivasf.model.segurancaPaciente.InfoQuantitativoImpressaoPaciente;
import net.ebserh.huunivasf.utils.jpa.Transactional;
import net.ebserh.huunivasf.utils.jsf.FacesUtil;public class ControlesImpressao implements Serializable {
private static final long serialVersionUID = 1L; @Inject private EntityManager manager; public ControleImpressao buscarControleImpressaoPorID(ControleImpressaoID controleImpressaoID) { return manager.find(ControleImpressao.class, controleImpressaoID); } @Transactional public void salvar(ControleImpressao controleImpressao) { manager.merge(controleImpressao); manager.flush(); } @SuppressWarnings("unchecked") public List<InfoQuantitativoImpressaoPaciente> buscarComFiltro(FiltroControleImpressao filtro) { Criteria criteria = criarCriteriaParaFiltro(filtro); criteria.createAlias("paciente", "p"); criteria.addOrder(Order.asc("p.nome")); ProjectionList pl = Projections.projectionList() .add(Projections.sqlGroupProjection("to_char(data_impressao,'dd/MM/yyyy - hh:mm:ss') as periodoImpressao", "periodoImpressao", new String[] { "periodoImpressao" }, new Type[] { StandardBasicTypes.STRING })) .add(Projections.groupProperty("p.nome").as("paciente")) .add(Projections.groupProperty("p.prontuario").as("prontuario")) .add(Projections.groupProperty("tipoRelatorio").as("tipoRelatorio")) .add(Projections.groupProperty("impressora").as("impressora")) .add(Projections.count("codigo").as("quantidade")); criteria.setProjection(pl).setResultTransformer(Transformers.aliasToBean(InfoQuantitativoImpressaoPaciente.class)); List<InfoQuantitativoImpressaoPaciente> lista = criteria.list(); if (lista == null || lista.isEmpty()) { FacesUtil.adicionarMensagem("Não foram encontrados registros para o período selecionado!", FacesMessage.SEVERITY_WARN); } return lista; } private Criteria criarCriteriaParaFiltro(FiltroControleImpressao filtro) { Session session = manager.unwrap(Session.class); Criteria criteria = session.createCriteria(ControleImpressao.class); if (filtro.getTiposRelatorio() != null && !filtro.getTiposRelatorio().isEmpty()) { criteria.add(Restrictions.in("tipoRelatorio", filtro.getTiposRelatorio())); } if (filtro.getnumeroprontuario() != null) { criteria.add(Restrictions.eq("p.prontuario", filtro.getnumeroprontuario())); } criteria.add(Restrictions.between("dataImpressao", geraDataInicial(filtro.getPeriodo()), geraDataFinal(filtro.getPeriodo()))); return criteria; } private Date geraDataInicial(Date dataEntrega) { Calendar dataEntregaInicial = Calendar.getInstance(); dataEntregaInicial.setTime(dataEntrega); dataEntregaInicial.set(Calendar.DAY_OF_MONTH, 1); dataEntregaInicial.set(Calendar.HOUR_OF_DAY, 0); dataEntregaInicial.set(Calendar.MINUTE, 0); dataEntregaInicial.set(Calendar.SECOND, 0); return dataEntregaInicial.getTime(); } private Date geraDataFinal(Date dataEntrega) { Calendar dataEntregaFinal = Calendar.getInstance(); dataEntregaFinal.setTime(dataEntrega); dataEntregaFinal.set(Calendar.DAY_OF_MONTH, dataEntregaFinal.getActualMaximum(Calendar.DAY_OF_MONTH)); dataEntregaFinal.set(Calendar.HOUR_OF_DAY, 23); dataEntregaFinal.set(Calendar.MINUTE, 59); dataEntregaFinal.set(Calendar.SECOND, 59); return dataEntregaFinal.getTime(); }
}
Pesquisadecontroleimpressaobeen
Mensagens: 2
Participantes: 2