0

我们正在尝试通过 JSON 构建一个 JasperReport 进行估计。标题和行(多个)很好。但是,JSON 文件中还有一个节点需要在明细表中循环。我们无法使用子数据集来实现它。目前,我们正在使用 JSONQL 来迭代这些行。

我们无法taxes通过子数据集循环节点。

下面是示例 JSON 输入:

    {
      “税”:[
        {
          "tax_slab_name": "免增值税",
          "tax_amount": "20.00 迪拉姆"
        },
        {
          "tax_slab_name": "增值税 0%",
          "tax_amount": "30.00 迪拉姆"
        },
        {
          "tax_slab_name": "增值税 5 %",
          "tax_amount": "50.00 迪拉姆"
        }
      ],
      “标题”:[
        {
          “estimate_no”:“EST-000054”,
          "bill_to_address": "111 Stamm Cliffs Suite 285, Heaney Ville, Jebel Ali, Dubai, United Arab Emirates (UAE)",
          "ship_to_address": "66015 شارع بلال السهلي, ممر ميسر مدني, 杰贝阿里, 迪拜, 阿拉伯联合酋长国 (UAE)",
          "estimate_date": "2020-05-08",
          "expiry_date": "2020-05-23",
          “小计”:14000,
          “折扣”:0,
          “tax_amt”:450,
          “总计”:14450,
          “条件”:“除非另有说明,否则所有费用均以美元 (USD) 为单位。E. 和 OE”,
          “状态”:“已保存”,
          "contact_name": "Kerluke、Bartell 和 Dickinson (مجموعة الداوود وأولاده)"
        }
      ],
      “行”:[
        {
          "item_name": "企业产品开发 - Java/JSF/PF",
          “tax_slab”:1,
          “uom”:“盒子”,
          “数量”:1,
          “率”:1000,
          “金额”:1000
        },
        {
          "item_name": "服务器设置",
          “tax_slab”:2,
          "uom": "厘米",
          “数量”:2,
          “率”:2000,
          “金额”:4000
        },
        {
          "item_name": "备份和容灾服务",
          “tax_slab”:2,
          "uom": "厘米",
          “数量”:2,
          “率”:2000,
          “金额”:4000
        }
      ]
    }

数据源类型:JSONQL

JasperReport 版本:6.12.2(最新)

4

1 回答 1

0

没关系。让它与子数据集一起工作。

   <subDataset name="TaxSDS" uuid="1701ce05-88ab-4435-85c5-3ad38e0b941b">
        <queryString language="jsonql">
            <![CDATA[..taxes]]>
        </queryString>
        <field name="tax_slab_name" class="java.lang.String">
            <property name="net.sf.jasperreports.jsonql.field.expression" value="tax_slab_name"/>
            <fieldDescription><![CDATA[Tax Slabs]]></fieldDescription>
        </field>
        <field name="tax_slab_amt" class="java.lang.String">
            <property name="net.sf.jasperreports.jsonql.field.expression" value="tax_amount"/>
            <fieldDescription><![CDATA[Tax Amount]]></fieldDescription>
        </field>
    </subDataset>
    <subDataset name="LinesSDS" uuid="1701ce05-88ab-4435-85c5-3ad38e0b941b">
        <queryString language="jsonql">
            <![CDATA[..lines]]>
        </queryString>
        <field name="item_name" class="java.lang.String">
            <property name="net.sf.jasperreports.jsonql.field.expression" value="item_name"/>
            <fieldDescription><![CDATA[Item]]></fieldDescription>
        </field>
        <field name="uom" class="java.lang.String">
            <property name="net.sf.jasperreports.jsonql.field.expression" value="uom"/>
            <fieldDescription><![CDATA[UOM]]></fieldDescription>
        </field>
    </subDataset>
    <queryString language="jsonql">
        <![CDATA[]]>
    </queryString>
    <field name="invoiceNo" class="java.lang.String">
        <property name="net.sf.jasperreports.jsonql.field.expression" value="header.estimate_no"/>
        <fieldDescription><![CDATA[Estimate No]]></fieldDescription>
    </field>
于 2020-05-09T06:40:47.717 回答