- OpenJDK 14
- Java 14
- JAX-RS
- Spring Boot 2.1
- Spring Cloud Greenwich
- N2O Platform 4
[JIRA] | [CI]
Микросервис формирования отчетов на основе JasperReports.
Использует n2o-platform, тем самым включая endpoint актуатора - инструмента для мониторинга доступности сервиса
Поддерживаемые форматы отчетов: pdf, xml, csv, xls, xlsx, docx, odt, ods.
-
Настройка библиотеки JasperReports.
http://jasperreports.sourceforge.net/config.reference.htmlСвойства конфигурации могут быть прописаны как в jasperreports.properties,
так и указаны в конкретном шаблоне:<property name="net.sf.jasperreports.export.pdf.encrypted" value="true"/>
-
Настройка отчета.
parameters.properties - зависимые от стенда (и другие) параметры отчета.При совпадении имен значения, передаваемые в queryParameters, более приоритетны, чем parameters.properties.
Значение fileStorage.root внутри шаблона отчета можно использовать, добавив проперти fsRoot
- Создать шаблон отчета (.jrxml) с помощью Jaspersoft Studio или других средств.
- Результат скомпилировать и сохранить в файловое хранилище, выполнив POST запрос (на вход .jrxml)
- Сгенерировать отчет, выполнив GET запрос
-
Скомпилировать шаблоны (POST):
accrCommand.jrxml
command.jrxml - сабрепорт, используемый в accrCommand.jrxml
Сформировать отчет (GET):
http://localhost:8080/api/report/accrCommand.pdf?status=ACCREDITED -
Скомпилировать шаблон (POST):
periodReport.jrxml
Сформировать отчет (GET):
http://localhost:8080/api/report/periodReport.pdf?baseUrl=http://docker.one:8396/safekids/api&fromDt=2020-03-01&toDt=2020-03-15
baseUrl можно прописать в parameters.properties,
fromDt и toDt в данном примере должны быть в рамках одного месяца
Имеется возможность настраивать несколько подключений к БД. Нужно указать
report.data.values[{index}].name - название, служит для привязки отчета
report.data.values[{index}].driver - драйвер DataSource
report.data.values[{index}].username - пользователь бд
report.data.values[{index}].password - пароль бд
report.data.values[{index}].url - url бд
где {index} - порядковый номер подключения к бд
Настройка происходит стандатным способом для Spring Boot приложений через properties/yml файлы. Например можно прописать в application.properties
report.data.values[0].name=lkzeo
report.data.values[0].driver=org.postgresql.Driver
report.data.values[0].username=lk_user
report.data.values[0].password=lk_psw
report.data.values[0].url=jdbc:postgresql://localhost:5432/lkzeo
report.data.values[1].name=idm
report.data.values[1].driver=org.postgresql.Driver
report.data.values[1].username=idm_user
report.data.values[1].password=idm_psw
report.data.values[1].url=jdbc:postgresql://localhost:5432/idm
Существуют два способа связать отчет с конкретным датасорсом
- В запросе вызова отчета указать параметр REPORT_DATASOURCE_NAME, например http://localhost:8080/api/report/report.pdf?REPORT_DATASOURCE_NAME=lkzeo
- В параметрах самого .jrxml - файла прописать REPORT_DATASOURCE_NAME, например
<parameter name="REPORT_DATASOURCE_NAME" class="java.lang.String">
<defaultValueExpression><![CDATA[lkzeo]]></defaultValueExpression>
</parameter>
Для декодирования вложенных изображений в формате base64 следует использовать org.apache.commons.codec.binary.Base64.decodeBase64. Например
<imageExpression class="java.io.InputStream"><![CDATA[new java.io.ByteArrayInputStream(org.apache.commons.codec.binary.Base64.decodeBase64($P{logo_base64}.getBytes()))]]></imageExpression>