Формирование отчетов 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> 
--- 
 |