У меня есть XML источник данных, который предоставляет список xpath <policyRiders>
. В списке <policyRiders>
есть xpath с именем <sumInsuredAmount>
, который повторяется со списком <policyRiders>
xpath. Я хочу взять сумму всех <sumInsuredAmount>
.
В настоящее время я использую таблицу и объявление переменной для генерации.
Это исходный под-набор данных:
<subDataset name="Dataset2">
<queryString language="xPath">
<![CDATA[/AUWrite/cacheDB/RetrievePolicyListResponse/policy/RetrievePolicyRiderListResponse/RLSPolicy/policyRiders]]>
</queryString>
<field name="sumInsuredAmount" class="java.lang.Integer">
<property name="net.sf.jasperreports.xpath.field.expression" value="sumInsuredAmount"/>
<fieldDescription><![CDATA[sumInsuredAmount]]></fieldDescription>
</field>
<variable name="ridersSumInsuredAmount" class="java.lang.Integer" resetType="None" calculation="Sum">
<variableExpression><![CDATA[$F{sumInsuredAmount}]]></variableExpression>
</variable>
</subDataset>
Это исходный код таблицы:
<componentElement>
<reportElement isPrintRepeatedValues="false" x="20" y="40" width="129" height="10">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="AllSectionsNoDetail">
<datasetRun subDataset="Dataset2">
<datasetParameter name="XML_DATA_DOCUMENT">
<datasetParameterExpression><![CDATA[$P{XML_DATA_DOCUMENT}]]></datasetParameterExpression>
</datasetParameter>
<datasetParameter name="XML_INPUT_STREAM">
<datasetParameterExpression><![CDATA[$P{XML_INPUT_STREAM}]]></datasetParameterExpression>
</datasetParameter>
<datasetParameter name="XML_FILE">
<datasetParameterExpression><![CDATA[$P{XML_FILE}]]>/datasetParameterExpression>
</datasetParameter>
<datasetParameter name="net.sf.jasperreports.xml.source">
<datasetParameterExpression><![CDATA[$P{net.sf.jasperreports.xml.source}]]></datasetParameterExpression>
</datasetParameter>
<datasetParameter name="XML_DATE_PATTERN">
<datasetParameterExpression><![CDATA[$P{XML_DATE_PATTERN}]]></datasetParameterExpression>
</datasetParameter>
<datasetParameter name="XML_NUMBER_PATTERN">
<datasetParameterExpression><![CDATA[$P{XML_NUMBER_PATTERN}]]></datasetParameterExpression>
</datasetParameter>
<datasetParameter name="XML_LOCALE">
<datasetParameterExpression><![CDATA[$P{XML_LOCALE}]]></datasetParameterExpression>
</datasetParameter>
<datasetParameter name="XML_TIME_ZONE">
<datasetParameterExpression><![CDATA[$P{XML_TIME_ZONE}]]></datasetParameterExpression>
</datasetParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:column width="138">
<jr:detailCell height="24">
<textField isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="0" y="0" width="138" height="24" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true"/>
<textFieldExpression><![CDATA[$V{ridersSumInsuredAmount}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
Фактический результат:
Фактический результат суммирования и отображения 200000,100000 и повторения элемента списка.
Не должно повторяться, так как total sumInsuredAmount должен генерироваться из одного поля.
sumInsuredAmount итоговое значение должно быть 150000, которое прибавляется от сложения 100000 и 50000.
Ожидаемый результат: