If no JSF

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>
</ui:composition>



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

Não seria melhor usar o atributo rendered???

<h:outputText value="teste teste" rendered="#{controleImpressao.isMostraTextoTeste}"/>

1 curtida