Come creare più tabelle nel report jasper usando json come origine dati?

Devo fare un rapporto come questo:

Product Name : Product XYZ --------------------------------- | Item Name | Quantity | Price | --------------------------------- | Item ABC | 10 | 10 $ | | Item BCD | 10 | 1 $ | Product Name : Product XYZ2 --------------------------------- | Item Name | Quantity | Price | --------------------------------- | Item DEF | 15 | 10 $ | | Item HIJ | 11 | 1 $ | Summary Report --------------------------------- | Product Name | Total Quantity | --------------------------------- | Product XYZ | 20 | | Product XYZ2 | 26 | 

Il primo problema è che il “prodotto” può 1 a molti.

Il secondo problema è che ho bisogno di “Report di riepilogo” in fondo

Il terzo problema è che questo rapporto di dati grezzi proviene da json , non dalla query al database.

Quello che già provo:

    • Crea molte tabelle per prodotto. Ma questo è fallito perché Jasper crea uno spazio vuoto per la tabella inutilizzata. E la tabella riassuntiva in un’altra pagina con molti spazi vuoti.

    • Sottoreport, come sopra.

    Puoi dirmi per favore, come rendere dynamicmente più tavoli?

    EDIT : esempio JSON

     {"produkList": { "items":[ { "nameProduct": "Product XYZ", "itemList": [{ "itemName": "XXXXXXX", "quantity": 50, "price": 50 }, { "itemName": "YYYYYYY", "quantity": 50, "price": 50 }, { "itemName": "ZZZZZZZZ", "quantity": 50, "price": 50 }] }, { "nameProduct": "Product XYZ2", "itemList": [{ "itemName": "AAAAAAAA", "quantity": 50, "price": 50 }, { "itemName": "BBBBBBB", "quantity": 50, "price": 50 }, { "itemName": "CCCCCCC", "quantity": 50, "price": 50 }] } ], "summary":[ { "title": "Summary Report", "summaryReportDetailList": [{ "nameProduct": "Product XYZ", "quantity": 150 }, { "nameProduct": "Product XYZ2", "quantity": 150 }] } ] } } 

    La struttura sarà

    1. Rapporto principale con query produkList.items che visualizza il nome del prodotto
    2. Sottoreport in detail banda con per visualizzare il tabella degli articoli
    3. Sottoreport nella banda di summary con query produkList.summary.summaryReportDetailList per visualizzare la tabella di riepilogo

    Questo è il risultato

    Risultato PDF

    Sotto troverai il 3 jrxml che produce questo risultato, devi aggiustare il percorso del sorgente json e il percorso del sottoreport, non dimenticare che il sottoreport deve essere compilato in .jasper prima che il report principale possa essere eseguito.

    Rapporto principale

                                         

    Sottoreport in dettaglio band multitable_subreport.jrxml

                                                                                           

    Sottoreport nella banda di riepilogo multitable_summary.jrxml

                <band height="23"> <statictext> <reportelement x="0" y="0" width="100" height="20" uuid="a9730039-8418-4e58-a2eb-0babe8d2a380"></reportelement> <text><![CDATA[Summary Report]]></text> </statictext> </band>