(RESOLVIDO)Passar parâmetro para Jasper através de uma Grid

parece que não está mais null

Maravilha, está quase. O problema é que está sendo montado um Set de vendas. E para o relatório, só precisa de um Set de IDs das vendas.

Em vez de: Set<Venda>, tem que ser Set<Long>, ou, para evitar mudar o código vc pode obter os Ids assim:

idsVendasSelecionadas.stream().map(v -> v.getId()).collect(Collectors.toSet());
1 curtida

Mano vamos por partes…kk

primeiro olha como está o código neste exato momento:

Classe converteJrxmlToPdf

package br.com.fjsistemas.relatorios;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import javax.sql.DataSource;

import org.springframework.stereotype.Component;

import br.com.fjsistemas.backend.Venda;
import br.com.fjsistemas.repository.VendaRepository;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

@Component
public class ConverteJrxmlToPdf {

	@SuppressWarnings("unused")
	private VendaRepository vendaRepository;

	private DataSource dataSource;

	public ConverteJrxmlToPdf(VendaRepository vendaRepository, DataSource dataSource) {
		this.vendaRepository = vendaRepository;
		this.dataSource = dataSource;
	}

	public byte[] conversor(Set<Venda> idsVendasSelecionadas) throws JRException, SQLException {
		
		InputStream reportJrxml = this.getClass().getResourceAsStream("/RelatorioVenda.jrxml");
		JasperReport document = JasperCompileManager.compileReport(reportJrxml);
//---------------------------------------------------------------------------------------------------------		
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("idsVendasSelecionadas", idsVendasSelecionadas);
		idsVendasSelecionadas.stream().map(v -> v.getId()).collect(Collectors.toSet());
//---------------------------------------------------------------------------------------------------------		
		JasperPrint print = JasperFillManager.fillReport(document, parameters, dataSource.getConnection());

		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		JasperExportManager.exportReportToPdfStream(print, baos);
		byte[] relatorio = baos.toByteArray();

		return relatorio;
	}

}

Classe RelatorioView

package br.com.fjsistemas.relatorios;

import java.io.ByteArrayInputStream;
import java.sql.SQLException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Locale;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.olli.FileDownloadWrapper;

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.grid.Grid.SelectionMode;
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.data.selection.MultiSelect;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.StreamResource;

import br.com.fjsistemas.backend.Venda;
import br.com.fjsistemas.main.MainView;
import br.com.fjsistemas.repository.VendaRepository;
import net.sf.jasperreports.engine.JRException;

@Route(value = "relatorio-view", layout = MainView.class)
@PageTitle("Relatório de Vendas")
public class RelatorioVendaView extends VerticalLayout {

	private static final long serialVersionUID = 1L;

	private HorizontalLayout layoutDatas = new HorizontalLayout();

	private Button gerarRelatorio = new Button("Gerar Relatório");
	private Button exportarRelatorio = new Button("Exportar Relatório");

	private Grid<Venda> grid = new Grid<>();

	@Autowired
	private ConverteJrxmlToPdf pdf;

	Label label = new Label("Valor Total no Periodo:");

	@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 VendaRepository vendaRepository;

	private List<Venda> listaVendas;
//-----------------------------------------------------
	Set<Venda> idsVendasSelecionadas;
//-----------------------------------------------------
	public RelatorioVendaView() {
		configuraRelatorio();
	}

	private void populaInformacao() {

		listaVendas = vendaRepository.findAllByDataVendaBetween(dataInicio.getValue(), dataFim.getValue());
		somaValoresRelatorio();
		atualizaGrdVenda();

	}

	private void atualizaGrdVenda() {
		grid.setItems(listaVendas);
	}

	private void somaValoresRelatorio() {

		NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));

		double soma = 0;

		for (Venda venda : listaVendas) {
			try {
				soma += formatter.parse(venda.getValorTotalVenda()).doubleValue();
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		somaValores.setValue(formatter.format(soma));
	}

	@SuppressWarnings("unused")
	private void configuraRelatorio() {

		grid.setWidthFull();
		grid.setHeight("740px");

		grid.addColumn(Venda::getId).setHeader("ID:").setAutoWidth(true);

		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.getColumns().forEach(col -> col.setAutoWidth(true).setSortable(true).setResizable(true));
//---------------------------------------------------------------------------------------------------------------------
		grid.setSelectionMode(SelectionMode.MULTI);

		MultiSelect<Grid<Venda>, Venda> multiSelect = grid.asMultiSelect();
		multiSelect.addValueChangeListener(e -> {
			this.idsVendasSelecionadas = e.getValue();
		});
//---------------------------------------------------------------------------------------------------------------------
		gerarRelatorio.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
		gerarRelatorio.getStyle().set("margin-top", "37px");
		gerarRelatorio.setWidth("180px");
		gerarRelatorio.addClickListener(event -> {
			populaInformacao();
		});

		exportarRelatorio.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
		exportarRelatorio.getStyle().set("margin-top", "37px");
		exportarRelatorio.setWidth("180px");
		exportarRelatorio.addClickListener(evento -> {

		});
//--------------------------------------------------------------------------------------------------------------------------------------------
		FileDownloadWrapper buttonWrapper = new FileDownloadWrapper(new StreamResource("RelatorioVenda.pdf", () -> {
			try {
				return new ByteArrayInputStream(pdf.conversor(idsVendasSelecionadas));
			} catch (JRException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			return null;
		}));

		buttonWrapper.wrapComponent(exportarRelatorio);
		add(buttonWrapper);
//--------------------------------------------------------------------------------------------------------------------------------------------
		somaValores.setWidth("245px");
		somaValores.getStyle().set("margin-left", "620px");
		somaValores.setLabel("Valor Total no Período");

		dataInicio.setWidth("181px");
		dataFim.setWidth("181px");

		layoutDatas.add(dataInicio, dataFim, gerarRelatorio, buttonWrapper, somaValores);

		add(layoutDatas, grid);
	}

	public List<Venda> getListaVenda() {
		return listaVendas;
	}

	public void setListaVenda(List<Venda> listaVenda) {
		this.listaVendas = listaVenda;
	}

}

Relatorio XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.17.0.final using JasperReports Library version 6.17.0-6d93193241dd8cc42629e188b94f9e0bc5722efd  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RelatorioVendas" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="df013db5-f76e-44d3-b0df-bcbc46d93160">
	<property name="com.jaspersoft.studio.data.sql.tables" value=""/>
	<property name="com.jaspersoft.studio.data.sql.SQLQueryDesigner.sash.w1" value="140"/>
	<property name="com.jaspersoft.studio.data.sql.SQLQueryDesigner.sash.w2" value="855"/>
	<property name="com.jaspersoft.studio.data.defaultdataadapter" value="fsistemas"/>
	<style name="Title" fontName="Times New Roman" fontSize="50" isBold="true"/>
	<style name="SubTitle" forecolor="#736343" fontName="Arial" fontSize="18"/>
	<style name="Column header" forecolor="#666666" fontName="Arial" fontSize="12" isBold="true"/>
	<style name="Detail" fontName="Arial" fontSize="12"/>
	<style name="Row" mode="Transparent">
		<conditionalStyle>
			<conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression>
			<style backcolor="#E6DAC3"/>
		</conditionalStyle>
	</style>
	<parameter name="idsVendasSelecionadas" class="java.util.Set"/>
	<queryString language="SQL">
		<![CDATA[SELECT fjsistemas.cliente.nome,
	fjsistemas.forma_de_pagamento.forma_de_pagamento,
	fjsistemas.produto.valor,
	fjsistemas.produto.nome,
	fjsistemas.produto_vendido.produto_id,
	fjsistemas.produto_vendido.valor_total_do_item,
	fjsistemas.produto_vendido.quantidade,
	fjsistemas.venda.id,
	fjsistemas.venda.data_venda,
	fjsistemas.venda.valor_total_venda
FROM fjsistemas.venda
	INNER JOIN fjsistemas.cliente ON 
	 fjsistemas.cliente.id = fjsistemas.venda.cliente_id 
	INNER JOIN fjsistemas.forma_de_pagamento ON 
	 fjsistemas.forma_de_pagamento.id = fjsistemas.venda.forma_de_pagamento_id 
	INNER JOIN fjsistemas.produto_vendido ON 
	 fjsistemas.produto_vendido.venda_id = fjsistemas.venda.id 
	INNER JOIN fjsistemas.produto ON 
	 fjsistemas.produto.id = fjsistemas.produto_vendido.produto_id 
ORDER BY fjsistemas.venda.id ASC]]>
	</queryString>
	<field name="nome" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="nome"/>
		<property name="com.jaspersoft.studio.field.label" value="nome"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="cliente"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="forma_de_pagamento" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="forma_de_pagamento"/>
		<property name="com.jaspersoft.studio.field.label" value="forma_de_pagamento"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="forma_de_pagamento"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="valor" class="java.lang.Double">
		<property name="com.jaspersoft.studio.field.name" value="valor"/>
		<property name="com.jaspersoft.studio.field.label" value="valor"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="produto"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="COLUMN_4" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="nome"/>
		<property name="com.jaspersoft.studio.field.label" value="nome"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="produto"/>
	</field>
	<field name="produto_id" class="java.lang.Long">
		<property name="com.jaspersoft.studio.field.name" value="produto_id"/>
		<property name="com.jaspersoft.studio.field.label" value="produto_id"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="produto_vendido"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="valor_total_do_item" class="java.lang.Double">
		<property name="com.jaspersoft.studio.field.name" value="valor_total_do_item"/>
		<property name="com.jaspersoft.studio.field.label" value="valor_total_do_item"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="produto_vendido"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="quantidade" class="java.lang.Integer">
		<property name="com.jaspersoft.studio.field.name" value="quantidade"/>
		<property name="com.jaspersoft.studio.field.label" value="quantidade"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="produto_vendido"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="id" class="java.lang.Long">
		<property name="com.jaspersoft.studio.field.name" value="id"/>
		<property name="com.jaspersoft.studio.field.label" value="id"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="venda"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="data_venda" class="java.sql.Date">
		<property name="com.jaspersoft.studio.field.name" value="data_venda"/>
		<property name="com.jaspersoft.studio.field.label" value="data_venda"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="venda"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<field name="valor_total_venda" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="valor_total_venda"/>
		<property name="com.jaspersoft.studio.field.label" value="valor_total_venda"/>
		<property name="com.jaspersoft.studio.field.tree.path" value="venda"/>
		<fieldDescription><![CDATA[]]></fieldDescription>
	</field>
	<variable name="Soma" class="java.lang.Double" calculation="Sum">
		<variableExpression><![CDATA[$F{valor_total_do_item}]]></variableExpression>
	</variable>
	<background>
		<band splitType="Stretch"/>
	</background>
	<title>
		<band height="60" splitType="Stretch">
			<staticText>
				<reportElement style="Title" x="1" y="0" width="799" height="60" uuid="bc1ce1da-8232-46ea-be55-cec4abb986dd"/>
				<textElement textAlignment="Center" verticalAlignment="Middle"/>
				<text><![CDATA[RELATÓTIO VENDAS]]></text>
			</staticText>
		</band>
	</title>
	<pageHeader>
		<band height="20" splitType="Stretch">
			<textField>
				<reportElement x="0" y="0" width="280" height="20" uuid="22e99724-47f5-43db-890e-f358c9f52841"/>
				<textElement>
					<font fontName="Arial"/>
				</textElement>
				<textFieldExpression><![CDATA["Filtro ID: " + $P{idsVendasSelecionadas}]]></textFieldExpression>
			</textField>
		</band>
	</pageHeader>
	<columnHeader>
		<band height="16" splitType="Stretch">
			<line>
				<reportElement positionType="FixRelativeToBottom" x="0" y="15" width="802" height="1" uuid="e9d2002a-c8ee-4649-a258-640dad29110c"/>
				<graphicElement>
					<pen lineWidth="0.5" lineColor="#999999"/>
				</graphicElement>
			</line>
			<staticText>
				<reportElement style="Column header" x="0" y="0" width="89" height="15" forecolor="#736343" uuid="f957e008-a7be-42e2-ae1e-6dd37d516e1d">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="3cfcbd04-6058-4ae4-9559-fcaf41cff3d7"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[ID]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="89" y="0" width="89" height="15" forecolor="#736343" uuid="347f29a5-d360-4f5a-a83c-d6b7d6a4ddd2">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="f1b1e558-48c2-4edf-89e3-f00326230e66"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[DATA]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="178" y="0" width="89" height="15" forecolor="#736343" uuid="81f8f18f-f32f-47f8-a734-fede5682198e">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="2648b9ef-6fe4-43f1-abf9-8794829d1694"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[CLIENTE]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="267" y="0" width="89" height="15" forecolor="#736343" uuid="bcba985c-963b-49ea-86cc-ec57344a2086">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="06ecdd4b-9066-41e1-9a1a-acc122e485b1"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[PRODUTO]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="356" y="0" width="89" height="15" forecolor="#736343" uuid="1a122b7f-c2c3-4c51-8747-32f0bb61f7f6">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="730df7e6-112f-45ca-b531-02341e4ce46f"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[UN]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="445" y="0" width="89" height="15" forecolor="#736343" uuid="ca4ac53c-0a68-4502-995a-4bf4cd3d5b35">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="77b6370b-c0f6-49e1-ba91-4a7faaae799c"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[V. UN]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="534" y="0" width="89" height="15" forecolor="#736343" uuid="0371cdde-c420-4c96-8d0a-8b43279ac129">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="77b95e65-85ca-40f2-94b4-ef57c2267b80"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[V. ITEM]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="623" y="0" width="89" height="15" forecolor="#736343" uuid="8eb42e24-ec00-47dc-94eb-6ede95073832">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="131ec30c-5aca-4030-9716-cb59c6a9d76f"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[V. TOTAL]]></text>
			</staticText>
			<staticText>
				<reportElement style="Column header" x="712" y="0" width="89" height="15" forecolor="#736343" uuid="7cdf36f3-0d71-4f85-8c29-86c8f9465f2a">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="54cd7934-4c56-45c8-8d53-c09e9f5ab87d"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Arial"/>
				</textElement>
				<text><![CDATA[PAGAMENTO]]></text>
			</staticText>
		</band>
	</columnHeader>
	<detail>
		<band height="15" splitType="Stretch">
			<frame>
				<reportElement style="Row" mode="Opaque" x="0" y="0" width="802" height="15" uuid="fa7cec56-4ec1-48e6-a26e-7266a995d174"/>
				<textField textAdjust="StretchHeight">
					<reportElement style="Detail" isPrintRepeatedValues="false" x="0" y="0" width="89" height="15" uuid="470f2a4b-9c82-447f-b058-045f8f7b6320">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="3cfcbd04-6058-4ae4-9559-fcaf41cff3d7"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight" pattern="dd/MM/yyyy">
					<reportElement style="Detail" x="89" y="0" width="89" height="15" uuid="3d20ac67-da36-485b-85c1-64fa11bcd1ce">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="f1b1e558-48c2-4edf-89e3-f00326230e66"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{data_venda}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight">
					<reportElement style="Detail" isPrintRepeatedValues="false" x="178" y="0" width="89" height="15" uuid="717bcda6-46fc-4758-827f-5ab0d783b475">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="2648b9ef-6fe4-43f1-abf9-8794829d1694"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{nome}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight">
					<reportElement style="Detail" x="267" y="0" width="89" height="15" uuid="8b5e5563-b822-4b3b-82cf-aa2652cb016b">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="06ecdd4b-9066-41e1-9a1a-acc122e485b1"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{COLUMN_4}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight">
					<reportElement style="Detail" x="356" y="0" width="89" height="15" uuid="51b4525b-bbf4-42bf-b641-466821af7721">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="730df7e6-112f-45ca-b531-02341e4ce46f"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{quantidade}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight" pattern="R$ #,##0.###;#,##0.###-">
					<reportElement style="Detail" x="445" y="0" width="89" height="15" uuid="e894bbca-56cd-4eec-8df0-9bea51b83c39">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="77b6370b-c0f6-49e1-ba91-4a7faaae799c"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{valor}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight" pattern="R$ #,##0.###;#,##0.###-">
					<reportElement style="Detail" x="534" y="0" width="89" height="15" uuid="2687f8ba-75bf-4750-8d8e-cb46f7f23c88">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="77b95e65-85ca-40f2-94b4-ef57c2267b80"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{valor_total_do_item}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight">
					<reportElement style="Detail" isPrintRepeatedValues="false" x="623" y="0" width="89" height="15" uuid="60c6f2c9-7bd4-4278-893a-bb1af0e02120">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="131ec30c-5aca-4030-9716-cb59c6a9d76f"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{valor_total_venda}]]></textFieldExpression>
				</textField>
				<textField textAdjust="StretchHeight">
					<reportElement style="Detail" isPrintRepeatedValues="false" x="712" y="0" width="89" height="15" uuid="9f6d3f67-984d-40a1-9275-cb4fe98fb4c7">
						<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="54cd7934-4c56-45c8-8d53-c09e9f5ab87d"/>
					</reportElement>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{forma_de_pagamento}]]></textFieldExpression>
				</textField>
			</frame>
		</band>
	</detail>
	<columnFooter>
		<band height="6" splitType="Stretch">
			<line>
				<reportElement positionType="FixRelativeToBottom" x="0" y="3" width="802" height="1" uuid="fa5e88d5-a011-4e32-8f12-ce923f903111"/>
				<graphicElement>
					<pen lineWidth="0.5" lineColor="#999999"/>
				</graphicElement>
			</line>
		</band>
	</columnFooter>
	<pageFooter>
		<band height="25" splitType="Stretch">
			<frame>
				<reportElement mode="Opaque" x="-21" y="1" width="843" height="24" forecolor="#D0B48E" backcolor="#F2EBDF" uuid="5d8169bd-4a75-48c8-8a68-6d3ad5ba9402"/>
				<textField pattern="EEEEE dd MMMMM yyyy">
					<reportElement style="Column header" x="22" y="0" width="197" height="24" forecolor="#736343" uuid="fbce24bb-3cb1-44a3-8eec-8c067ddbe5b5"/>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial" size="12" isBold="true"/>
					</textElement>
					<textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
				</textField>
				<textField pattern="R$ #,##0.###;#,##0.###-">
					<reportElement x="644" y="0" width="179" height="24" forecolor="#736343" uuid="70bde723-8ff5-462c-8210-53a024e848ec"/>
					<box>
						<topPen lineWidth="1.0" lineStyle="Solid"/>
						<bottomPen lineWidth="1.0" lineStyle="Solid"/>
						<rightPen lineWidth="1.0" lineStyle="Solid"/>
					</box>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial" size="12"/>
					</textElement>
					<textFieldExpression><![CDATA[$V{Soma}]]></textFieldExpression>
				</textField>
				<textField>
					<reportElement x="555" y="0" width="89" height="24" forecolor="#736343" uuid="f7222752-30bf-4f5d-b1d7-4f373e88c3ab"/>
					<box>
						<topPen lineWidth="1.0" lineStyle="Solid"/>
						<leftPen lineWidth="1.0" lineStyle="Solid"/>
						<bottomPen lineWidth="1.0" lineStyle="Solid"/>
					</box>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Arial" size="12" isBold="true"/>
					</textElement>
					<textFieldExpression><![CDATA["Valor Total: "]]></textFieldExpression>
				</textField>
			</frame>
		</band>
	</pageFooter>
	<summary>
		<band splitType="Stretch"/>
	</summary>
</jasperReport>

RESULTADO:

Blz, vc está passando uma coleção de Vendas para o relatório, mas só precisa passar uma coleção de IDs das vendas.

Obs.: java.util.Set é uma coleção, assim como java.util.List

1 curtida

então devo alterar todos os set<venda> por set<long>

Sim, mas para evitar alterar muito o código, vc pode, dentro do método conversor, fazer isso:

parameters.put("idsVendasSelecionadas", idsVendasSelecionadas.stream()
	.map(v -> v.getId())
	.collect(Collectors.toSet()));

já deve resolver.

O map serve para transformar uma coleção de um tipo para outro. No seu caso, um Set de Venda será transformado para um Set de Long.

1 curtida

1 curtida

Blz! Agora falta apenas alterar o SQL da consulta executada no relatório. Veja esse exemplo:

SELECT * FROM Blablabla WHERE $X{IN, ID, idsVendasSelecionadas}

Vc tem que colocar no where do SQL uma condição com isso: $X{IN, ID, idsVendasSelecionadas}

Onde o ID é a coluna que será usada para comparar com os valores recebidos pelo parâmetro idsVendasSelecionadas.

1 curtida

QUERY ATUAL:

SELECT fjsistemas.cliente.nome,
	fjsistemas.forma_de_pagamento.forma_de_pagamento,
	fjsistemas.produto.valor,
	fjsistemas.produto.nome,
	fjsistemas.produto_vendido.produto_id,
	fjsistemas.produto_vendido.valor_total_do_item,
	fjsistemas.produto_vendido.quantidade,
	fjsistemas.venda.id,
	fjsistemas.venda.data_venda,
	fjsistemas.venda.valor_total_venda
FROM fjsistemas.venda
	INNER JOIN fjsistemas.cliente ON 
	 fjsistemas.cliente.id = fjsistemas.venda.cliente_id 
	INNER JOIN fjsistemas.forma_de_pagamento ON 
	 fjsistemas.forma_de_pagamento.id = fjsistemas.venda.forma_de_pagamento_id 
	INNER JOIN fjsistemas.produto_vendido ON 
	 fjsistemas.produto_vendido.venda_id = fjsistemas.venda.id 
	INNER JOIN fjsistemas.produto ON 
	 fjsistemas.produto.id = fjsistemas.produto_vendido.produto_id 
ORDER BY fjsistemas.venda.id ASC

QUERY APÓS ALTERAÇÃO:

SELECT fjsistemas.cliente.nome,
	fjsistemas.forma_de_pagamento.forma_de_pagamento,
	fjsistemas.produto.valor,
	fjsistemas.produto.nome,
	fjsistemas.produto_vendido.produto_id,
	fjsistemas.produto_vendido.valor_total_do_item,
	fjsistemas.produto_vendido.quantidade,
	fjsistemas.venda.id,
	fjsistemas.venda.data_venda,
	fjsistemas.venda.valor_total_venda
FROM fjsistemas.venda
	INNER JOIN fjsistemas.cliente ON 
	 fjsistemas.cliente.id = fjsistemas.venda.cliente_id 
	INNER JOIN fjsistemas.forma_de_pagamento ON 
	 fjsistemas.forma_de_pagamento.id = fjsistemas.venda.forma_de_pagamento_id 
	INNER JOIN fjsistemas.produto_vendido ON 
	 fjsistemas.produto_vendido.venda_id = fjsistemas.venda.id 
	INNER JOIN fjsistemas.produto ON 
	 fjsistemas.produto.id = fjsistemas.produto_vendido.produto_id 

SELECT * FROM Venda WHERE $X{IN, ID, idsVendasSelecionadas}
ORDER BY fjsistemas.venda.id ASC

Vc soh precisa adicionar o where no SELECT existente. Do jeito que vc fez, vc criou um select com uma sintaxe inválida. Um select correto com where é assim:

SELECT
    colunaA, colunaB
FROM
    tabelaA
WHERE
    colunaA = XXXX

Vc só precisa adicionar o WHERE. E o ID foi soh um exemplo. Vc deve alterar para usar a coluna que será usada na condição.

O ID deve ser substituído por fjsistemas.venda.id

1 curtida

desta forma?

SELECT fjsistemas.cliente.nome,
	fjsistemas.forma_de_pagamento.forma_de_pagamento,
	fjsistemas.produto.valor,
	fjsistemas.produto.nome,
	fjsistemas.produto_vendido.produto_id,
	fjsistemas.produto_vendido.valor_total_do_item,
	fjsistemas.produto_vendido.quantidade,
	fjsistemas.venda.id,
	fjsistemas.venda.data_venda,
	fjsistemas.venda.valor_total_venda
FROM fjsistemas.venda
	INNER JOIN fjsistemas.cliente ON 
	 fjsistemas.cliente.id = fjsistemas.venda.cliente_id 
	INNER JOIN fjsistemas.forma_de_pagamento ON 
	 fjsistemas.forma_de_pagamento.id = fjsistemas.venda.forma_de_pagamento_id 
	INNER JOIN fjsistemas.produto_vendido ON 
	 fjsistemas.produto_vendido.venda_id = fjsistemas.venda.id 
	INNER JOIN fjsistemas.produto ON 
	 fjsistemas.produto.id = fjsistemas.produto_vendido.produto_id 
WHERE 
	 fjsistemas.venda.id IN ('$X{IN, ID, idsVendasSelecionadas}') 
ORDER BY fjsistemas.venda.id ASC

Quase.

Pelo que li na documentação do jasperreports, em um JXRML, a forma de fazer IN no SQL é usando a expressão X${}, com isso, em vez de usar o IN do SQL, vc deve fazer assim:

WHERE $X{IN, fjsistemas.venda.id, idsVendasSelecionadas} 

sim, é diferente da forma como é feito no SQL, mas isso pq o jasperreports transforma no IN do sql para vc durante a execução.

A documentação que li está nesse link que tinha te passado: https://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v60/using-parameters-queries

1 curtida

MANOOO…obg mais uma vez…Deu certinho, está fazendo a filtragem corretamente…manooo…muito obg, vc tem sido um baita parceiro…obg por TODA ajuda até aqui, sou muito grato por vc ter compartilhado todo seu conhecimento até aqui comigo…vlw parceiro!!!

1 curtida