Sim, é isso o que o println() faz.
Dentro daquele for você deve popular sua tela de relatório. Cada venda é uma linha.
Sim, é isso o que o println() faz.
Dentro daquele for você deve popular sua tela de relatório. Cada venda é uma linha.
eu realmente tenho muita dificuldade com iteração
mas tentando de outra forma consegui este resultado:
o problema é que o filtro não está funcionando, tem alguma forma, sem usar iteração em que consiga aplicar o filtro?
código:
package br.com.fjsistemas.cadastros.view;
import java.time.format.DateTimeFormatter;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.html.Label;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.data.binder.PropertyId;
import com.vaadin.flow.data.renderer.LocalDateRenderer;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import br.com.fjsistemas.backend.Venda;
import br.com.fjsistemas.main.MainView;
import br.com.fjsistemas.service.VendaService;
@Route(value = "relatorio-view", layout = MainView.class)
@PageTitle("Relatório de Vendas")
public class RelatorioView extends VerticalLayout {
private static final long serialVersionUID = 1L;
private HorizontalLayout layoutDatas = new HorizontalLayout();
private Button gerarRelatorio = new Button("Gerar Relatório");
private Grid<Venda> grid = new Grid<>();
Label label = new Label("Valor Total no Periodo:");
Label labelEsquerda = new Label("Data");
Label labelCentro = new Label("Cliente");
Label labelDireita = new Label("Valor");
@PropertyId("dataInicio")
private DatePicker dataInicio = new DatePicker("Início");
@PropertyId("dataFim")
private DatePicker dataFim = new DatePicker("Final");
@PropertyId("somaValores")
private TextField somaValores = new TextField();
@Autowired
private VendaService vendaService;
private List<Venda> listaVendas;
@SuppressWarnings("unused")
private Venda venda;
public RelatorioView() {
configuraRelatorio();
}
private void populaInformacao() {
listaVendas = vendaService.read();
atualizaGrdVenda();
}
private void atualizaGrdVenda() {
grid.setItems(listaVendas);
}
private void configuraRelatorio() {
grid.setWidthFull();
grid.setHeight("740px");
grid.addColumn(new LocalDateRenderer<>(Venda::getDataVenda, DateTimeFormatter.ofPattern("dd/MM/yyy")))
.setHeader("Data Venda").setAutoWidth(true);
grid.addColumn(venda -> venda.getCliente().getNome()).setHeader("Nome:").setAutoWidth(true)
.setKey("cliente.nome");
grid.addColumn(Venda::getValorTotalVenda).setHeader("Valor Total:").setAutoWidth(true)
.setKey("valorTotalVenda");
grid.addItemClickListener(e -> {
venda = e.getItem();
});
gerarRelatorio.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
gerarRelatorio.getStyle().set("margin-top", "37px");
gerarRelatorio.addClickListener(event -> {
populaInformacao();
});
label.getStyle().set("margin-left", "540px");
label.getStyle().set("margin-top", "40px");
label.getElement().getStyle().set("fontWeight", "bold");
somaValores.getStyle().set("margin-top", "33px");
somaValores.setWidth("370px");
dataInicio.setWidth("181px");
dataFim.setWidth("181px");
layoutDatas.add(dataInicio, dataFim, gerarRelatorio, label, somaValores);
add(layoutDatas, grid);
}
public List<Venda> getListaVenda() {
return listaVendas;
}
public void setListaVenda(List<Venda> listaVenda) {
this.listaVendas = listaVenda;
}
}
Lembra o método que falei pra adicionar na VendaRepository? Aquele é o filtro e vc não está usando.
Ao invés de chamar read() aqui, use o método de filtrar.
Se não está usando pode apagar.
Deu certo man!!! Muito obg por tudo…ficou ótimo!!!
Mas agora deixa eu tirar uma duvida com vc, eu estou usando este código aqui:
@SuppressWarnings("unused")
private Venda venda;
uso ele aqui(no final):
grid.setWidthFull();
grid.setHeight("740px");
grid.addColumn(new LocalDateRenderer<>(Venda::getDataVenda, DateTimeFormatter.ofPattern("dd/MM/yyy")))
.setHeader("Data Venda").setAutoWidth(true);
grid.addColumn(venda -> venda.getCliente().getNome()).setHeader("Nome:").setAutoWidth(true)
.setKey("cliente.nome");
grid.addColumn(Venda::getValorTotalVenda).setHeader("Valor Total:").setAutoWidth(true)
.setKey("valorTotalVenda");
grid.addItemClickListener(e -> {
venda = e.getItem();
});
mas estranhamente se eu tiro a @SuppressWarnings(“unused”), ele fica com um Warning aparecendo, esses Warning me irritam pra caramba, por isso eu coloquei o @SuppressWarnings(“unused”).
Pq será que isso acontece no eclipse? vc sabe me dizer?
Porque isso aqui não “usa” a variável venda, apenas atribui um valor a ela.
Apague o campo venda e esse trecho que eu citei e teste seu código. Deverá funcionar sem problemas.
certinho…vlw meu parceiro!!!