Формирование отчетов HTML
запрос: /entek/api/report/history
Запрос предназначен для формирования отчетов в фромате html из шаблона. Запрос должен содержать обязательные параметры запроса:
-
start_time - начало интервала отчета
-
end_time - конец интервала отчета
-
templ - название файла шаблона с расширением html
-
utc - часовой пояс для отчета. Если параметр не уканаз, то отчет формирутеся при utc=0
Шаблоны необходимо разместить в корне проекта в папке /reports/templates/
Шаблон должен быть валидным xml файлом, т.е. все открывающие ноды должны быть закрыты. Генерация данных происходит в элементе таблицы, вне этого элемента доступно два параметра начало и конец интервала отчета, которые можно указать подставив в текст переменные {@timeStart} и {@timeEnd} соответственно.
<br>Report interval from {@timeStart} to {@timeEnd}</br>
|
Таблица должна содержать два элемента thead для заголовка таблицы и tbody для тела, в котором будут генерироваться данные, также есть обязательный блок scada с настройками таблицы. В ноде scada указываются параметры, которые будут запрашиваться в базе данных, а также тип отчета, шаг, с которым отображаются данные, количество знаков после запятой, количество строк и режим сортировки.
Атрибуты доступные для ноды scada:
-
type - тип отчета. Доступные значения: values - отчет из базы данных истории; events - отчет из базы данные событий, которая установлена по умолчанию
-
step - шаг запроса данных. Доступные значения: указывается число секунды или минут, а после числа указывается s/sec или m/min соответственно (только для типа отчета история).
-
decimal - количесвто знаков после запятой у значений, которые будут генерироваться (только для типа отчета история).
-
dataCount - количество выводимых записей при запросе без шага или колиство последних записей истории событий, в рабочем режиме (если параметр не задан, то ограничение 30 записей).
-
sort - сортировка записей по временной метке. asc - сортировка по возрастанию (по умолчанию); desc - сортировка по убыванию
-
lastData - запрос последних записей из базы данных событий (допустимые значение 1 - использовать / 0 - не использовать). Применяется вместе с атрибутом dataCount для того, чтобы указать количество последних записей. Является приоритетным атрибутом, при его использовании не учитывается передаваемый временной интервал и тип сортировки (только для типа отчета событий).
-
useColors - использование цвета фона и шрифта из настроек событий (допустимые значение 1 - использовать / 0 - не использовать) (только для типа отчета событий).
Внутри ноды scada перечисляются параметры в нодах value с обязательными атрибутами name - пользовательское наименование переменной, которое будет подставляться в теле таблицы; addr - код параметра для запросов к базе данных для запроса истории или код поля событий для запроса событий. Также при запросе истории для параметров опционально можно задать доступные алгоритмы для обработки данных (sum - сумма, average-sum - среднее значение), для них предусмотрен атрибут algorithm, в котором можно перечислить, разделяя строго только запятой, все нобходимые алгоритмы для каждого параметра. Для запроса событий можно задать группы событий в ноде groups, перечисляя их через символ ';', группы должны быть указаны в верхнем регистре. А также можно указать станции и контроллеры для поиска событий в ноде controllers, id контроллеров указываются числом в значении ноды, а станции в ее атрибуте stId.
Пример перечисления групп событий
<groups>DASERVERGROUP;STARTSTOPGROUP</group>
|
Пример перечисления контроллеров и станции
<controllers stId="0;1">0;1</controllers>
|
Пример ноды scada:
<scada type="values" step="1m" decimal="3">
<value name="V1P" addr="EnLogic.St0.T222.Grp0.Id91"></value>
<value name="V1Q" addr="EnLogic.St0.T222.Grp0.Id92" algorithm="sum,average-sum"></value>
<value name="V1I" addr="EnLogic.St0.T222.Grp0.Id93" algorithm="average-sum"></value>
</scada>
|
Допустимые коды полей событий:
имя параметра
|
описание
|
group_name
|
название группы событий
|
client_id
|
ip-адресс клиента
|
event_time
|
временная метка события
|
event_text
|
текст события
|
event_number
|
номер события
|
event_type
|
тип события
|
comment
|
комментарий
|
user
|
имя пользователя
|
station_id
|
id станции
|
group_id
|
id контроллера
|
passp_type
|
тип параметра
|
passp_id
|
id параметра
|
passp_time
|
временная метка значения
|
passp_val
|
значение параметра
|
alarm_priority
|
приоритет
|
alarm_ack
|
квитирование аларма
|
alarm_ack_user
|
пользователь, заквитировавший аларм
|
alarm_ack_time
|
время квитирования
|
alarm_end_time
|
время окончания аларма
|
alarm_set_val
|
значение аларма
|
Внутри ноды tbody в ноде tr с атрибутом gen="true" указываются параметры, которые будут генерироваться. Параметры указываются в фигурных скобках и перед пользовательским названием ставится символ @ (Пример: {@V1P}). Также достуны функция формирования метки интервала, для этого указывается переменная timestamp, а через точку указывается тип временной метки Date - для даты, Time - для времени, если ничего не указать то формат будет содержать дату и время, а для временной метки событий необходимо использовать поле event_time, которое перед этим необходимо указать в ноде value в секции scada. Функция genNum предназначена для подстановки номера строки таблицы.
А для вызова результата алгоритма в таблице надо указать его название из атрибута name и через точку указать название алгоритма (доступно только для статических строк без атрибута gen="true").
Пример ноды tbody:
<tbody>
<tr gen="true">
<td>{@timestamp.Date}</td>
<td>{@timestamp.Time}</td>
<td>{@V1P}</td>
<td>{@V1Q}</td>
<td>{@V1I}</td>
</tr>
</tbody>
|
Пример использования алгоритма в сроке таблицы:
<tr>
<td>Average</td>
<td></td>
<td></td>
<td>{@V1Q.average-sum}</td>
<td>{@V1I.average-sum}</td>
</tr>
|
Пример полного шаблона отчета истории:
<html>
<body>
<br>SCADA report</br>
<br>from {@timeStart} to {@timeEnd}</br>
<table id="table1" cols="23" border="1" cellspacing="0" cellpadding="2" width="100%%">
<scada type="values" step="1m" decimal="3">
<value name="V1P" addr="EnLogic.St0.T222.Grp0.Id91"></value>
<value name="V1Q" addr="EnLogic.St0.T222.Grp0.Id92" algorithm="sum,average-sum"></value>
<value name="V1I" addr="EnLogic.St0.T222.Grp0.Id93" algorithm="average-sum"></value>
</scada>
<thead>
<tr align="center">
<th>Num</th>
<th>Date</th>
<th>Time</th>
<th>Q, kVA</th>
<th>I, A</th>
</tr>
</thead>
<tbody>
<tr gen="true">
<td>{@genNum}</td>
<td>{@timestamp.Date}</td>
<td>{@timestamp.Time}</td>
<td>{@V1P}</td>
<td>{@V1Q}</td>
<td>{@V1I}</td>
</tr>
<tr>
<td>Total</td>
<td></td>
<td></td>
<td>{@V1Q.sum}</td>
<td></td>
</tr>
<tr>
<td>Average</td>
<td></td>
<td></td>
<td>{@V1Q.average-sum}</td>
<td>{@V1I.average-sum}</td>
</tr>
</tbody>
</table>
</body>
</html>
|
Пример полного шаблона отчета событий:
<html>
<body>
<br>SCADA report</br>
<br>from {@timeStart} to {@timeEnd}</br>
<table id="table1" cols="23" border="1" cellspacing="0" cellpadding="2" width="100%%">
<scada type="events" sort="desc" dataCount="100" lastData="1" useColors="1">
<groups>DASERVERGROUP;STARTSTOPGROUP</groups>
<controllers stId="0">0;1</controllers>
<value name="group_name" addr="group_name"></value>
<value name="client_id" addr="client_id"></value>
<value name="event_time" addr="event_time"></value>
<value name="event_text" addr="event_text"></value>
<value name="comment" addr="comment"></value>
<value name="station_id" addr="station_id"></value>
<value name="group_id" addr="group_id"></value>
<value name="passp_type" addr="passp_type"></value>
</scada>
<thead>
<tr align="center">
<th>Num</th>
<th>Date</th>
<th>Group</th>
<th>Client</th>
<th>Event</th>
<th>Comment</th>
<th>Station</th>
<th>controller</th>
<th>Passp type</th>
</tr>
</thead>
<tbody>
<tr gen="true">
<td>{@genNum}</td>
<td>{@event_time}</td>
<td>{@group_name}</td>
<td>{@client_id}</td>
<td>{@event_text}</td>
<td>{@comment}</td>
<td>{@station_id}</td>
<td>{@group_id}</td>
<td>{@passp_type}</td>
</tr>
</tbody>
</table>
</body>
</html>
---
|