Руководство пользователя Semantic MDM
×
Меню
Индекс

Пользовательские отчеты JasperReports

 
Пользовательские отчеты должны располагаться в папке /public/Reports/User в репозитории сервера JasperReports. Внутри данной папки допускается формирование иерархии неограниченного уровня вложенности. Наименование категории отчета определяется наименованием его родительской папки. Считается, что отчеты, расположенные непосредственно в папке /public/Reports/User, категории не имеют.
Предусмотрены 2 системные папки отчетов:
Отчеты в данных папках доступны на вкладках Отчеты в в подсистемах Журнал заявок  и Импорт и репликация на вкладках Отчеты и в подсистеме Отчеты.
В приложении приведены описания специальных view в БД системы, используемых для разработки шаблонов отчетов и их формирования.
 
Пользовательские отчеты в репозитории
 
Для дополнения параметра отчета метаданными используется поле «Description». В нем можно задать JSON-строку со следующей структурой:
interface ReportParamInfo {
    label?: string; // локализованное наименование параметра, необязательный. Если не указано, используется имя параметра
    type?: ReportParamType; // специальный тип параметра, необязательный
    tip?: string; // подсказка, отображаемая при наведении курсора на иконку "?", необязательный. У каждого специального типа параметра есть соответствующая умолчательная подсказка, которую при необходимости можно убрать, задав в JSON-строке “tip”: “”.
    autocomplete?: ReportParamAutocompleteOptions; // настройки выпадающего списка значений параметра, формируемого посредством вспомогательного отчета
}
Пример JSON-строки Description: {"label": "Справочники","type":"EntryIds"}
Примитивный тип параметра берется автоматически из его класса.
 
Примитивный тип параметра
 
В клиенте Semantic MDM предусмотрены контролы для ввода параметров следующих специальных типов (ReportParamType):
Пример описания параметра:
{
   "label": "Позиции",
    "type": "Items",
    "rootNodeUuids": ["c6cc0212-4af9-4806-ab4e-6bdc0f5e8a6f"],
    "labelAttrUuid": "fbcff6c9-d8a6-4a46-835f-9f14b1cba6ce"
}
Изменять наименование параметра отчета через интерфейс сервера отчетов JasperReports нельзя!
Для формирования списка значений параметра посредством вспомогательного отчета предусмотрены следующие настройки:
interface ReportParamAutocompleteOptions {
    /**
     * Полный путь к вспомогательному отчету в репозитории JasperReports
     */
    reportUri?: string;
    /**
     * Вместо полного пути можно указать идентификатор вспомогательного
     * отчета. В таком случае вспомогательный отчет будет искаться в
     * папке /public/Reports/Util (такой подход позволяет экономить
     * дефицитное место в строке description, длина которой не может
     * превышать 250 символов)
     */
    reportId?: string;
     /**
     * Настройка соответствия параметров основного и вспомогательного
     * отчетов:
     * ключ – наименование параметра основного отчета
     * значение – наименование параметра вспомогательного отчета
     */
    paramsMapping?: Record<string, string>;
}
Тип параметра основного отчета (Advanced > Properties > Input Control Type), для которого настроена опция autocomplete, может принимать одно из следующих значений:
Предполагается, что вспомогательный отчет способен возвращать данные следующего вида в формате 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 можно указать специальный тип превью.