Ошибка при создании PDF с использованием jaspersoft ireport - PullRequest
0 голосов
/ 04 февраля 2020

Я использую reactjs, spring-boot, SQL и ireport для генерации отчетов в формате PDF. Итак, файл распечатан. Но данные, передаваемые в clientInvoice.jr xml, являются нулевыми. Как мне это исправить. Я прикрепил передачу значения пружинной загрузки (здесь он ссылается на invoiceID, и он передается из внешнего интерфейса).

public ResponseEntity generateClientInvoiceByClientInvoiceId(int id) {
    try{
        File file = ResourceUtils.getFile("classpath:report/clientInvoice.jrxml");
        InputStream input = new FileInputStream(file);

        // Compile the Jasper report from .jrxml to .japser
        JasperReport jasperReport = JasperCompileManager.compileReport(input);

        // Get the parameter
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("invoiceId",id);

        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());

        // Export the report to a PDF file
        JasperExportManager.exportReportToPdfFile(jasperPrint, "D://" + id + ".pdf");
        return new ResponseEntity<Object>(null, HttpStatus.OK);

    }catch (CustomException e){
        e.printStackTrace();
        CustomErrorResponse errors = new CustomErrorResponse();
        errors.setError(e.getMessage());
        return new ResponseEntity(errors, HttpStatus.SERVICE_UNAVAILABLE);
    }catch (Exception e){
        e.printStackTrace();
        CustomErrorResponse errors = new CustomErrorResponse();
        errors.setError("Error in creating client invoice ");
        return new ResponseEntity<>(errors, HttpStatus.SERVICE_UNAVAILABLE);
    }
}

Только я прикрепил запрос, который я использую в JR XML. (Запрос прикреплен к файлу JR XML).

<queryString>
    <![CDATA[SELECT cv.`id`,cv.`client_id`,cv.`no_of_boxes` as total_boxes,cv.`sub_total`,cv.`total_weight`, cvi.`selling_price`, SUM(cvi.`weight`),sp.`selling_prawn_category_type`,cv.`shipping_address`,c.company,sc.`category_name`,count(cvi.selling_category_id) as noOfBoxes, cvi.`selling_price`*SUM(cvi.`weight`) as total_price_per_category,cv.date FROM client_invoice cv INNER JOIN client_invoice_item cvi ON cvi.`client_invoice_id` = cv.`id`INNER JOIN `selling_prawn_category_type` sp ON cvi.`selling_category_id` = sp.`id`INNER JOIN `selling_prawn_category` sc ON sc.selling_prawn_category_id = sp.idINNER JOIN `CLIENT` c ON c.id = cv.client_idWHERE cv.`id` =$P{invoiceId}  GROUP BY cvi.`selling_category_id`]]>
</queryString>

Пожалуйста, помогите мне как можно быстрее решить эту проблему.

1 Ответ

0 голосов
/ 04 февраля 2020

Я думаю, что отчет пустой из-за: new JREmptyDataSource()

Вы можете добавить DataSource и попробовать что-то вроде этого:

try (Connection connection = dataSource.getConnection()){
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, prepareParameters(command), connection);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...