Как получить общую цену с целым столбцом (не для каждой записи) и заголовком группы в отчете DynamicJaper - PullRequest
0 голосов
/ 18 февраля 2019

Я использую библиотеку DynamicJasper для создания отчетов в веб-приложении JavaEE, так как мне надоел Jaspersoft, и, похоже, нет другого инструмента для создания отчетов на основе Java, который был бы открытым и хорошим.Пожалуйста, просветите меня, если кто-нибудь из вас знает лучше.

В настоящее время у меня есть две проблемы, я не могу складывать блоки автотекста в нижний колонтитул (в верхнем колонтитуле в порядке), только один или два будут отображаться в зависимости от ....... эм..... у меня нет ответа на это.Кто-нибудь знает, возможно ли что-то подобное?

.addAutoText(footerText)
.addAutoText(boxedText)
.addAutoText(xyText)

Я не могу получить итоговое значение для всей колонки как группы, и я проверил почти все, что смог найти, чтобы попытаться разобраться в этом.но я все еще не могу это сделать.

invoiceText

Как вы можете видеть здесь, у меня есть сумма каждой строки под суммой для каждой строки(да!), но я мог бы действительно использовать весь столбец для суммирования.Кто-нибудь знает, почему это может быть?

AbstractColumn costCol = ColumnBuilder.getNew()
                                           .setColumnProperty("cost", Double.class.getName())
                                           .setTitle("Cost")
                                           .setWidth(30)
                                           .setStyle(DynamicJasperStyle.columnStyle(DjValues.INVOICE_COLUMN_SIZE, DjValues.CENTRE, "£0.00"))
                                           .setHeaderStyle(DynamicJasperStyle.columnHeaderStyle(DjValues.INVOICE_COLUMN_SIZE, DjValues.CENTRE))
                                           .build();
GroupBuilder gBuilder = new GroupBuilder();
DJGroup sumGroup = gBuilder.setCriteriaColumn((PropertyColumn) costCol)
                                   .addFooterVariable(costCol,DJCalculation.SUM)
                                   .build();

        dr = frb.setGrandTotalLegend("total")
                .addColumn(descCol)
                .addColumn(qtyCol)
                .addColumn(costCol)
                .addGroup(sumGroup)
                .build();

        drb.addConcatenatedReport(dr, new ClassicLayoutManager(), "FakeInvoiceItem", DJConstants.DATA_SOURCE_ORIGIN_PARAMETER, DJConstants.DATA_SOURCE_TYPE_COLLECTION, false);

Где drb = DynamicReportBuilder, dr = DynamicReport и frb = FastReportBuilder.

Мои методы стиля выглядят так:

 static public Style columnStyle(int font_weight, String orientation, String pattern)
 {
    Style columnStyle = new Style();
    columnStyle.setHorizontalAlign(HorizontalAlign.CENTER);
    columnStyle.setPaddingTop(8);
    columnStyle.setPaddingBottom(8);
    columnStyle.setFont(new Font(font_weight,"DejaVu Serif",false));

    if (orientation.equals(DjValues.CENTRE))
    {
        columnStyle.setHorizontalAlign(HorizontalAlign.CENTER);
    }
    else if (orientation.equals(DjValues.LEFT))
    {
        columnStyle.setHorizontalAlign(HorizontalAlign.LEFT);
    }
    else if(orientation.equals(DjValues.RIGHT))
    {
        columnStyle.setHorizontalAlign(HorizontalAlign.RIGHT);
    }

    if (!StringUtils.isNullOrEmpty(pattern))
    {
        columnStyle.setPattern(pattern);
    }

    return columnStyle;
}
...