Пользовательские отчеты JasperReports
Пользовательские отчеты должны располагаться в папке /public/Reports/User в репозитории сервера JasperReports. Внутри данной папки допускается формирование иерархии неограниченного уровня вложенности. Наименование категории отчета определяется наименованием его родительской папки. Считается, что отчеты, расположенные непосредственно в папке /public/Reports/User, категории не имеют.
Предусмотрены 2 системные папки отчетов:
-
/public/Reports/User/Отчеты_по_заявкам
-
/public/Reports/User /Отчеты_по_импорту_и_репликации
Отчеты в данных папках доступны на вкладках Отчеты в в подсистемах Журнал заявок и Импорт и репликация на вкладках Отчеты и в подсистеме Отчеты.
В
приложении приведены описания специальных view в БД системы, используемых для разработки шаблонов отчетов и их формирования.
Пользовательские отчеты в репозитории
Для дополнения параметра отчета метаданными используется поле «Description». В нем можно задать JSON-строку со следующей структурой:
interface ReportParamInfo {
label?: string; // локализованное наименование параметра, необязательный. Если не указано, используется имя параметра
type?: ReportParamType; // специальный тип параметра, необязательный
tip?: string; // подсказка, отображаемая при наведении курсора на иконку "?", необязательный. У каждого специального типа параметра есть соответствующая умолчательная подсказка, которую при необходимости можно убрать, задав в JSON-строке “tip”: “”.
autocomplete?: ReportParamAutocompleteOptions; // настройки выпадающего списка значений параметра, формируемого посредством вспомогательного отчета
}
Пример JSON-строки Description: {"label": "Справочники","type":"EntryIds"}
Примитивный тип параметра берется автоматически из его класса.
Примитивный тип параметра
В клиенте Semantic MDM предусмотрены контролы для ввода параметров следующих специальных типов (ReportParamType):
-
ExecutorIds – позволяет задать список идентификаторов Экспертов НСИ для заявок. Записывает в параметр значение в формате «id1,id2,…»;
-
EntryIds – позволяет задать список идентификаторов справочников и классификаторов. Записывает в параметр значение в формате «id1,id2,…»;
-
NodeIds – позволяет задать список идентификаторов групп. Записывает в параметр значение в формате «id1,id2,…»;
-
ItemIds – позволяет задать список идентификаторов позиций. Записывает в параметр значение в формате «id1,id2,…»;
-
Items – позволяет задать список идентификаторов позиций с их наименованиями. Записывает в параметр строковое значение в формате «id1=label1 | id2=label2 | …». В описании параметра можно ограничить список групп, из которых возможен выбор позиций, путем задания массива GUID в поле «rootNodeUuids». Также в поле «labelAttrUuid» можно указать GUID атрибута позиции, который требуется использовать в качестве ее наименования. Если данное поле не заполнено, наименование берется из системного поля позиции «displayName».
Пример описания параметра:
{
"label": "Позиции",
"type": "Items",
"rootNodeUuids": ["c6cc0212-4af9-4806-ab4e-6bdc0f5e8a6f"],
"labelAttrUuid": "fbcff6c9-d8a6-4a46-835f-9f14b1cba6ce"
}
-
SecurityGroups – позволяет задать список идентификаторов ролей с их наименованиями. Записывает в параметр строковое значение в формате «id1=label1 | id2=label2 | …»;
-
ReferenceBooks – позволяет задать список идентификаторов справочников с их наименованиями. Записывает в параметр строковое значение в формате «id1=label1 | id2=label2 | …».
-
ApplicationUuids – позволяет задать список гуидов заявок. Записывает в параметр значение в формате «<uid1>,<uid2>,…», где uid – уникальный идентификатор заявки без лидирующих нулей;
-
ApplicationYears – позволяет задать список годов, в которые в системе регистрировались заявки. Записывает в параметр значение в формате «2020,2021,…»;
-
PeriodBegin + PeriodEnd – позволяет задать временной интервал, определяемый двумя датами. Следует обратить внимание на то, что поле
label в
description у параметров PeriodBegin и PeriodEnd должны совпадать. Записывает в параметры даты в формате «yyyy-MM-ddTHH:mm:ss»
|
|
Изменять наименование параметра отчета через интерфейс сервера отчетов JasperReports нельзя!
|
Для формирования списка значений параметра посредством вспомогательного отчета предусмотрены следующие настройки:
interface ReportParamAutocompleteOptions {
/**
* Полный путь к вспомогательному отчету в репозитории JasperReports
*/
reportUri?: string;
/**
* Вместо полного пути можно указать идентификатор вспомогательного
* отчета. В таком случае вспомогательный отчет будет искаться в
* папке /public/Reports/Util (такой подход позволяет экономить
* дефицитное место в строке description, длина которой не может
* превышать 250 символов)
*/
reportId?: string;
/**
* Настройка соответствия параметров основного и вспомогательного
* отчетов:
* ключ – наименование параметра основного отчета
* значение – наименование параметра вспомогательного отчета
*/
paramsMapping?: Record<string, string>;
}
Тип параметра основного отчета (Advanced > Properties > Input Control Type), для которого настроена опция autocomplete, может принимать одно из следующих значений:
-
Single Selection List Of Values
-
Single Selection List Of Values (Radio)
-
Multi Selection List Of Values
-
Multi Selection List Of Values (Checkbox)
Предполагается, что вспомогательный отчет способен возвращать данные следующего вида в формате JSON:
[
{ "value": "val1", "label": "label1" },
{ "value": "val2", "label": "label2" },
...
]
Для этого в файл вспомогательного отчета <autocomplete-report>.jrxml необходимо добавить следующие настройки внутри полей (<textField>), представляющих собой значение и отображаемое наименование соответственно:
…
<reportElement …>
<property name="net.sf.jasperreports.export.json.path" value="value"/>
</reportElement>
…
<reportElement …>
<property name="net.sf.jasperreports.export.json.path" value="label"/>
</reportElement>
Отчет может быть сгенерирован в следующих форматах: PDF, XLS, XLSX, RTF, CSV, XML, DOCX, ODT, ODS, JRPRINT, JSON, HTML.
Форматы JSON и HTML используются исключительно для отображения превью отчета, поэтому соответствующие им кнопки экспорта на интерфейсе портала Semantic MDM не отображаются.
По умолчанию отчеты генерируются в форматах XLSX, PDF и HTML. При необходимости можно указать требуемый список форматов в JSON-строке отчета, задаваемый в поле Description.
Задание форматов и превью отчета
Структура JSON-строки:
interface ReportUnitInfo {
previewType?: ReportPreviewType; // тип превью, необязательный. По умолчанию отчет в формате HTML
outputFormats?: JrJobOutputFormat[]; // форматы, необязательный. По умолчанию XLSX, PDF и HTML (для превью)
description?: string; // описание, необязательный
}
Пример JSON-строки Description: {"previewType": "YearsChart", "outputFormats": ["JSON", "PDF"], "description": "какое-то описание…"}
Нужно иметь в виду, что сервер JasperReports накладывает ограничение на максимальный размер поля Description в 250 символов, поэтому необходимо быть весьма лаконичным при заполнении поля ReportUnitInfo.description.
В качестве превью отчета по умолчанию используется его HTML представление. В поле previewType в Description можно указать специальный тип превью.